使用glmer提取随机效应分量的标准偏差

use*_*889 3 r lme4

我正在使用glmer,我希望提取随机效应(截距和斜率)的方差分量的标准偏差.

我尝试过使用:

VarCorr(model)
Run Code Online (Sandbox Code Playgroud)

它返回两个标准偏差值(加上相关性),但我只想提取截距和斜率SD值.

我试过用:

VarrCorr(model)[1]
Run Code Online (Sandbox Code Playgroud)

提取随机拦截SD,让我知道:

attr(,"stddev")
(Intercept)        year 
      0.075       0.011 
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将这些作为单独的元素提取出来.

Mas*_*awa 7

有两种方法可以做到这一点.

## make up a model
library(lme4)
(gm <- glmer(incidence ~ period + (size | herd),
              family = poisson, data = cbpp))
Run Code Online (Sandbox Code Playgroud)

方法1

当前版本lme4允许您将VarCorr对象强制转换为数据框:

as.data.frame(VarCorr(gm))
Run Code Online (Sandbox Code Playgroud)

然后,您可以选择行1:2和列5来提取随机截距和斜率的标准偏差.

方法2

如果要以旧式方式提取值,可以使用attributes:

attributes(VarCorr(gm)$herd)$stddev
(Intercept)        size 
 1.18970662  0.08826278 
Run Code Online (Sandbox Code Playgroud)

如果你想摆脱名称(即(intercept),, size),那么你可以使用as.numericunname.