尽管ARIMA模型是进行时间序列建模的强大工具,但在处理具有明显重复季节性模式的数据时,它们存在局限。仅通过非季节性AR或MA项来捕捉季节性,通常需要非常高的阶数,从而导致模型过于复杂,可能无法准确反映其固有的季节性结构。
为了解决这个问题,我们引入了**季节性自回归积分移动平均(SARIMA)**模型。SARIMA通过明确地在模型结构中加入季节性成分,扩展了基本的ARIMA框架。这使得它特别适合于模式在固定周期内重复的时间序列数据,例如,显示年度峰值的月销售数据或表现出每周循环的每日网站流量。
SARIMA表示法理解
SARIMA模型通常表示为 SARIMA(p,d,q)(P,D,Q)m。我们来具体看看这种表示法:
- (p,d,q): 这些是非季节性参数,与你在上一章学到的标准ARIMA模型中的参数完全相同。
- p: 非季节性自回归(AR)阶数。
- d: 非季节性差分阶数。
- q: 非季节性移动平均(MA)阶数。
- (P,D,Q): 这些表示模型的季节性成分。它们与非季节性成分相似,但在季节性滞后上发挥作用。
- P: 季节性自回归(AR)阶数。它捕获当前观测值与前几个季节观测值之间的关系。
- D: 季节性差分阶数。它通过减去相隔一个完整季节的观测值来处理季节性趋势。
- Q: 季节性移动平均(MA)阶数。它模拟当前误差与前几个季节误差之间的关系。
- m: 这是一个重要的参数,表示季节周期或频率。它是完整季节周期中的时间步长数量。例如:
- m=12:对于具有年度季节性的月度数据。
- m=4:对于具有年度季节性的季度数据。
- m=7:对于具有每周季节性的每日数据。
- m=52:对于具有年度季节性的每周数据。
SARIMA的工作原理
可以将SARIMA模型看作是结合了两个过程:一个建模非季节性动态,另一个建模季节性动态。
- 季节性差分: 如果 D>0,模型首先应用季节性差分(yt−yt−m)来消除或减少季节性趋势。这有助于稳定序列的季节性成分。
- 非季节性差分: 如果 d>0,模型接着应用非季节性差分(yt′−yt−1′,其中 y′ 是当 D>0 时的季节性差分序列,否则 y′=y)来处理非季节性趋势,并使序列在常规意义上平稳。
- ARMA建模: 最后,将类似ARMA的结构应用于差分后的序列。这种结构包括:
- 非季节性AR(p)和MA(q)项,捕捉短期滞后(例如,滞后1,滞后2)处的关联。
- 季节性AR(P)和MA(Q)项,捕捉季节性滞后(例如,滞后 m,滞后 2m)处的关联。
例如,对于月度数据(m=12),一个 SARIMA(1,1,1)(1,1,1)12 模型表示:
- 非季节性:一个AR(1)项,一阶常规差分(d=1),以及一个MA(1)项。
- 季节性:一个季节性AR(1)项(与滞后12的关联),一阶季节性差分(D=1,yt−yt−12),以及一个季节性MA(1)项(滞后12处误差之间的关联)。
通过加入这些独特的季节性参数 (P,D,Q)m,SARIMA提供了一种更有条理、更易于理解的方式来建模受可预测的周期性模式影响的时间序列。后续部分将指导您使用ACF/PACF图确定合适的季节性阶数,并使用statsmodels库在Python中实现这些模型。