4

我有一个mer用调用 to 创建的对象lmer()

我可以得到随机效应,ranef()但我也想为每个随机效应获得相应数量的观察 - 有没有简单的方法可以做到这一点?

附加信息:

我可能没有在上面说得很清楚。例如,如果我有一个简单的 2 级模型,其中患者聚集在医院内并随机截取医院,我想提取每家医院的随机效应以及每家医院ranef() 的患者数量。目前,我使用

ranef(fullmodel)[[1]]

这给了我类似的东西:

     (Intercept)
ADE -0.108195883
BEJ -0.005761677
CIS  0.124129426
CMH  0.270879048
CSI  0.285344837
CUL  0.189308979

我想得到类似的东西:

     (Intercept)  n
ADE -0.108195883  77
BEJ -0.005761677  171
CIS  0.124129426  201
CMH  0.270879048  39
CSI  0.285344837  171
CUL  0.189308979  131

为此,我一直在使用

fullmodel <- glmer(.....+(1|hospital), data=dt1)

freqs <- as.data.frame(table(dt1$hospital))
freqs <- freqs[foo$Freq>0,]

然后cbind将结果从ranef(fullmodel)[[1]]

然而,这似乎不复杂且容易出错。

4

2 回答 2

6

ranef返回对应于分组因子的矩阵列表,其中每个矩阵中的行对应于随机效应的观察值(因子水平),列对应于随机效应变量(截距、斜率等)。因此,获得观察次数的最简单方法是

sapply(ranef(model),nrow)
于 2012-11-21T13:04:57.830 回答
3

此命令返回随机效应以及随机因子水平的频率:

lapply(names(ranef(model)),
       function(x) cbind(ranef(model)[[x]], table(model.frame(model)[[x]])))
于 2012-11-22T13:10:03.177 回答