我试图使用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
在比较不同的子模型时,有必要将它们拟合到同一组数据中 - 否则结果就没有意义了.(考虑极端情况下,你有两个预测A
和B
,其在相互只有你观察测量一半-则该模型y~A+B
将安装在所有的数据,但这些模型y~A
和y~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
在不同的预测变量中有很多值,最终可能会丢失大量的数据集 - 在极端情况下,您可能会丢失整个数据集.如果发生这种情况,您必须重新考虑您的建模策略......