使用statsmodels.tsa.arima.model的ARIMA进行时间序列预测。

3

我正在尝试对我的ARIMA模型进行预测,但在某一点上卡住了。

from statsmodels.tsa.arima.model import ARIMA
train2 = trainData1["meantemp"][:1170]
test2 = trainData1["meantemp"][1170:]
# p,d,q ARIMA Model
model = ARIMA(train2, order=(1,1,50))
model_fit = model.fit()
print(model_fit.summary())

这里,trainData1的索引是日期(就像你猜测的train2和test2一样),使用train2数据训练了模型,然后我尝试对test2数据进行以下预测;

# make predictions
predictions = model_fit.predict(test2)
rmse = mean_squared_error(test2.values, predictions)
rmse

但是它给我以下错误提示;

TypeError: Cannot convert input [date
2016-03-17    2.375000
2016-03-18   -0.125000
2016-03-19    0.598214
2016-03-20    0.347619
2016-03-21   -0.508333
                ...   
2016-12-28    0.367391
2016-12-29   -1.979296
2016-12-30   -1.142857
2016-12-31    0.957393
2017-01-01   -5.052632
Name: meantemp, Length: 291, dtype: float64] of type <class 'pandas.core.series.Series'> to Timestamp

预测函数的 data 参数应该添加什么内容?

train2 如下:

2013-01-02   -2.600000
2013-01-03   -0.233333
2013-01-04    1.500000
2013-01-05   -2.666667
2013-01-06    1.000000
                ...   
2016-03-12   -0.504167
2016-03-13   -0.312500
2016-03-14   -1.875000
2016-03-15    1.691667
2016-03-16   -0.129167
Name: meantemp, Length: 1170, dtype: float64

以下是test2的内容:

date
2016-03-17    2.375000
2016-03-18   -0.125000
2016-03-19    0.598214
2016-03-20    0.347619
2016-03-21   -0.508333
                ...   
2016-12-28    0.367391
2016-12-29   -1.979296
2016-12-30   -1.142857
2016-12-31    0.957393
2017-01-01   -5.052632
Name: meantemp, Length: 291, dtype: float64

你能分享一下你的训练/测试数据和预测结果吗?请将它们打印到控制台并在这里展示。 - Arne Decker
我无法使用预测函数进行预测。 - Ugur Selim Ozen
请问您能提供trainData1.index的结果吗? - Shayan
1
这里的 predict 不像 sklearn 中那样工作。也许你应该查看文档。但是你可能需要 model_fit.forecast。此外,MA 阶数为 50 是不寻常的,你是如何/为什么选择它的? - user18122470
1个回答

2
我按照以下步骤解决了我的问题:
# make predictions
predictions = model_fit.forecast(291)
print(f'ARIMA Model Test Data MSE: {np.mean((predictions.values - test2.values)**2):.3f}')

使用预测功能,模型预测了接下来的291步,因为这是日常时间序列,并使用预测值和实际测试值使用MSE指标进行评估。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接