R语言调用predict函数出现异常结果及报错的问题咨询
问题原因与解决办法
核心原因
出现这个问题的本质是你的回归模型lm.fit依赖的变量和传入predict的newdata不匹配,具体分两种常见情况:
- 构建模型时误使用了多变量公式:比如写成
lm(medv ~ ., data = Boston)(用Boston数据集所有变量建模),而非书中要求的单变量回归lm(medv ~ lstat, data = Boston)。此时newdata只提供了lstat,R找不到模型所需的其他变量,就会自动调用原训练数据(共506行)的变量来补全,导致输出数百行结果并报错。 - 构建模型时未指定
data参数:比如写成lm(Boston$medv ~ Boston$lstat),这种情况下模型识别的变量是Boston$lstat而非单纯的lstat。当newdata传入列名为lstat的数据框时,R无法匹配到模型要求的变量,同样会自动使用原训练数据的506行数据进行预测。
解决步骤
- 重新构建正确的单变量线性回归模型:
lm.fit <- lm(medv ~ lstat, data = Boston) - 再次执行预测命令:
predict(lm.fit, data.frame(lstat = c(5,10,15)), interval = "confidence")
执行后就能得到你预期的3行拟合结果。
内容的提问来源于stack exchange,提问作者HMPtwo
相关产品推荐
相关产品推荐

