深色模式
第四章 ARIMA 与季节模型
ARIMA 用差分把非平稳问题转化为平稳问题。本章讲 d 的作用与过度差分的危害,并扩展到季节模型 SARIMA 与带外生变量的情形。
4.1 为什么需要 d
ARMA 的前提是平稳。现实中的价格、存量、总量类序列往往非平稳。ARIMA(p, d, q) 的处理办法是:先做 d 次差分使其平稳,再对差分序列建 ARMA(p, q)。
打个比方:ARMA 只能在平地上建模,可价格序列是一条上坡的滑梯。差分做的事,就是不再记"离地面多高",改记"这一步比上一步高了多少"——斜坡被拉平了,剩下的起伏才是 ARMA 能描述的东西。
这也解释了为什么 d 通常只取 1:坡只有一段,拉平一次就够。d = 2 相当于把已经拉平的地面再往下挖一层,只有在"变化率本身还在变"(比如通胀率的加速度)时才需要。
记 B 为滞后算子(Byₜ = yₜ₋₁),则 ARIMA 可写为
φ(B)(1 − B)^d yₜ = c + θ(B)εₜ
其中 (1 − B)^d 就是 d 阶差分算子。
★ 记号陷阱。 中文教材常把模型写成 ARI(p, d) 或 ARIMA(p, d, q),但不同书的参数顺序不完全一致。R 的 arima(x, order = c(p, d, q)) 是 (p, d, q);而有些教材的 ARI(p, d) 指"p 阶自回归、d 阶差分"。写报告时务必标明顺序。
d 的三种典型取值:
- d = 0:原序列平稳,直接 ARMA;
- d = 1:含单位根,差分后平稳(价格、汇率、股价);
- d = 2:差分后仍含单位根(罕见,通常是通胀率这类"变化率的变化率")。
4.2 过度差分的危害
差分不是越多越好。过度差分有四个后果:
- 引入不可逆的 MA 单位根。差分算子 (1 − B) 给 MA 部分强加一个根在 z = 1 的因子,使模型落入不可逆域。
- 放大方差。差分相当于高通滤波,会放大高频噪声。
- 丢失长期信息。若原序列其实是趋势平稳,差分会把本可预测的确定性趋势变成随机游走,长期预测方差无界增长。
- 人为制造负相关。差分后 ACF 在滞后 1 出现约 −0.5 的负值。
打个比方:过度差分像用放大镜看照片。放一次,细节刚好清楚;再放一次,你看到的全是印刷网点(放大方差),整张构图反而看不见了(丢失长期信息),而且网点边缘会形成假的轮廓线(人为负相关)。
那个 −0.5 的假轮廓特别值得记:差分算子 (1 − B) 天然带一个减号,会把一阶自相关硬拽到 −0.5 附近。看到 ACF 滞后 1 有个明显的负柱子,第一反应应该是"是不是多差了一次",而不是"模型没配好"。
判别信号(出现任一即应回头检查):
- 差分后 ACF 滞后 1 显著为负,接近 −0.5;
- 差分后的样本方差大于原序列;
- 差分后 ADF 仍不拒绝单位根(说明差一次不够,或者根本不是单位根问题而是结构突变)。
4.3 季节模型 SARIMA
月度、季度数据常有周期为 s 的季节性(s = 12 或 4)。SARIMA(p, d, q)(P, D, Q)_s 在普通差分之外再加季节差分 (1 − B^s)^D:
φ(B)Φ(B^s)(1 − B)^d(1 − B^s)^D yₜ = c + θ(B)Θ(B^s)εₜ
其中大写 φ、θ 是季节参数,Φ(B^s) = 1 − Φ₁B^s − … − Φ_PB^(Ps)。
打个比方:季节差分就是**"同比"**。今年 3 月减去去年 3 月,把"每年 3 月都高"这个固定模式一次性消掉,剩下的才是真正的新变化。
所以 SARIMA 是两把锉刀:普通差分锉掉"整体在爬坡",季节差分锉掉"每年同一个坑"。两把都得用,但别叠太多——D = 1 已经把季节模式锉得很干净,再叠 D = 2 就成了过度锉削。
识别特征:
- 季节 ACF 在滞后 s, 2s, 3s 处出现尖峰;
- 若季节差分后,滞后 s 处仍有显著尖峰,考虑加季节 MA 项;
- 经典例子是航空客运模型 SARIMA(0,1,1)(0,1,1)₁₂。
★ 季节差分与普通差分的顺序无所谓(算子可交换),但两者都做时要注意:D = 1 已经包含很强的信息,通常 d = 0 或 1 配合 D = 1 就够,不要盲目叠加。
4.4 疏系数模型
有时序列只在特定滞后上有显著相关,中间滞后都不显著。例如年度数据的 ARIMA(12, 1, 0) 可能只有滞后 12 的系数显著,中间 11 个都接近零。
疏系数模型(subset ARIMA)只保留这些显著滞后项,其余置零。好处是大幅减少参数个数,提高估计效率。R 中可以用 arima() 的 fixed 参数把不需要的系数固定为 0。
打个比方:一排 12 个开关,其中 11 个是摆设,只有第 12 个真正接线。疏系数模型就是把那 11 个没用的开关拆掉——省地方(参数少)、少出错(估计稳)、功能一点不减。硬留着它们,每个都要估一个系数,白白消耗自由度,还容易估出些乱七八糟的值。
4.5 带回归项的 ARIMA
当序列同时受外生变量影响时,有两种建模方式:
方式一:ARIMAX(回归含 ARMA 误差)
yₜ = βxₜ + ηₜ, φ(B)(1 − B)^d ηₜ = θ(B)εₜ
即先设定回归结构,再让误差项服从 ARIMA。这是正确做法,因为它在估计 β 的同时正确处理了误差的自相关,标准误不会被低估。
方式二:先回归再对残差建 ARIMA
两步法。若第一步的 OLS 残差存在自相关,β̂ 虽仍一致但标准误有偏,且两步法的推断性质不如一步法。
★ 关键区别:ARIMAX 中的 β 是"控制了序列自身动态之后"的效应;而单纯把 xₜ 当普通回归元(忽略误差自相关)会得到虚假显著的 t 值。
打个比方:两步法像穿着外套称体重——先称"人 + 外套",再单独称外套,然后相减。两次称量的误差全都留在了结果里,而且你还得假设"外套的重量是准的"。
ARIMAX 是脱了外套直接称:把回归和误差结构放进同一个似然里一起估,β 的标准误才是对的。这个差别在报告里很致命——两步法会给你一个偏小的标准误,让本来不显著的 β 显得显著,白白多写一句结论。
4.6 结构突变与干预分析
结构突变指序列的生成机制在中途发生改变(水平跳变、斜率改变、方差改变)。它会同时污染 ADF(把突变误判为持续性)和模型参数(全样本估计得到"平均"参数,各段都不适用)。
打个比方:中途换了司机。前半程是老司机开,后半程换了人,驾驶习惯完全不同。你用全样本估一个"平均驾驶风格",结果两段都不像——前半段嫌你太猛,后半段嫌你太肉。
更麻烦的是 ADF 会被骗:一次性的水平跳变(比如疫情后价格直接抬上一个台阶),在 ADF 眼里很像"冲击永久化",于是判成单位根。这时候去差分,等于把本来只是一个台阶的东西,硬生生变成了一个持续漂移的随机游走。
处理方法:
- 虚拟变量:水平突变用阶跃变量(0/1),斜率突变用分段线性项。
- 干预分析:把突发事件建模为脉冲(单期冲击)或阶跃(永久改变),估计其影响并检验是否显著。
- 分段建模:若突变明显且样本充足,分段估计再比较参数。
- 稳健检验:Zivot-Andrews 检验(允许一个内生突变的单位根检验)、Bai-Perron 多断点检验。
要点
- ARIMA(p,d,q) = d 次差分 + ARMA(p,q);d 由平稳性检验决定,通常 0 或 1。
- 过度差分会产生不可逆 MA 单位根、放大方差、丢失趋势信息,信号是 ACF 滞后 1 约 −0.5。
- SARIMA 在普通差分外增加季节差分 (1−B^s)^D,识别靠 s、2s、3s 处的 ACF 尖峰。
- 有外生变量时应一步估计(ARIMAX),不要先回归再对残差建模。
- 结构突变会同时污染单位根检验和参数估计,需用虚拟变量或稳健检验处理。
自测 3 问
Q1:过度差分有哪些危害?最典型的识别信号是什么?
点开看答案
危害:① 引入不可逆的 MA 单位根;② 放大方差;③ 丢失长期信息(本可预测的确定性趋势被变成随机游走);④ 人为制造负相关。
信号:差分后 ACF 滞后 1 约 −0.5;差分后方差反而比原序列大。
Q2:SARIMA 比 ARIMA 多了什么?季节性靠什么识别?
点开看答案
在普通差分之外增加季节差分 (1 − Bˢ)ᴰ(以及季节 AR/MA 项)。
识别靠 ACF 在 s、2s、3s 这些季节滞后处出现的尖峰。
Q3:有外生变量时,为什么不能「先回归、再对残差建 ARMA」?
点开看答案
应该用 ARIMAX 一步估计:把回归和误差的 ARIMA 结构放进同一个似然里一起估。
两步法里,若 OLS 残差有自相关,β̂ 虽然仍一致,但标准误有偏(偏小),会让本来不显著的 β 显得显著。
另外,结构突变会同时污染单位根检验和参数估计,需要用虚拟变量或稳健检验处理。