是否可以存储eRm模型的摘要?

时间:2016-08-04 15:46:20

标签: r

我正在使用eRm软件包来估计Rasch模型。 RM()函数返回一个Rasch模型,我可以使用summary()函数进行汇总。但是,当我尝试存储结果时,R会创建一个空对象。

library(eRm) 
my_data <- matrix(sample(0:1, 100, replace = TRUE), nrow = 10)

my_model <- RM(X = my_data)
summary(my_model)
my_summary <- summary(my_model)

为什么此操作在这种情况下不起作用,但在存储线性模型的摘要时有效?是否有另一种方法来存储eRm模型的摘要?

1 个答案:

答案 0 :(得分:3)

正如@Imo推测的那样,看起来summary.eRm只是打印到控制台,而不是返回一个对象。您可以通过运行summary.eRm来检查getAnywhere(summary.eRm)的代码。 summary是&#34;泛型&#34;功能,意味着它的作用取决于什么&#34;方法&#34;调用函数时调用。

对于lm模型对象,当您键入summary(my_model)时,将调度summary.lm函数。但是,当您键入summary(my_model)并且my_modeleRm对象时,会调度summary.eRm方法。 summary.lm返回一个对象,但summary.eRm只是打印到控制台。运行methods(summary)以查看为不同类型的对象分派的各种汇总函数。

解决方法是使用模型对象本身创建自己的摘要对象(或创建此类对象的函数)。您可以使用str(my_model)检查模型对象的组件。您还可以查看summary.eRm的代码,以查看它打印到控制台的每个组件的位置。

这是一个简单的示例,从summary.eRm提升代码以创建汇总函数:

RMsmry = function(obj) {

  cols = c("Estimate", "Std. Error", "lower CI", "upper CI")

  # Create difficulty summary
  ci = confint(obj, "eta")
  tbl1 = as.data.frame(cbind(round(obj$etapar, 3), 
                             round(obj$se.eta, 3), round(ci, 3)))
  names(tbl1) = cols

  # Create easiness summary
  ci <- confint(obj, "beta")
  tbl2 = as.data.frame(cbind(round(obj$betapar, 3), 
                             round(obj$se.beta, 3), round(ci, 3)))
  names(tbl2) = cols

  return(list(Difficulty=tbl1, Easiness=tbl2))
}

my_summary = RMsmry(my_model)
my_summary
$Difficulty
    Estimate Std. Error lower CI upper CI
I2    -1.191      0.658   -2.480    0.098
I3    -1.191      0.658   -2.480    0.098
I4     0.078      0.627   -1.150    1.306
I5    -0.750      0.623   -1.971    0.471
I6     0.078      0.627   -1.150    1.306
I7     1.079      0.748   -0.386    2.544
I8    -0.339      0.614   -1.543    0.865
I9     0.078      0.627   -1.150    1.306
I10    1.079      0.748   -0.386    2.544

$Easiness
         Estimate Std. Error lower CI upper CI
beta I1    -1.079      0.748   -2.544    0.386
beta I2     1.191      0.658   -0.098    2.480
beta I3     1.191      0.658   -0.098    2.480
beta I4    -0.078      0.627   -1.306    1.150
beta I5     0.750      0.623   -0.471    1.971
beta I6    -0.078      0.627   -1.306    1.150
beta I7    -1.079      0.748   -2.544    0.386
beta I8     0.339      0.614   -0.865    1.543
beta I9    -0.078      0.627   -1.306    1.150
beta I10   -1.079      0.748   -2.544    0.386