我看到有些人也有这个问题,但我真的不明白给定的答案。
我做了一些线性混合模型,首先是"拦截"模型。随后我想添加更多变量。当我尝试比较模型时,R out put是"模型并非都适合相同大小的数据集"。如何在同一数据集中填充数据?
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没有帮助。有没有人有想法?
答案 0 :(得分:0)
错误可能是由第二个模型中的一个或多个预测变量中存在缺失数据引起的。这些观察结果将从第二个模型中删除(从而创建一个不同的数据集,这是原始数据的一个子集),您无法有意义地比较两个适合不同数据集的模型。要比较两个模型,您必须使第一个模型适合数据集,而不会丢失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)
这解决了错误,但您应该问自己为什么会丢失数据。删除丢失的数据可能会导致结果偏差,具体取决于缺少的数据机如果您有大量与结果变量系统相关的缺失数据,则会使您的模型估计偏差,并且您需要研究减少此偏差的方法(例如,多次插补)。格雷厄姆撰写了大量书籍和文章,解释了不同的缺失数据机制和解决方案。比较dat
和dat2
上mod_zero的输出可能会首先显示可能的偏差(尽管类似的输出并不能确保没有偏差)。