首先要说明的是,这实际上是一个不太简单的理论问题:在r-sig-mixed-models上有一个相当长的线程,其中涉及了一些技术细节;你应该看一下,尽管可能会有点吓人。基本问题在于,每个组的估计系数值是固定效应参数和该组的BLUP/条件模式之和,它们是不同类别的对象(一个是参数,一个是随机变量的条件均值),这就产生了一些技术难题。
其次,(不幸的是)我不知道在lme
中有什么简单的方法来解决这个问题,所以我的答案使用了lmer
(从lme4
包中获得)。
如果你愿意做最简单的事情,并忽略固定效应参数和BLUP之间(可能存在的)不良协方差,你可以使用下面的代码。
两种选择:(1)使用贝叶斯分层方法(例如
MCMCglmm
包)拟合模型,并计算每个级别的后验预测标准差;(2)使用参数自助法计算BLUPs/条件模式,然后取自助分布的标准差。请记住,如往常一样,此建议不保证正确性。
library(lme4)
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
cc <- coef(fm1)$Subject
fixed.vars <- diag(vcov(fm1))
r1 <- ranef(fm1,condVar=TRUE)
cmode.vars <- t(apply(cv <- attr(r1[[1]],"postVar"),3,diag))
seVals <- sqrt(sweep(cmode.vars,2,fixed.vars,"+"))
res <- cbind(cc,seVals)
res2 <- setNames(res[,c(1,3,2,4)],
c("int","int_se","slope","slope_se"))
glmer
吗? - Daniel