来自lmer输出的方差分量的标准误差

时间:2015-07-29 08:11:55

标签: r lme4

我需要从standard error的输出中提取lmer方差分量。

library(lme4)
model <- lmer(Reaction ~ Days + (1|Subject), sleepstudy)

以下产生方差分量估计值:

s2 <- VarCorr(model)$Subject[1]

NOT 方差的标准误差。我想要标准错误。我怎么能拥有它?

编辑:

也许我无法让你明白我的意思&#34;方差组件的标准错误&#34;。所以我正在编辑我的帖子。

在道格拉斯·C·蒙哥马利(Douglas C. Montgomery)在本章末尾的第12章“随机因素的实验”一书中,实例12-2由SAS完成。Design and Analysis of Experiments。在例12-2中,该模型是一个双因子因子随机效应模型。输出见表12-17

enter image description here

我试图通过lmer将模型放入R中。

library(lme4)
fit <- lmer(y~(1|operator)+(1|part),data=dat)

用于提取Estimate的R代码,在表12-17中注释为4:

est_ope=VarCorr(fit)$operator[1]
est_part = VarCorr(fit)$part[1]
sig = summary(fit)$sigma
est_res = sig^2

现在我想从lmer输出中提取表12-17中注释为5的Std Errors的结果。

非常感谢!

3 个答案:

答案 0 :(得分:6)

我认为您正在寻找方差估计的Wald标准误差。请注意,这些(如Doug Bates经常指出的)Wald标准误差通常是非常差估计方差的不确定性,因为可能性曲线通常远非方差尺度的二次曲线。我假设你知道你在做什么,并且对这些数字有很好的用处......

library("lme4")
model <- lmer(Reaction ~ Days + (1|Subject), sleepstudy, REML=FALSE)

(目前,对于REML估计来说,这样做有点困难......)

根据标准偏差和相关性而不是Cholesky因子来提取偏差函数(请注意这是一个内部函数,因此无法保证它将来会以相同的方式继续工作......)< / p>

 dd.ML <- lme4:::devfun2(model,useSc=TRUE,signames=FALSE)

将参数提取为原始比例的标准偏差:

 vv <- as.data.frame(VarCorr(model)) ## need ML estimates!
 pars <- vv[,"sdcor"]
 ## will need to be careful about order if using this for
 ## a random-slopes model ...

现在计算二阶导数(Hessian)矩阵:

library("numDeriv")
hh1 <- hessian(dd.ML,pars)
vv2 <- 2*solve(hh1)  ## 2* converts from log-likelihood to deviance scale
sqrt(diag(vv2))  ## get standard errors

这些是标准偏差的标准误差:将它们加倍以获得方差的标准误差(当您变换值时,其标准误差根据变换的导数进行缩放)。

我认为应该这样做,但你可能需要仔细检查......

答案 1 :(得分:3)

我不太确定“方差分量的标准误差”是什么意思。我最好的猜测(基于你的代码)是你想要随机效果的标准误差。你可以使用包arm来获得这个:

library(arm)
se.ranef(model)
#$Subject
#    (Intercept)
#308    9.475668
#309    9.475668
#310    9.475668
#330    9.475668
#331    9.475668
#332    9.475668
#333    9.475668
#334    9.475668
#335    9.475668
#337    9.475668
#349    9.475668
#350    9.475668
#351    9.475668
#352    9.475668
#369    9.475668
#370    9.475668
#371    9.475668
#372    9.475668

这实际上是随机效应的条件方差 - 协方差矩阵的平方根:

sqrt(attr(ranef(model, condVar = TRUE)$Subject, "postVar"))

答案 2 :(得分:0)

mn2=lmer(pun~ pre + (pre|pro), REML = TRUE, data = pro)
summary(mn2)
coe2=coef(mn2)
coe2

# Matriz de varianza-covarianza (covarianza)
as.data.frame(VarCorr(mn2))

# Extraer coeficientes fijos
fixef(mn2)

# Extraer desvios de a - alfa y b - beta
re=as.data.frame(ranef(mn2))