我需要从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
我试图通过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
的结果。
非常感谢!
答案 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))