首页 > 解决方案 > 从 SARIMAX 模型打印结果时出现问题

问题描述

我已经建立了一个 SARIMA 模型来预测特定产品的库存需求。我能够完美地将时间序列可视化为结果的输出,但是当尝试直接打印结果(实际数字,而不是图形)时,代码运行但不提供值的打印。

我已经尝试对此进行研究,但我似乎只能在网上找到时间序列可视化的示例,我已经拥有了。我已经尝试过 .get_prediction 和 get_forecast。

my_order = (2, 1, 0)
my_seasonal_order = (3, 1, 0, 7)
bananas_model = SARIMAX(bananas_mfc_log, order=my_order, seasonal_order=my_seasonal_order, alpha=0.05, freq='D')
results = bananas_model.fit()

pred = results.get_prediction(start=pd.to_datetime('2019-07-01'), dynamic=False)
pred_ci = pred.conf_int()
ax = bananas_mfc_log.apply(np.exp).plot(label='observed')
pred.predicted_mean.apply(np.exp).plot(ax=ax, label='forecasted', alpha=.7, figsize=(14, 7))
ax.set_xlabel('Date')
ax.set_ylabel('Quantity Picked')
plt.ylim(-1000, 1500)
plt.legend()
plt.show()
pred2 = results.get_forecast(steps=15)
print(pred2)

上面的打印尝试提供了这一点:

<statsmodels.tsa.statespace.mlemodel.PredictionResultsWrapper object at 0x000002100EC02D30>
pred2 = results.get_prediction(start=pd.to_datetime('2019-07-26'), end=pd.to_datetime('2019-08-09'), dynamic=False)
print(pred2)

第二次尝试打印结果会导致:

<statsmodels.tsa.statespace.mlemodel.PredictionResultsWrapper object at 0x000002100059D710>

我想打印一个数据框或一个预测结果数组。例如:

date         bananas
2019-07-26   57
2019-07-27   178
2019-07-28   198
2019-07-29   72
2019-07-30   54
2019-07-31   87

标签: pythontime-seriesstatsmodelsforecastingarima

解决方案


在等待回复时,我尝试了以下操作,结果成功:

pred2 = []
pred2 = results.get_prediction(start=pd.to_datetime('2019-07-01'), end=pd.to_datetime('2019-07-31'), dynamic=False)
pred2 = pred2.predicted_mean.apply(np.exp)
print(pred2)

apply(np.exp) 只需要从为模型完成的对数转换进行反向转换。这是结果格式的预览:

2019-07-26    215.606736
2019-07-27    353.112927
2019-07-28     72.164655
2019-07-29    318.258192
2019-07-30     10.354032
2019-07-31    301.233365
Freq: D, dtype: float64

尽管这篇文章是短暂的,但我将把它留在这里,以防它帮助其他也在学习的人。


推荐阅读