我试图使用带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?发布于 2012-08-02 05:12:59
在比较不同的子模型时,有必要将它们拟合到同一组数据中-否则结果就没有意义了。(考虑这样一种极端情况:您有两个预测器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 ) 但是,如果在不同的预测值中有很多NA值,那么最终可能会丢失大量数据集--在极端情况下,您可能会丢失整个数据集。如果发生这种情况,你必须重新考虑你的建模策略。
https://stackoverflow.com/questions/11767602
复制相似问题