使用Statsmodels的predict()方法为何得到错误预测值?
问题原因分析
你的问题出在手动计算时使用了四舍五入后的近似参数,而Statsmodels的predict()方法用的是模型拟合得到的更精确原始参数。
具体验证
- 从代码输出可见,模型实际拟合的精确参数为:
- Intercept:
0.275040 - SAT系数: 实际约为
0.001655688(打印时显示为0.001656是四舍五入后的结果)
- Intercept:
- 用精确参数计算结果和
predict()输出完全匹配:- SAT=1700:
0.275040 + 0.001655688 * 1700 = 3.0897096,对应预测值3.089710 - SAT=1670:
0.275040 + 0.001655688 * 1670 = 3.04004096,对应预测值3.040039(仅浮点精度差异)
- SAT=1700:
额外优化提示
构建预测用的new_data时无需手动添加Intercept列,Statsmodels会自动为公式形式的模型补充截距项,简化后的代码如下:
new_data = pd.DataFrame({'SAT': [1700, 1670]}) predictions = ols_model_results.predict(new_data)
执行后会得到和原代码完全一致的预测结果。
内容的提问来源于stack exchange,提问作者Ricardo Jaramillo
相关产品推荐
相关产品推荐

