循环从多重推算的mer对象中提取系数

时间:2011-07-08 20:21:55

标签: r r-zelig

我很难解决这个问题。我有一个列表results4,其中包含5个元素,所有这些元素都来自mer包中的zelig个对象。 mer个对象是五个估算数据集中每一个的ls.mixed次回归的结果。我正在尝试使用Rubin's Rules for Multiple Imputation合并结果。

我可以使用summary(results4[[1]])@coefs提取系数和标准误差,它返回一个16x3向量(16个变量,每个变量都有一个点估计,标准误差和t统计量)。

我试图循环这五组结果并自动化结合点估计和标准误差的过程,但遗憾的是我似乎在盯着它而没有出现任何解决方案。有什么建议吗?

生成mer对象的代码如下(变量名称已更改):

for (i in 1:5) {
  results4[i] <- zelig(DV ~ V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8 +
  V9 + V10 + V11 + V12 + V13 + V14 + V15 + tag(1 | L2),
  data = as.data.frame(w4[,,i]), model = "ls.mixed", REML = FALSE) 
}

1 个答案:

答案 0 :(得分:0)

我不会花时间编写多重插补规则(想要信用的人可以在我这里展示并建立在它上面),但我认为你应该能够做你想要的构建一个包含结果的16x3x5数组:

resultsList <- lapply(results,function(x) summary(x)@coefs)
library(abind)
resultsArr <- abind(resultsList,along=3)

然后在边距内适当地使用apply

也可能有基于plyr的解决方案。

你也可以通过直接定义阵列并随时填充它来降低成本:

sumresults <- array(dim=c(16,3,5))
for (...) {
   ...
   sumresults[,,i] <- summary(results4[[i]])@coefs
}