移动平均模型与自回归移动平均模型
小象实战讲义 · 时间序列分析
在掌握了自回归模型(AR)的性质后,本节我们将系统学习时间序列分析中另外两个核心模型:移动平均模型(MA)和自回归移动平均模型(ARMA)。MA模型将序列值表示为白噪声及其滞后项的线性组合,而ARMA模型则融合了AR和MA的特点,形成更一般的建模框架。理解这些模型的统计性质、可逆性条件以及自相关特征,是进行平稳序列建模与识别的关键基础。
💡 核心导读
- MA模型结构:学习移动平均模型的定义、延迟算子表示及统计性质
- 可逆性判据:掌握MA模型可逆性的特征根判别法,理解可逆性的实际意义
- ARMA模型框架:理解ARMA模型作为AR与MA的融合,掌握其平稳性与可逆性条件
- 相关性特征对比:系统对比AR、MA、ARMA三类模型的自相关与偏自相关特征
- Python实战:使用statsmodels库实现MA与ARMA模型的模拟、检验与特征分析
MA模型的定义与结构
移动平均模型(Moving Average Model)是时间序列分析中的另一类基础模型。与AR模型不同,MA模型将当前观测值表示为当前白噪声及其过去若干期白噪声的线性组合。
MA(q)模型的定义
具有如下结构的模型称为 q 阶移动平均模型,简记为 MA(q):
Xt=μ+εt−θ1εt−1−θ2εt−2−⋯−θqεt−q
其中:
- μ 为常数项
- εt∼WN(0,σ2) 为白噪声序列,满足:
- E(εt)=0
- Var(εt)=σ2
- Cov(εt,εs)=0,t=s
- θq=0,保证模型为 q 阶
特别当 μ=0 时,称为中心化 MA(q) 模型:
Xt=εt−θ1εt−1−θ2εt−2−⋯−θqεt−q
延迟算子表示
引入延迟算子 B,中心化 MA(q) 模型可简记为:
Xt=Θ(B)εt
其中 Θ(B) 为 q 阶移动平均系数多项式:
Θ(B)=1−θ1B−θ2B2−⋯−θqBq
重要提醒:在MA模型的系数表示中,所有 θ 系数前都带有负号。例如,若模型为 Xt=εt+0.8εt−1−0.3εt−2,则对应的系数为 θ1=−0.8,θ2=0.3。
MA模型的统计性质
均值与方差
对于 MA(q) 模型:
- 均值:E(Xt)=μ(常数)
- 方差: Var(Xt)=σ2(1+θ12+θ22+⋯+θq2)
推导过程基于白噪声的独立性: Var(Xt)=Var(εt−θ1εt−1−⋯−θqεt−q)=Var(εt)+θ12Var(εt−1)+⋯+θq2Var(εt−q)=σ2(1+θ12+θ22+⋯+θq2)
自协方差与自相关函数
MA(q) 模型的自协方差函数具有 q 阶截尾 性质:
γ(k)=Cov(Xt,Xt−k)={σ2(−θk+θ1θk+1+⋯+θq−kθq),0,1≤k≤qk>q
其中 γ(0)=Var(Xt)。
自相关系数为:
ρ(k)=γ(0)γ(k)={1+θ12+⋯+θq2−θk+θ1θk+1+⋯+θq−kθq,0,1≤k≤qk>q
截尾性解释:当滞后阶数 k>q 时,Xt 与 Xt−k 之间没有共同的白噪声项,因此协方差为零。
常用MA模型的自相关系数
MA(1)模型:Xt=εt−θ1εt−1
- ρ(1)=1+θ12−θ1
- ρ(k)=0,k≥2
MA(2)模型:Xt=εt−θ1εt−1−θ2εt−2
- ρ(1)=1+θ12+θ22−θ1+θ1θ2
- ρ(2)=1+θ12+θ22−θ2
- ρ(k)=0,k≥3
偏自相关系数
与AR模型相反,MA(q) 模型的偏自相关系数具有拖尾性质。这意味着偏自相关系数不会在有限阶后恒为零,而是呈指数衰减趋势。
理论依据:一个可逆的 MA(q) 模型可以等价地表示为无穷阶的 AR(∞) 模型。由于 AR(∞) 模型的偏自相关系数具有拖尾性(实际上是无穷阶截尾),因此 MA(q) 的偏自相关系数也呈现拖尾特征。
MA模型的可逆性
可逆性的概念与意义
MA模型存在一个重要特性:不同的MA模型可能具有完全相同的自相关系数。例如,以下两个MA(1)模型:
- Xt=εt−0.5εt−1
- Xt=εt−2εt−1
计算它们的自相关系数:
- 模型1:ρ(1)=1+0.52−0.5=−0.4
- 模型2:ρ(1)=1+22−2=−0.4
两个模型的自相关系数完全相同!这意味着仅凭自相关系数无法唯一确定MA模型。
为了解决这一问题,我们引入可逆性概念:如果一个MA模型能够表示为收敛的AR模型形式,则该MA模型称为可逆MA模型。一个自相关系数列唯一对应一个可逆MA模型。
可逆性判别条件
MA(q) 模型可逆的充要条件是:移动平均系数多项式 Θ(B) 的根都在单位圆外。
等价地,令特征方程: 1−θ1z−θ2z2−⋯−θqzq=0 的所有根 z1,z2,…,zq 满足 ∣zi∣>1。
特例分析:
- MA(1) 模型:Xt=εt−θ1εt−1 可逆条件为 ∣θ1∣<1
- MA(2) 模型:Xt=εt−θ1εt−1−θ2εt−2 可逆条件为特征根 ∣z1∣>1 且 ∣z2∣>1
逆函数与逆转形式
对于可逆的 MA(q) 模型,可以将其表示为 AR(∞) 形式:
Xt=j=1∑∞IjXt−j+εt
其中 Ij 称为逆函数,满足递推公式:
Ij=−θj′+k=1∑j−1θk′Ij−k,j≥1
其中 θj′=θj(当 j≤q)且 θj′=0(当 j>q)。
ARMA模型:AR与MA的融合
ARMA模型的定义
自回归移动平均模型(ARMA)结合了AR模型和MA模型的特点,形成更一般的建模框架。
具有如下结构的模型称为自回归移动平均模型,简记为 ARMA(p,q):
Xt=ϕ0+ϕ1Xt−1+ϕ2Xt−2+⋯+ϕpXt−p+εt−θ1εt−1−θ2εt−2−⋯−θqεt−q
其中:
- ϕp=0,θq=0
- εt∼WN(0,σ2)
- 对任意 s<t,E(Xsεt)=0
特别当 ϕ0=0 时,称为中心化 ARMA(p,q) 模型。
延迟算子表示
中心化 ARMA(p,q) 模型可简记为:
Φ(B)Xt=Θ(B)εt
其中:
- Φ(B)=1−ϕ1B−ϕ2B2−⋯−ϕpBp 为 p 阶自回归系数多项式
- Θ(B)=1−θ1B−θ2B2−⋯−θqBq 为 q 阶移动平均系数多项式
平稳性与可逆性条件
ARMA(p,q) 模型同时涉及平稳性和可逆性:
平稳条件:Φ(B) 的根都在单位圆外
- 由AR部分决定,与MA部分无关
- 等价于特征根 ∣λi∣<1
可逆条件:Θ(B) 的根都在单位圆外
- 由MA部分决定,与AR部分无关
- 等价于特征根 ∣zi∣>1
ARMA模型的统计性质
均值:
- 中心化模型:E(Xt)=0
- 非中心化模型:E(Xt)=1−ϕ1−⋯−ϕpϕ0
自相关系数与偏自相关系数:
Python实战:MA与ARMA模型分析
下面我们通过Python代码演示MA和ARMA模型的性质分析、可逆性判断以及自相关特征。
"""
时间序列分析 3.3 课时配套测试代码
内容:移动平均 (MA) 与自回归移动平均 (ARMA) 模型结构、可逆性判据与自相关/偏自相关特征
"""
import numpy as np
import pandas as pd
from statsmodels.tsa.arima_process import ArmaProcess
from statsmodels.tsa.stattools import acf, pacf
np.random.seed(42)
n = 500
# 1. MA(1) 过程: X_t = e_t + 0.7*e_{t-1}
# 滞后多项式: 1 + 0.7*B = 0 -> 特征根 B = -1/0.7 = -1.4286 (|B| > 1, 满足可逆性)
ma_ar = np.array([1])
ma_ma = np.array([1, 0.7])
ma1_process = ArmaProcess(ma_ar, ma_ma)
ma1_invertible = ma1_process.isinvertible
ma1_roots = ma1_process.maroots
# 2. ARMA(1, 1) 过程: X_t = 0.6*X_{t-1} + e_t - 0.4*e_{t-1}
arma_ar = np.array([1, -0.6])
arma_ma = np.array([1, -0.4])
arma11_process = ArmaProcess(arma_ar, arma_ma)
arma11_stationary = arma11_process.isstationary
arma11_invertible = arma11_process.isinvertible
# 3. 模拟与自相关分析
ma1_sample = ma1_process.generate_sample(nsample=n)
ma1_acf = acf(ma1_sample, nlags=4)
arma11_sample = arma11_process.generate_sample(nsample=n)
arma11_acf = acf(arma11_sample, nlags=4)
arma11_pacf = pacf(arma11_sample, nlags=4)
print(f"MA(1) 可逆性判据 (isinvertible): {ma1_invertible}")
print(f"MA(1) 移动平均特征根: {np.round(ma1_roots, 4).tolist()}")
print(f"MA(1) 样本 ACF (lag 0~4, lag 1 截尾特性): {np.round(ma1_acf, 4).tolist()}")
print(f"ARMA(1,1) 平稳性: {arma11_stationary}, 可逆性: {arma11_invertible}")
print(f"ARMA(1,1) ACF (双拖尾): {np.round(arma11_acf, 4).tolist()}")
print(f"ARMA(1,1) PACF (双拖尾): {np.round(arma11_pacf, 4).tolist()}")
运行结果与解读:
MA(1) 可逆性判据 (isinvertible): True
MA(1) 移动平均特征根: [-1.4286]
MA(1) 样本 ACF (lag 0~4, lag 1 截尾特性): [1.0, 0.4614, -0.0056, -0.0276, -0.0556]
ARMA(1,1) 平稳性: True, 可逆性: True
ARMA(1,1) ACF (双拖尾): [1.0, 0.22, 0.1503, 0.0988, 0.0302]
ARMA(1,1) PACF (双拖尾): [1.0, 0.2204, 0.1075, 0.0489, -0.0151]
📝 动手练一练
MA模型识别练习 观察以下自相关图特征,判断最适合的模型类型:
- ACF:滞后1阶为0.45,滞后2阶为-0.02,滞后3阶为0.01,滞后4阶为-0.03
- PACF:滞后1阶为0.45,滞后2阶为0.25,滞后3阶为0.15,滞后4阶为0.08
参考答案:ACF在滞后1阶后迅速衰减到接近0,呈现1阶截尾特征;PACF呈指数衰减,为拖尾特征。根据模型识别表,这符合MA(1)模型的特征。
可逆性判断 判断以下MA(2)模型是否可逆: Xt=εt+1.2εt−1+0.35εt−2
参考答案:首先写出特征方程:1+1.2z+0.35z2=0。解得两个根为 z1≈−1.4286,z2≈−2.0。两个根的模都大于1,因此该模型可逆。
本章小结
本节系统学习了移动平均模型(MA)和自回归移动平均模型(ARMA)的核心内容:
核心要点回顾
- MA模型:将序列表示为白噪声及其滞后项的线性组合,自相关系数q阶截尾,偏自相关系数拖尾
- 可逆性:MA模型的重要特性,确保自相关系数与模型一一对应,通过特征根在单位圆外判断
- ARMA模型:AR与MA的融合,自相关和偏自相关都呈拖尾特征
- 模型识别表:通过ACF和PACF的截尾/拖尾特征区分AR、MA、ARMA三类模型
行动清单
- 实战练习:使用Python生成不同参数的MA和ARMA序列,观察其ACF/PACF图,验证理论性质
- 模型识别:找一组实际时间序列数据,绘制样本ACF/PACF图,尝试判断适合的模型类型
- 可逆性验证:对给定的MA模型,计算其特征根,判断是否可逆,并尝试将其表示为AR(∞)形式
掌握这些模型的性质与识别方法,为后续的平稳序列建模奠定了坚实基础。在实际应用中,我们通常先通过样本自相关图初步判断模型类型,再通过参数估计和模型检验确定最终模型。
— 小象教研组