Python ARIMA 模型,预测值被移位

9
我对Python ARIMA实现不熟悉。我有几个月的15分钟频率数据。在尝试遵循Box-Jenkins方法拟合时间序列模型时,我在最后遇到了问题。时间序列(ts)和差分系列(ts_diff)的ACF-PACF图已给出。我使用了ARIMA(5,1,2),最后绘制了拟合值(绿色)和原始值(蓝色)。如所示,数值明显发生移位(偏移量为1)。我做错了什么?
预测结果不好吗?任何见解都会有所帮助。
3个回答

2

这是一步预测或预测的标准属性。

用于预测的信息是截至上一期的历史记录。例如,某一时期的高峰将影响下一时期的预测,但不能影响高峰时期的预测。这使得预测在图中呈现出偏移。

两步预测会给人以向后偏移两个周期的印象。


1
在您指定的模型(5,1,2)中,您设置了d=1。这意味着您将数据差分1次,或者换句话说,执行整个时间相关观测范围的移动,以使拟合模型的残差最小化。
有时,将d设置为1会导致ACF / PACF图中出现更少和/或更不明显的峰值(即残差较小)。在这种情况下,如果您使用已拟合的模型预测未来值,如果应用差分处理,您的预测将与您观察到的值之间的偏差更小。
差分是通过Y(differenced)=Y(t)-Y(t-d)实现的,其中Y(t)指时间索引t处的观测值Y,d指您应用的差分顺序。当您使用差分时,您的整个观测范围基本上向右移动。这意味着您在时间序列的左侧丢失了一些数据。您失去多少时间点取决于您使用的差分顺序d。这就是您观察到的移动来源。

这个页面可能会提供更详细的解释(如果你想了解整个ARIMA模型拟合过程的处理,请确保点击并探索其他页面)。

希望这能帮到你(或者至少让你对这个转变放心)!

祝一切顺利,

Evert


3
在创建了包含预测值的最终数据集后,你认为将预测数据向后移动1个单位以与原始数据对齐是明智的(或不明智的)?你认为这样做有什么问题吗? - AK91
不,你不需要这样做。如果我们总体上看统计软件,第0个值应该是“缺失值”。因此,在最终数据集中,除非RMSE会比它应该的更大,否则在拟合值和原始数据中应该删除第0个值,以便进行绘图或计算RMSE。 - Mawanda

1

确认一下,我现在是正确地做着这件事吗?这里是我使用的代码。

from statsmodels.tsa.arima_model import ARIMA
model = sm.tsa.ARIMA(ts, order=(5, 1, 2))
model = model.fit()
results_ARIMA=model.predict(typ='levels')
concatenated = pd.concat([ts, results_ARIMA], axis=1, keys=['original', 'predicted'])
concatenated.head(10)
    original    predicted
login_time      
1970-01-01 20:00:00 2   NaN
1970-01-01 20:15:00 6   2.000186
1970-01-01 20:30:00 9   4.552971
1970-01-01 20:45:00 7   7.118973
1970-01-01 21:00:00 1   7.099769
1970-01-01 21:15:00 4   3.624975
1970-01-01 21:30:00 0   3.867454
1970-01-01 21:45:00 4   1.618120
1970-01-01 22:00:00 9   2.997275
1970-01-01 22:15:00 8   6.300015

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