0

我有一个 427 天的温度数据集(每日温度数据)我正在训练 ARIMA 模型 360 天,并尝试预测其余 67 天的数据并比较结果。在将模型拟合到测试数据中时,我只是得到一条直线作为预测,我做错了什么吗?`

from statsmodels.tsa.arima.model import ARIMA
model = ARIMA(train['max'],order=(1,1,2),)
results = model.fit()
results.summary()
start = len(train)
end = len(train) + len(test) -1
predictions= pd.DataFrame()
predictions['pred'] = results.predict(start=start, end=end, typ='levels').rename('ARIMA(1,1,1) Predictions')

在此处输入图像描述

4

1 回答 1

1

您的 ARIMA 模型使用最后两个观测值进行预测,这意味着 t(361) 的预测基于 t(360) 和 t(359) 的真实值。t(362) 的预测是基于已经预测的 t(361) 和真实的 t(360)。t(363) 的预测基于两个预测值 t(361) 和 t(360)。该预测基于先前的预测,这意味着预测错误将对新的预测产生负面影响。t(400) 的预测基于基于基于预测等的预测的预测。假设您的预测在每个时间步仅偏差 1%,预测误差将变得越来越大您尝试的时间步越多预测。在这种情况下,预测通常在某个点形成一条直线。

如果您使用 ARIMA(p, d, q) 模型,那么您可以预测未来最多 q 步。预测未来 67 步是一个非常遥远的领域,而 ARIMA 很可能无法做到这一点。相反,尝试仅预测接下来的单个或几个时间步。

于 2022-02-26T09:56:09.440 回答