我正在尝试使用向后消除和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?

最佳答案

比较不同的子模型时,有必要将它们拟合到同一组数据-否则结果就没有意义。 (考虑到极端情况,您有两个预测变量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 )

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

关于r - R中的向后消除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11767602/

10-12 18:52