Ответ 1
С современными ( > 1.0) версиями lme4
вы можете сделать прямое сравнение между lmer
fits и соответствующей моделью lm
, , но вам нужно использовать ML --- it трудно найти разумный аналог "критерия REML" для модели без случайных эффектов (потому что это будет связано с линейным преобразованием данных, которые устанавливают все фиксированные эффекты в ноль...)
Вы должны знать, что существуют теоретические проблемы с теоретико-информационными сопоставлениями моделей с компонентами дисперсии и без них: см. http://glmm.wikidot.com/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 был оценен как нуль):
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