web-dev-qa-db-ja.com

lme4を使用して、変量効果のないモデルと変量効果のあるモデルを比較するにはどうすればよいですか?

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)
19
It Figures

最新(> 1.0)バージョンのlme4lmerフィットと対応するlmモデルを直接比較できますが、butを使用する必要があります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

私はこの形式(生のAIC値よりもデルタAIC)での出力を好みます:

bbmle::AICtab(fm1,fm0)
##     dAIC  df
## fm1   0.0 4 
## fm0 104.2 3 

テストするために、ランダム効果なしでデータをシミュレートしましょう(被験者間標準偏差が実際にゼロと推定された例を取得するために、いくつかの乱数シードを試す必要がありました):

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
29
Ben Bolker