从mer对象中提取观察数和随机效应模式

时间:2012-11-21 12:59:46

标签: r random-effects lmer

我创建了一个mer对象,调用了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]]

的结果发送给{{1}}

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

2 个答案:

答案 0 :(得分:4)

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

sapply(ranef(model),nrow)

答案 1 :(得分:2)

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

lapply(names(ranef(model)),
       function(x) cbind(ranef(model)[[x]], table(model.frame(model)[[x]])))