library(Matrix)
library(lme4)
data <- lme4::sleepstudy
model1 <- lm(Reaction ~ Days, data = data)
model2 <- lmer(Reaction ~ 1+Days+(1+Days|Subject), data = data)
summary(model1)
summary(model2)
anova(model1, model2)
所以我需要将R更新到4.0.2,现在使用anova
函数比较混合效果模型会返回错误。当我分配模型时,似乎出现了错误,因为在全局环境中,它说“带空指针的对象”。似乎仅使用lmer
而不是lm
出现错误。谁能告诉我该如何解决?我至少需要R版本4.0.0(我的教授写的脚本需要此版本)。
答案 0 :(得分:3)
公认的解决方案(显式调用 lme4::anovaLmer()
)有效,但这里的实际问题是,如果您想运行 anova()
比较 a(n) [g]lm
模型和 a(n) [g]lmer
模型,您需要将 [g]lmer 模型放在参数列表的首位,<因为...无聊的技术细节:S3 方法调度等等...> . (这应该记录在案,我不能说。)对于您的示例,
anova(model2,model1)
工作正常!
“带有空指针的对象”错误是一个红鲱鱼:无关,神秘,可能与 RStudio 相关,另见 this question 和 this question(都没有回答......)
答案 1 :(得分:1)
您可以直接从anova
包中调用相应的lme4
方法。
lme4:::anovaLmer(model1, model2)
# refitting model(s) with ML (instead of REML)
# Data: data
# Models:
# model1: Reaction ~ Days
# model2: Reaction ~ 1 + Days + (1 + Days | Subject)
# npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
# model1 3 1906.3 1915.9 -950.15 1900.3
# model2 6 1763.9 1783.1 -875.97 1751.9 148.35 3 < 2.2e-16 ***
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
但是,这在例如要么R 3.6.3
!