【问题标题】:Extracting the number of observations and the modes of random effects from a mer object从 mer 对象中提取观察的数量和随机效应的模式
【发布时间】:2012-11-09 17:43:17
【问题描述】:

我创建了一个 mer 对象,并调用了 lmer()

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

其他信息:

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

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]]的结果@

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

【问题讨论】:

    标签: r random-effects lmer


    【解决方案1】:

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

    sapply(ranef(model),nrow)
    

    【讨论】:

    • 谢谢本。如果我没有在 OP 中说明清楚,我很抱歉。我已经更新了问题。
    【解决方案2】:

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

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

    【讨论】:

    • 我并不热衷于使用@frame;你愿意改用model.frame(model)吗...?
    • @BenBolker 同意,我修改了答案。
    猜你喜欢
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 2014-12-11
    • 2021-12-13
    • 1970-01-01
    • 2012-07-09
    相关资源
    最近更新 更多