我创建了一个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]]
然而,这似乎并不复杂,容易出错。
答案 0 :(得分:4)
ranef
返回与分组因子对应的矩阵列表,其中每个矩阵中的行对应于随机效应的观察值(因子级别),列对应于随机效应变量(截距,斜率等) 。因此,获得观测数量的最简单方法是
sapply(ranef(model),nrow)
答案 1 :(得分:2)
此命令返回随机效果以及随机因子水平的频率:
lapply(names(ranef(model)),
function(x) cbind(ranef(model)[[x]], table(model.frame(model)[[x]])))