【问题标题】:anova.mer Mod(mod_null, mod_eins) : models were not all fitted to the same size of datasetanova.mer Mod(mod_null, mod_eins) :模型并非都适合相同大小的数据集
【发布时间】:2026-01-10 16:55:01
【问题描述】:

我看到有些人也有这个问题,但我真的不明白给出的答案。

我从“仅拦截”模型开始做了一些线性混合模型。随后我想添加更多变量。当我尝试比较模型时,R 输出是“模型并非都适合相同大小的数据集”。我该怎么做才能在同一个数据集中拟合数据?

R 语法是:

mod_zero <- lmer(quality ~ 1 + (1|subject_id))
summary(mod_zero)
mod_one <- lmer(quality ~ ps + an + int + ch + boredom + (1|subject_id),dat)
summary(mod_one)
anova(mod_zero, mod_one)

添加 na.rm=T 没有帮助。有人有想法吗?

【问题讨论】:

  • 尝试格式化您的问题(代码有格式化选项)。添加标签 R 也会有很大帮助。还尝试链接到对您没有帮助的问题,并解释您没有得到的部分。最后尝试创建一个可重现的示例:*.com/questions/5963269/…

标签: r lme4 anova


【解决方案1】:

该错误可能是由于第二个模型中的一个或多个预测变量中存在缺失数据造成的。这些观察结果从第二个模型中删除(从而创建了一个不同的数据集,它是原始数据的子集),您无法有意义地比较适合不同数据集的两个模型。要比较这两个模型,您必须将第一个模型拟合到数据集,而不会丢失 ps、an、int、ch、boredom 上的数据。试试:

dat2 <- dat[which(complete.cases(dat[,c('ps', 'an', 'int', 'ch', 'boredom')])),]

mod_zero <- lmer(quality ~ 1 + (1|subject_id), dat2)
mod_one <- lmer(quality ~ ps + an + int + ch + boredom + (1|subject_id),dat2) 

anova(mod_zero, mod_one) 

这解决了错误,但您应该问自己为什么缺少数据。根据缺失数据机制,删除缺失数据可能会使您的结果产生偏差。如果您有很多与结果变量系统相关的缺失数据,这将使您的模型估计产生偏差,您需要寻找减少这种偏差的方法(例如多重插补)。 Graham 写了很多书籍和文章来解释不同的缺失数据机制和解决方案。比较 datdat2 上 mod_zero 的输出可能会初步表明可能存在偏差(尽管类似的输出并不能确保不存在偏差)。

【讨论】:

  • 非常感谢!这真的很有帮助!我现在知道如何为其他模型比较构建 R 语法。 :-) 你让我今天一整天都感觉很好! :-) 关于缺失数据:对于 ps、an、int、ch 和 Boredem,每个都有 1071 个条目。在 ps 和 an 处有 9 个缺失值,对于 ch 6 值,对于 int 没有缺失值。你当然是对的:缺失值对结果有影响。这里缺失值低于 1%。如果没有数据,那么人们就没有对这个问题做出回应。
最近更新 更多