我可以使用nlme包中的gls()来构建没有随机效果的mod1。 然后我可以将使用AIC的mod1与使用lme()构建的mod2进行比较,其中包含随机效果。
mod1 = gls(response ~ fixed1 + fixed2, method="REML", data)
mod2 = lme(response ~ fixed1 + fixed2, random = ~1 | random1, method="REML",data)
AIC(mod1,mod2)
对于lme4包有没有类似于gls()的东西,它允许我构建没有随机效果的mod3,并将它与使用lmer()构建的mod4进行比较,其中包含随机效果?
mod3 = ???(response ~ fixed1 + fixed2, REML=T, data)
mod4 = lmer(response ~ fixed1 + fixed2 + (1|random1), REML=T, data)
AIC(mod3,mod4)
答案 0 :(得分:28)
使用现代(> 1.0)版本的lme4
,您可以直接比较lmer
适合与相应的lm
模型,但使用ML ---很难为没有随机效应的模型提出“REML标准”的合理模拟(因为它涉及将所有固定效应设置为零的数据的线性变换... )
您应该知道,有和没有方差分量的模型之间存在信息理论比较的理论问题:有关详细信息,请参阅GLMM FAQ。
library(lme4)
fm1 <- lmer(Reaction~Days+(1|Subject),sleepstudy, REML=FALSE)
fm0 <- lm(Reaction~Days,sleepstudy)
AIC(fm1,fm0)
## df AIC
## fm1 4 1802.079
## fm0 3 1906.293
我更喜欢这种格式的输出(delta-AIC而不是原始AIC值):
bbmle::AICtab(fm1,fm0)
## dAIC df
## fm1 0.0 4
## fm0 104.2 3
为了测试,让我们模拟没有随机效应的数据(我必须尝试几个随机数种子才能得到一个例子,其中主题间std dev实际上估计为零):
rr <- simulate(~Days+(1|Subject),
newparams=list(theta=0,beta=fixef(fm1),
sigma=sigma(fm1)),
newdata=sleepstudy,
family="gaussian",
seed=103)[[1]]
ss <- transform(sleepstudy,Reaction=rr)
fm1Z <- update(fm1,data=ss)
VarCorr(fm1Z)
## Groups Name Std.Dev.
## Subject (Intercept) 0.000
## Residual 29.241
fm0Z <- update(fm0,data=ss)
all.equal(c(logLik(fm0Z)),c(logLik(fm1Z))) ## TRUE