R语言lm()函数预测结果与手动计算不符问题咨询
问题出在参数名拼写错误!
你在调用predict()函数的时候,把参数名写成了new_data,但R中lm对应的predict函数接受的参数是newdata(没有下划线)。这个拼写错误导致R忽略了你传入的new_df,转而默认返回训练数据train_df的拟合值,而不是用新数据预测。
我们来验证一下:
- 训练数据里x=2的拟合值是
lin_fit$coefficients[[1]] + lin_fit$coefficients[[2]]*2,计算出来正好是你看到的0.002143689,也就是y_hat[[2]]的值——因为此时y_hat是训练数据的8个拟合值,第二个元素对应x=2的结果,而不是你以为的新数据里x=10的结果。
修正后的代码只需要把参数名改对:
y_hat <- predict(lin_fit, newdata = new_df)
现在再取y_hat[[2]](对应new_df里x=10的行),结果就会和你手动计算的0.007369728一致了。
内容的提问来源于stack exchange,提问作者user1700890
相关产品推荐
相关产品推荐

