2012-04-03 27 views
3

我正在运行中的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) 

当试图运行淘汰落后脚本:

step(FulMod2,direction="backward",trace=FALSE) 

我得到这个错误信息:

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

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

任何帮助将非常感谢!

巴兹

+4

从'step':** **警告模型拟合必须适用的机型相同的数据集。如果缺少值并且使用了na.action = na.omit,那么这可能是一个问题。我们建议您先删除缺失的值。你可以看''complete.cases'来识别'sof'中的完整和不完整的案例。 – BenBarnes 2012-04-03 07:33:29

+0

@BenBarnes,谢谢你的帮助。我有9000条记录,在申请“complete.cases”之后,现在已经下降到8000条。我只是在想,如果这样做太多了,就不会失去?无论如何,再次感谢! – baz 2012-04-03 07:54:00

+1

另一方面,如果您的预测变量与'sof'中的其余列相对应,那么您可以使用'?'运算符来为''formula'指定所有未在模型中命名的列, glm(surv〜。,data sof,family = binomial(link =“logit”))''你会想要事先将所有的类设置为'as.factor()'。因子(tdate)+ as.factor(tdate)'似乎是相同的。那是故意的吗? – Chase 2012-04-03 12:54:38

回答

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中未包含的变量。如果您仍然有很多不完整的案例,那么您可以先决定如果您可以消除一些高度缺失的变量。

+0

我按照上面的建议运行模型,并从9000条记录中给我提供了8000条。几乎所有具有高缺失值的预测变量都在完整模型中,谢谢! – baz 2012-04-03 23:59:23