如何将auto_arima预测值与实际值重叠绘制进行对比
问题解决方法
错误原因
你使用的predict()是模型生成训练集外未来预测值的方法,默认仅生成10期预测结果,无法回溯获取训练阶段的拟合值。你传入0作为预测起始索引时触发报错,是因为predict()要求起始索引必须大于训练集的最大索引,不能落在训练集的时间范围内。
实现方案
要获取和训练集长度一致的模型拟合值,有两种可行方式:
- 直接调用模型的
fittedvalues属性,返回结果长度和输入训练集完全一致,可直接用来和实际值对比绘图 - 调用
predict_in_sample()方法,同样可以返回训练集的拟合结果,支持指定起止索引取部分区间的拟合值
完整示例代码
stepwise_model = auto_arima(data, start_p=1, start_q=1, test='adf', max_p=2, max_q=2, m=7, start_P=0, seasonal=True, d=None, D=1, trace=True, error_action='ignore', suppress_warnings=True, stepwise=True) # 绘制实际值 plt.plot(data['values'], color='r', label='实际值') # 绘制模型拟合值,两种方式二选一即可 plt.plot(stepwise_model.fittedvalues, color='g', label='模型拟合值') # 等效写法:plt.plot(stepwise_model.predict_in_sample(), color='g', label='模型拟合值') plt.legend() plt.show()
补充说明
如果需要对比模型的外推预测效果,可以先将原始数据集按比例拆分为训练集和测试集,用训练集训练模型后,调用predict(n_periods=len(测试集))生成测试集区间的预测值,再和测试集的实际值做对比即可。
内容的提问来源于stack exchange,提问作者Diogo Santos
相关产品推荐
相关产品推荐

