努力用 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)
我希望从文件中读取数据(日期和数量列)并将它们绘制到带有 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)