使用glm模型预测时出现newdata行数不匹配警告的问题
解决glm预测时的'newdata'行数不匹配警告
问题出在你构建逻辑回归模型的公式写法上——你在公式里用了PimaDiabetes$Outcome、PimaDiabetes$Pregnancies这种带数据集前缀的变量引用,这会直接让模型绑定原数据集的750行数据,完全绕过了data = PimaDiabetes参数的作用。哪怕你的ToPredict列名完全匹配,predict函数也会忽略它,转而使用模型绑定的原数据集变量,因此出现行数不匹配的警告。
修正步骤:
- 修改模型构建代码:去掉所有变量名前的
PimaDiabetes$前缀,让公式从data参数指定的数据集中读取变量。同时逻辑回归必须指定family=binomial(你之前没加,这会导致模型默认做线性回归,结果不符合概率预期):
chosen_glm <- glm(Outcome ~ Pregnancies + Glucose + SkinThickness + BMI + DiabetesPedigree, data = PimaDiabetes, family = binomial)
- 重新执行预测:用修正后的模型运行预测命令:
predict(chosen_glm, ToPredict, type="response")
这样模型会记住变量名而非绑定原数据集的具体数据,predict时就能正确匹配ToPredict中的列名,警告也会消失。
内容的提问来源于stack exchange,提问作者Abubakar Popoola
相关产品推荐
相关产品推荐

