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

baz*_*baz 3 regression r

我在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)
Run Code Online (Sandbox Code Playgroud)

尝试运行向后消除脚本时:

step(FulMod2,direction="backward",trace=FALSE)
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

Error in step(FulMod2, direction = "backward", trace = FALSE) : 
  number of rows in use has changed: remove missing values?
Run Code Online (Sandbox Code Playgroud)

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

任何帮助将非常感谢!

巴兹

Ben*_*nes 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)
Run Code Online (Sandbox Code Playgroud)

在您的评论中,您提到9个案例中有1个缺少数据.但是,我建议使用上面的代码再次检查,以防某些缺失对应于未包含的变量FulMod2.如果您仍然有很多不完整的情况下,你可能要决定一个先验的,如果你能消除一些高missingness的变量.