努力用 statsmodels 制作一个有效的 ARIMA 预测图

Struggling to make a working ARIMA forecast graph with statsmodels

我希望从文件中读取数据(日期和数量列)并将它们绘制到带有 ARIMA 预测的图表上。

不幸的是,我使用过的在线指南并不走运,每个指南都让我遇到了不同的问题。

这是我的基本代码(只绘制数据而不进行预测):

from pandas import Series
from matplotlib import pyplot
from statsmodels.tsa.arima_model import ARIMA

series = Series.from_csv('Quantity.csv',header=0)

model = ARIMA(series, order=(2,0,1))
series.plot()
pyplot.show()

这是我正在练习的数据:

Date    Quantity
2010/01/01  1358
2010/07/02  0
2010/08/03  0
2011/02/04  0
2011/11/05  0
2011/12/06  274
2012/06/07  1074
2012/08/30  2223
2013/04/16  0
2013/03/18  1753
2014/02/22  345
2014/01/27  24
2015/12/15  652
2015/09/28  275
2016/05/04  124
2017/11/07  75
2017/09/22  32
2017/04/04  12

那么如何创建 ARIMA 预测并将其放入我的切除图?

此外,我不完全确定 Python 中的 ARIMA 预测在绘制后的外观如何(我只在 R 中看到过它们,但从我所看到的情况来看,情况并不相同对于 Python),所以也许一个例子会很好。

首先,我建议使用 read_csv 方法并在此处解析您的日期:

series = pd.read_csv('Quantity.csv', header=0, parse_dates=[0])
series.columns = ['Date', 'Quantity']

您需要使用库中的 fit 方法,将 Quantity 列转换为 float64 以避免您提到的错误:

model = ARIMA(series['Quantity'].astype(float), order=(2,0,1), dates=series['Date'])

(如果您不想打印所有计算细节,则显示=0)

然后您使用以下方法从拟合模型中获得预测值:

fittedModel.forecast(steps=1)