在Python中使用季节性ARIMA进行多步预测
当时间序列中存在趋势和季节性时,另一种非常流行的方法是使用季节性自回归综合移动平均值(SARIMA)模型,而不是使用Box Jenkins方法对其进行手动分解以使其适合ARMA模型。 ARMA模型。SARIMA模型表示为SARIMA(p,d,q)(P,D,Q)[S],其中S表示每个季节的周期数,d表示差异程度(数据获得的次数过去的值减去),大写的P,D和Q表示ARIMA模型的季节性部分的自回归,差分和移动平均项。
要直接写出SARIMA模型有点复杂,因此需要使用回移运算符来描述它。例如,SARIMA(1
当处理时间序列滞后时,后向移位运算符B是有用的符号设备:By(t)= y(t-1)
从ACF / PACF图中选择SARIMA模型的规则
这些都是经验法则,并不是在SARIMA(p,d,q)(P,D,Q)[S]中挑选每个参数数量的精确科学。从ACF / PACF图中挑选好的参数是一门艺术。以下规则也适用于ARMA和ARIMA模型。
确定区别的顺序:
如果序列没有可见趋势或所有滞后的ACF较低,则d = 0。
如果序列具有明显的趋势或ACF值为正,且出现大量滞后,则d≥1。
注意:如果对序列应用差分后,滞后1处的ACF为-0.5或更大的负值,则序列可能会过分差分。
注意:如果发现最佳d为d = 1,则原始序列将保持恒定趋势。d = 2的模型假定原始序列具有随时间变化的趋势。
识别AR和MA术语的数量
p等于PACF值高于显着性水平的第一个滞后。
q等于ACF值高于显着性水平的第一个滞后。
确定模型的季节性部分:
S等于具有最高值的ACF滞后(通常为高滞后)。
如果序列随时间推移具有稳定的季节性模式,则D = 1。
如果序列随时间推移具有不稳定的季节性模式,则D = 0。
经验法则:d +D≤2
如果ACF在滞后S处为正,则P≥1,否则P = 0。
如果ACF在滞后S处为负,则Q≥1,否则Q = 0。
经验法则:P +Q≤2
网格搜索以选择SARIMA模型
进行完整的手动时间序列分析可能是一项繁琐的任务,尤其是当您要分析许多数据集时。然后最好使用网格搜索自动执行模型选择任务。对于SARIMA,由于我们有很多参数,因此如果我们将每个参数的上限设置得太高,则对一个数据集进行网格搜索可能需要几个小时才能完成。将限制设置得太高也会使您的模型过于复杂并过度拟合训练数据。
为避免长时间运行和过度拟合问题,我们应用了所谓的简约原则,即创建所有参数的组合,使p + d + q + P + D +Q≤6。另一种方法是将每个参数设置为0或1或2,并使用AIC对每个组合进行网格搜索。在预测研究中,将网格搜索用作SARIMA作为更高级模型(例如深度神经网络)的基准方法时,通常将网格搜索应用于SARIMA。
但是提醒一下,网格搜索可能并不总是为您提供最佳模型。为了获得最佳模型,您可能需要使用ACF / PACF图手动试验不同的参数。
Python教程在载入我们的时间序列后,我们将其绘制出来,在这里我们使用经典的航空乘客时间序列。
通过检查该图,我们可以得出结论,该时间序列具有正线性趋势,可乘的季节性模式,并且可能还有一些不规则模式。这些信息强烈建议我们使用SARIMA模型进行预测。让我们开始吧!首先,我们将70%的数据用于培训和30%的fo测试。
接下来,由于数据具有可乘的季节性,我们应用对数过滤器,然后使用自相关图分析残差。
我们在这里看到不再有乘法影响,也没有趋势。但是,该残差系列中仍然存在不稳定的季节性模式。这表明我们需要删除可以使用SARIMA完成的季节性模式。我们可以通过查看ACF和PACF图来选择SARIMA的季节性模式参数。
查看不同系列的ACF和PACF图,我们看到ACF滞后4的第一个有效值,而PACF滞后4的第一个有效值,建议使用p = 4和q = 4。 ACF图中的滞后12表示我们的季节为S = 12,并且由于此滞后为正,因此表明P = 1且Q =0。由于这是SARIMA的差分序列,我们将d = 1设置,并且由于季节性模式为随着时间的流逝,我们将D设置为0不稳定。所有这些共同为我们提供了SARIMA(4
现在我们可以预测了。
我们在这里可以看到,SARIMA(4
题库


雷达卡



京公网安备 11010802022788号







