step()和stepAIC()在缺少值的数据上运行代码时会产生“删除缺失值错误”。
Error in step(mod1, direction = "backward") :
number of rows in use has changed: remove missing values?
根据?步骤:
The model fitting must apply the models to the same dataset. This may be
a problem if there are missing values and R's default of na.action = na.omit
is used. We suggest you remove the missing values first.
我有一个数据框,其中一个变量有四个na值。但是,当我在lm对象上运行步骤时,即使它缺少值,也不会出现“缺失值”错误。谁能告诉我可能会发生什么?
> d1$Impressions
[1] NA NA NA 6924180 9313226 27888455
18213812 54557205 13495553
...
这不会产生错误消息:
mod1 = lm(Leads ~ G + Con + GOO + DAY + Res + SD + ED +
ME + Impressions + Inc + Sea, data=d1)
step(mod1, direction="backward")
stepAIC(mod1)
即使有一个缺少值的变量,它也不会生成错误消息。关于发生了什么的任何想法?
答案 0 :(得分:2)
所述行为的一个原因是这一点。 step()
符合完整模型,因此由于NA
s的存在而下降3(如所述)观察。只要NA
的变量保留在模型中,lm()
函数就会在每一步中删除这些观察结果。如果步骤在删除变量之前停止,该变量将导致之前删除的观察之一在模型中,则不会引发错误,因为模型矩阵中的行数不会发生变化
顺便说一句,像这样的逐步选择被认为是有些可疑的有效性。尤其是,在使用它时,你做了一个相当大胆的陈述,即消除的变量的影响正好等于零。这也具有使模型中保留的变量的影响(估计系数)偏差以具有更大(绝对)值的效果。
这种逐步选择的替代方法包括收缩方法,如Lasso和弹性网。