使用 anova() 的 lme4 包中的错误
bug in lme4 package with anova()
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
函数的混合效果模型 returns 一个错误。当我分配模型时似乎出现了错误,因为在全局环境中它说“object with null pointer”。该错误似乎只出现在使用 lmer
而不是使用 lm
时。谁能告诉我如何解决这个问题?我至少需要 R 版本 4.0.0(我的教授编写的脚本需要这个版本)。
您可以直接从lme4
包中调用相应的anova
方法。
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
要么!
接受的解决方案(显式调用 lme4::anovaLmer()
)有效,但这里的实际问题是如果你想 运行 anova()
比较 a(n) [g]lm
模型和 (n) [g]lmer
模型,你需要将 [g]lmer 模型放在参数列表的第一位 ,<因为......无聊的技术细节:S3方法调度等等等等......>。 (这应该被记录在案,这不是我能说的。)对于你的例子,
anova(model2,model1)
工作正常!
“带空指针的对象”错误是一个转移注意力的问题:无关、神秘,可能与 RStudio 相关,另请参阅 this question and this question(均未回答...)
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
函数的混合效果模型 returns 一个错误。当我分配模型时似乎出现了错误,因为在全局环境中它说“object with null pointer”。该错误似乎只出现在使用 lmer
而不是使用 lm
时。谁能告诉我如何解决这个问题?我至少需要 R 版本 4.0.0(我的教授编写的脚本需要这个版本)。
您可以直接从lme4
包中调用相应的anova
方法。
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
要么!
接受的解决方案(显式调用 lme4::anovaLmer()
)有效,但这里的实际问题是如果你想 运行 anova()
比较 a(n) [g]lm
模型和 (n) [g]lmer
模型,你需要将 [g]lmer 模型放在参数列表的第一位 ,<因为......无聊的技术细节:S3方法调度等等等等......>。 (这应该被记录在案,这不是我能说的。)对于你的例子,
anova(model2,model1)
工作正常!
“带空指针的对象”错误是一个转移注意力的问题:无关、神秘,可能与 RStudio 相关,另请参阅 this question and this question(均未回答...)