使用R在逻辑回归中反向消除

时间:2012-04-03 07:27:37

标签: r regression

我在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?

这是我使用向后消除功能运行的第二个模型。当我进行反向消除以获得我的最终模型时,第一个模型很好。

非常感谢任何帮助!

巴兹

1 个答案:

答案 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中未包含的变量。如果您仍有许多不完整的案例,如果您可以删除一些缺失率较高的变量,则可能需要决定先验