在 R 版本 4 中,Anova 无法将线性混合回归基础模型与具有不同变量的其他模型进行比较
In R version 4, Anova fails to compare linear mixed regression base model to other models with different variables
我使用的是 R 版本 3.6.3,最近更新到版本 4.0.3。我已经给出了我正在处理的模型的示例。
Model0 <- lmer(accuracy~Temperature+Relative_Humidity+scaledweek+(1 | pxids),data=ptrails.df)
Model1 <- lmer(accuracy~CO+Temperature+Relative_Humidity+scaledweek+(1 | pxids),data=ptrails.df)
Model2 <- lmer(accuracy~pm10+Temperature+Relative_Humidity+scaledweek+(1 | pxids),data=ptrails.df)
Model3 <- lmer(accuracy~NO+Temperature+Relative_Humidity+scaledweek+(1 | pxids),data=ptrails.df)
anova(Model0,Model1,Model2, Model3)
想法是让每个模型与基本模型 (Model0
) 进行比较,以确定哪个变量具有显着影响。
输出示例:
我没有得到 Model2 和 Model3 的 p 值。这在以前的版本中不是这样的。我尝试将 model0 与 model1 进行比较,然后将 model0 与 model2 等进行比较。这样的比较给了我 p 值但是,我有非常大的数据,我需要一起做。
这有点猜测,因为您没有提供可重现的示例,但这可能与版本 1.1-24 之前和之后的 lme4
(不是 R)版本有关: NEWS file for lme4 报告说
anova() now returns a p-value of NA if the df difference between two models is 0 (implying they are equivalent models)
“df difference”表示估计的参数个数的差异。有两种方法可以使不同的模型具有相同数量的 df:
- 模型实际上是等效的(尽管它们的参数可能指定不同,例如,如果
f
和 g
是因子,那么包括 f*g
和 f:g
给出不同的参数化但等效模型拟合。在这种情况下,偏差的变化(“Chisq”)也为零。这似乎是模型 0 与 2 在您的情况下发生的情况(尽管令我困惑的是 npar
是不同的:如果没有可重现的例子很难理解。也许你添加了一个完全相关的预测变量,或者你的模型拟合是单一的?)在这种情况下,可以认为 p 值为 1,但 NA
也是合理的(看到这个 discussion)
- 模型是非嵌套,例如一个模型包含数字协变量
A
,第二个模型包含数字协变量B
。这不是包开发人员发生的情况......在这种情况下似然比检验是不合适的,所以return p-完全没有价值。
如果你想比较非嵌套模型,你要么需要像 Vuong 测试这样的东西,要么只比较 AIC 值。 (我认为 bbmle::AICtab()
提供了一种更有用的比较格式......)
我使用的是 R 版本 3.6.3,最近更新到版本 4.0.3。我已经给出了我正在处理的模型的示例。
Model0 <- lmer(accuracy~Temperature+Relative_Humidity+scaledweek+(1 | pxids),data=ptrails.df)
Model1 <- lmer(accuracy~CO+Temperature+Relative_Humidity+scaledweek+(1 | pxids),data=ptrails.df)
Model2 <- lmer(accuracy~pm10+Temperature+Relative_Humidity+scaledweek+(1 | pxids),data=ptrails.df)
Model3 <- lmer(accuracy~NO+Temperature+Relative_Humidity+scaledweek+(1 | pxids),data=ptrails.df)
anova(Model0,Model1,Model2, Model3)
想法是让每个模型与基本模型 (Model0
) 进行比较,以确定哪个变量具有显着影响。
输出示例:
我没有得到 Model2 和 Model3 的 p 值。这在以前的版本中不是这样的。我尝试将 model0 与 model1 进行比较,然后将 model0 与 model2 等进行比较。这样的比较给了我 p 值但是,我有非常大的数据,我需要一起做。
这有点猜测,因为您没有提供可重现的示例,但这可能与版本 1.1-24 之前和之后的 lme4
(不是 R)版本有关: NEWS file for lme4 报告说
anova() now returns a p-value of NA if the df difference between two models is 0 (implying they are equivalent models)
“df difference”表示估计的参数个数的差异。有两种方法可以使不同的模型具有相同数量的 df:
- 模型实际上是等效的(尽管它们的参数可能指定不同,例如,如果
f
和g
是因子,那么包括f*g
和f:g
给出不同的参数化但等效模型拟合。在这种情况下,偏差的变化(“Chisq”)也为零。这似乎是模型 0 与 2 在您的情况下发生的情况(尽管令我困惑的是npar
是不同的:如果没有可重现的例子很难理解。也许你添加了一个完全相关的预测变量,或者你的模型拟合是单一的?)在这种情况下,可以认为 p 值为 1,但NA
也是合理的(看到这个 discussion) - 模型是非嵌套,例如一个模型包含数字协变量
A
,第二个模型包含数字协变量B
。这不是包开发人员发生的情况......在这种情况下似然比检验是不合适的,所以return p-完全没有价值。
如果你想比较非嵌套模型,你要么需要像 Vuong 测试这样的东西,要么只比较 AIC 值。 (我认为 bbmle::AICtab()
提供了一种更有用的比较格式......)