我创建了两个广义线性模型,如下所示:
glm1 <-glm(Y ~ X1 + X2 + X3, family=binomial(link=logit))
glm2 <-glm(Y ~ X1 + X2, family=binomial(link=logit))
然后我使用anova
功能:
anova(glm2,glm1)
但收到错误消息:
“anova.glmlist(c(list(object),dotargs) 中的错误,色散 = 色散,:
模型并非都适合相同大小的数据集”
这是什么意思?我该如何解决这个问题?我有attach
在我的代码开始时编辑了数据集,因此两个模型都使用相同的数据集。
该错误的主要原因是一个或多个预测变量中存在缺失值。在最新版本的 R 中,默认操作是忽略所有缺少任何值的行(之前的默认操作是产生错误)。因此,例如,如果数据框有 100 行,并且 X3 中有一个缺失值,那么您的模型 glm1 将适合 99 行数据(删除 X3 缺失的行),但 glm2 对象将适合完整数据100行数据(由于不使用X3,所以不需要删除任何行)。
那么那么anova
函数会给你一个错误,因为这两个模型适合不同的数据集(以及如何计算自由度等)。
一种解决方案是创建一个新的数据框,其中仅包含将在至少一个模型中使用的列,并删除具有任何缺失值的所有行(na.omit
or na.exclude
函数将使这变得容易),然后将两个模型拟合到没有任何缺失值的同一数据框中。
其他选择是寻找多重插补工具或处理缺失数据的其他方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)