我在R中运行逻辑回归并进行“反向消除”以获得我的最终模型:
FulMod2 <- glm(surv~as.factor(tdate)+as.factor(tdate)+as.factor(sline)+as.factor(pgf)
+as.factor(weight5)+as.factor(backfat5)+as.factor(srect2)
+as.factor(bcs)+as.factor(loco3)+as.factor(fear3)
+as.factor(teats)+as.factor(preudder)+as.factor(postudder)
+as.factor(colos)+as.factor(tb5) +as.factor(respon3)
+as.factor(feed5)+as.factor(bwt5)+as.factor(sex)
+as.factor(fos2)+as.factor(gest3)+as.factor(int3),
family=binomial(link="logit"),data=sof)
尝试运行后向消除脚本时:
step(FulMod2,direction="backward",trace=FALSE)
我收到此错误消息:
Error in step(FulMod2, direction = "backward", trace = FALSE) :
number of rows in use has changed: remove missing values?
这是我使用向后消除功能运行的第二个模型。当我进行反向消除以获得我的最终模型时,第一个模型很好。
非常感谢任何帮助!
巴兹
答案 0 :(得分:6)
为了在模型上成功运行step()
以进行向后选择,您应该删除sof
中包含您正在测试的变量中缺少数据的案例。
myForm <- as.formula(surv~
as.factor(tdate)+as.factor(tdate)+as.factor(sline)+as.factor(pgf)
+as.factor(weight5)+as.factor(backfat5)+as.factor(srect2)
+as.factor(bcs)+as.factor(loco3)+as.factor(fear3)
+as.factor(teats)+as.factor(preudder)+as.factor(postudder)
+as.factor(colos)+as.factor(tb5) +as.factor(respon3)
+as.factor(feed5)+as.factor(bwt5)+as.factor(sex)
+as.factor(fos2)+as.factor(gest3)+as.factor(int3))
sofNoMis <- sof[which(complete.cases(sof[,all.vars(myForm)])),]
FulMod2 <- glm(myForm,family=binomial(link="logit"),data=sofNoMis)
step(FulMod2,direction="backward",trace=FALSE)
在您的评论中,您提到9个案例中有1个缺少数据。但是,我建议使用上面的代码再次检查,以防某些缺失对应FulMod2
中未包含的变量。如果您仍有许多不完整的案例,如果您可以删除一些缺失率较高的变量,则可能需要决定先验。