R中的后向消除

hn.*_*ong 10 r

我试图使用R的后向消除来获得最终模型,但是当我运行代码时出现以下错误消息.有人可以帮帮我吗?

base<-lm(Eeff~NDF,data=phuong)
fullmodel<-lm(Eeff~NDF+ADF+CP+NEL+DMI+FCM,data=phuong)
 step(full, direction = "backward", trace=FALSE )

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

Ben*_*ker 12

在比较不同的子模型时,有必要将它们拟合到同一组数据中 - 否则结果就没有意义了.(考虑极端情况下,你有两个预测AB,其在相互只有你观察测量一半-则该模型y~A+B将安装在所有的数据,但这些模型y~Ay~B将被安装到不相重叠,该数据子集.)因此,step不允许您比较子模型(由于自动删除包含NA值的情况)正在使用原始数据集的不同子集.

使用na.omit的原始数据集应该解决这个问题.

fullmodel <- lm(Eeff ~ NDF + ADF + CP + NEL + DMI + FCM, data = na.omit(phuong))
step(fullmodel, direction = "backward", trace=FALSE ) 
Run Code Online (Sandbox Code Playgroud)

但是,如果NA在不同的预测变量中有很多值,最终可能会丢失大量的数据集 - 在极端情况下,您可能会丢失整个数据集.如果发生这种情况,您必须重新考虑您的建模策略......