📑 查看全课大纲(第 7 / 20 节)

移动平均模型(MA)与自回归移动平均模型(ARMA)

约 47 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

移动平均模型与自回归移动平均模型

小象实战讲义 · 时间序列分析

在掌握了自回归模型(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)模型的定义

具有如下结构的模型称为 qq 阶移动平均模型,简记为 MA(q)MA(q)

Xt=μ+εtθ1εt1θ2εt2θqεtqX_t = \mu + \varepsilon_t - \theta_1\varepsilon_{t-1} - \theta_2\varepsilon_{t-2} - \cdots - \theta_q\varepsilon_{t-q}

其中:

  • μ\mu 为常数项
  • εtWN(0,σ2)\varepsilon_t \sim WN(0, \sigma^2) 为白噪声序列,满足:
    • E(εt)=0E(\varepsilon_t) = 0
    • Var(εt)=σ2Var(\varepsilon_t) = \sigma^2
    • Cov(εt,εs)=0,tsCov(\varepsilon_t, \varepsilon_s) = 0, \quad t \neq s
  • θq0\theta_q \neq 0,保证模型为 qq

特别当 μ=0\mu = 0 时,称为中心化 MA(q)MA(q) 模型

Xt=εtθ1εt1θ2εt2θqεtqX_t = \varepsilon_t - \theta_1\varepsilon_{t-1} - \theta_2\varepsilon_{t-2} - \cdots - \theta_q\varepsilon_{t-q}

延迟算子表示

引入延迟算子 BB,中心化 MA(q)MA(q) 模型可简记为:

Xt=Θ(B)εtX_t = \Theta(B)\varepsilon_t

其中 Θ(B)\Theta(B)qq 阶移动平均系数多项式:

Θ(B)=1θ1Bθ2B2θqBq\Theta(B) = 1 - \theta_1B - \theta_2B^2 - \cdots - \theta_qB^q

重要提醒:在MA模型的系数表示中,所有 θ\theta 系数前都带有负号。例如,若模型为 Xt=εt+0.8εt10.3εt2X_t = \varepsilon_t + 0.8\varepsilon_{t-1} - 0.3\varepsilon_{t-2},则对应的系数为 θ1=0.8\theta_1 = -0.8θ2=0.3\theta_2 = 0.3

MA模型的统计性质

均值与方差

对于 MA(q)MA(q) 模型:

  • 均值E(Xt)=μE(X_t) = \mu(常数)
  • 方差Var(Xt)=σ2(1+θ12+θ22++θq2)Var(X_t) = \sigma^2(1 + \theta_1^2 + \theta_2^2 + \cdots + \theta_q^2)

推导过程基于白噪声的独立性: Var(Xt)=Var(εtθ1εt1θqεtq)=Var(εt)+θ12Var(εt1)++θq2Var(εtq)=σ2(1+θ12+θ22++θq2)\begin{aligned} Var(X_t) &= Var(\varepsilon_t - \theta_1\varepsilon_{t-1} - \cdots - \theta_q\varepsilon_{t-q}) \\ &= Var(\varepsilon_t) + \theta_1^2Var(\varepsilon_{t-1}) + \cdots + \theta_q^2Var(\varepsilon_{t-q}) \\ &= \sigma^2(1 + \theta_1^2 + \theta_2^2 + \cdots + \theta_q^2) \end{aligned}

自协方差与自相关函数

MA(q)MA(q) 模型的自协方差函数具有 qq 阶截尾 性质:

γ(k)=Cov(Xt,Xtk)={σ2(θk+θ1θk+1++θqkθq),1kq0,k>q\gamma(k) = Cov(X_t, X_{t-k}) = \begin{cases} \sigma^2(-\theta_k + \theta_1\theta_{k+1} + \cdots + \theta_{q-k}\theta_q), & 1 \leq k \leq q \\ 0, & k > q \end{cases}

其中 γ(0)=Var(Xt)\gamma(0) = Var(X_t)

自相关系数为:

ρ(k)=γ(k)γ(0)={θk+θ1θk+1++θqkθq1+θ12++θq2,1kq0,k>q\rho(k) = \frac{\gamma(k)}{\gamma(0)} = \begin{cases} \frac{-\theta_k + \theta_1\theta_{k+1} + \cdots + \theta_{q-k}\theta_q}{1 + \theta_1^2 + \cdots + \theta_q^2}, & 1 \leq k \leq q \\ 0, & k > q \end{cases}

截尾性解释:当滞后阶数 k>qk > q 时,XtX_tXtkX_{t-k} 之间没有共同的白噪声项,因此协方差为零。

常用MA模型的自相关系数

  1. MA(1)模型Xt=εtθ1εt1X_t = \varepsilon_t - \theta_1\varepsilon_{t-1}

    • ρ(1)=θ11+θ12\rho(1) = \frac{-\theta_1}{1 + \theta_1^2}
    • ρ(k)=0,k2\rho(k) = 0, \quad k \geq 2
  2. MA(2)模型Xt=εtθ1εt1θ2εt2X_t = \varepsilon_t - \theta_1\varepsilon_{t-1} - \theta_2\varepsilon_{t-2}

    • ρ(1)=θ1+θ1θ21+θ12+θ22\rho(1) = \frac{-\theta_1 + \theta_1\theta_2}{1 + \theta_1^2 + \theta_2^2}
    • ρ(2)=θ21+θ12+θ22\rho(2) = \frac{-\theta_2}{1 + \theta_1^2 + \theta_2^2}
    • ρ(k)=0,k3\rho(k) = 0, \quad k \geq 3

偏自相关系数

与AR模型相反,MA(q)MA(q) 模型的偏自相关系数具有拖尾性质。这意味着偏自相关系数不会在有限阶后恒为零,而是呈指数衰减趋势。

理论依据:一个可逆的 MA(q)MA(q) 模型可以等价地表示为无穷阶的 AR()AR(\infty) 模型。由于 AR()AR(\infty) 模型的偏自相关系数具有拖尾性(实际上是无穷阶截尾),因此 MA(q)MA(q) 的偏自相关系数也呈现拖尾特征。

MA模型的可逆性

可逆性的概念与意义

MA模型存在一个重要特性:不同的MA模型可能具有完全相同的自相关系数。例如,以下两个MA(1)模型:

  1. Xt=εt0.5εt1X_t = \varepsilon_t - 0.5\varepsilon_{t-1}
  2. Xt=εt2εt1X_t = \varepsilon_t - 2\varepsilon_{t-1}

计算它们的自相关系数:

  • 模型1:ρ(1)=0.51+0.52=0.4\rho(1) = \frac{-0.5}{1 + 0.5^2} = -0.4
  • 模型2:ρ(1)=21+22=0.4\rho(1) = \frac{-2}{1 + 2^2} = -0.4

两个模型的自相关系数完全相同!这意味着仅凭自相关系数无法唯一确定MA模型。

为了解决这一问题,我们引入可逆性概念:如果一个MA模型能够表示为收敛的AR模型形式,则该MA模型称为可逆MA模型。一个自相关系数列唯一对应一个可逆MA模型。

可逆性判别条件

MA(q)MA(q) 模型可逆的充要条件是:移动平均系数多项式 Θ(B)\Theta(B) 的根都在单位圆外

等价地,令特征方程: 1θ1zθ2z2θqzq=01 - \theta_1z - \theta_2z^2 - \cdots - \theta_qz^q = 0 的所有根 z1,z2,,zqz_1, z_2, \ldots, z_q 满足 zi>1|z_i| > 1

特例分析

  • MA(1)MA(1) 模型:Xt=εtθ1εt1X_t = \varepsilon_t - \theta_1\varepsilon_{t-1} 可逆条件为 θ1<1|\theta_1| < 1
  • MA(2)MA(2) 模型:Xt=εtθ1εt1θ2εt2X_t = \varepsilon_t - \theta_1\varepsilon_{t-1} - \theta_2\varepsilon_{t-2} 可逆条件为特征根 z1>1|z_1| > 1z2>1|z_2| > 1

逆函数与逆转形式

对于可逆的 MA(q)MA(q) 模型,可以将其表示为 AR()AR(\infty) 形式:

Xt=j=1IjXtj+εtX_t = \sum_{j=1}^{\infty} I_j X_{t-j} + \varepsilon_t

其中 IjI_j 称为逆函数,满足递推公式:

Ij=θj+k=1j1θkIjk,j1I_j = -\theta_j' + \sum_{k=1}^{j-1} \theta_k' I_{j-k}, \quad j \geq 1

其中 θj=θj\theta_j' = \theta_j(当 jqj \leq q)且 θj=0\theta_j' = 0(当 j>qj > q)。

ARMA模型:AR与MA的融合

ARMA模型的定义

自回归移动平均模型(ARMA)结合了AR模型和MA模型的特点,形成更一般的建模框架。

具有如下结构的模型称为自回归移动平均模型,简记为 ARMA(p,q)ARMA(p,q)

Xt=ϕ0+ϕ1Xt1+ϕ2Xt2++ϕpXtp+εtθ1εt1θ2εt2θqεtqX_t = \phi_0 + \phi_1X_{t-1} + \phi_2X_{t-2} + \cdots + \phi_pX_{t-p} + \varepsilon_t - \theta_1\varepsilon_{t-1} - \theta_2\varepsilon_{t-2} - \cdots - \theta_q\varepsilon_{t-q}

其中:

  • ϕp0\phi_p \neq 0θq0\theta_q \neq 0
  • εtWN(0,σ2)\varepsilon_t \sim WN(0, \sigma^2)
  • 对任意 s<ts < tE(Xsεt)=0E(X_s\varepsilon_t) = 0

特别当 ϕ0=0\phi_0 = 0 时,称为中心化 ARMA(p,q)ARMA(p,q) 模型

延迟算子表示

中心化 ARMA(p,q)ARMA(p,q) 模型可简记为:

Φ(B)Xt=Θ(B)εt\Phi(B)X_t = \Theta(B)\varepsilon_t

其中:

  • Φ(B)=1ϕ1Bϕ2B2ϕpBp\Phi(B) = 1 - \phi_1B - \phi_2B^2 - \cdots - \phi_pB^ppp 阶自回归系数多项式
  • Θ(B)=1θ1Bθ2B2θqBq\Theta(B) = 1 - \theta_1B - \theta_2B^2 - \cdots - \theta_qB^qqq 阶移动平均系数多项式

平稳性与可逆性条件

ARMA(p,q)ARMA(p,q) 模型同时涉及平稳性和可逆性:

  1. 平稳条件Φ(B)\Phi(B) 的根都在单位圆外

    • 由AR部分决定,与MA部分无关
    • 等价于特征根 λi<1|\lambda_i| < 1
  2. 可逆条件Θ(B)\Theta(B) 的根都在单位圆外

    • 由MA部分决定,与AR部分无关
    • 等价于特征根 zi>1|z_i| > 1

ARMA模型的统计性质

  1. 均值

    • 中心化模型:E(Xt)=0E(X_t) = 0
    • 非中心化模型:E(Xt)=ϕ01ϕ1ϕpE(X_t) = \frac{\phi_0}{1 - \phi_1 - \cdots - \phi_p}
  2. 自相关系数与偏自相关系数

    • 两者都是拖尾的
    • 这是ARMA模型最显著的特征

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]

📝 动手练一练

  1. 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)模型的特征。

  2. 可逆性判断 判断以下MA(2)模型是否可逆: Xt=εt+1.2εt1+0.35εt2X_t = \varepsilon_t + 1.2\varepsilon_{t-1} + 0.35\varepsilon_{t-2}

    参考答案:首先写出特征方程:1+1.2z+0.35z2=01 + 1.2z + 0.35z^2 = 0。解得两个根为 z11.4286z_1 \approx -1.4286z22.0z_2 \approx -2.0。两个根的模都大于1,因此该模型可逆。

本章小结

本节系统学习了移动平均模型(MA)和自回归移动平均模型(ARMA)的核心内容:

核心要点回顾

  1. MA模型:将序列表示为白噪声及其滞后项的线性组合,自相关系数q阶截尾,偏自相关系数拖尾
  2. 可逆性:MA模型的重要特性,确保自相关系数与模型一一对应,通过特征根在单位圆外判断
  3. ARMA模型:AR与MA的融合,自相关和偏自相关都呈拖尾特征
  4. 模型识别表:通过ACF和PACF的截尾/拖尾特征区分AR、MA、ARMA三类模型

行动清单

  1. 实战练习:使用Python生成不同参数的MA和ARMA序列,观察其ACF/PACF图,验证理论性质
  2. 模型识别:找一组实际时间序列数据,绘制样本ACF/PACF图,尝试判断适合的模型类型
  3. 可逆性验证:对给定的MA模型,计算其特征根,判断是否可逆,并尝试将其表示为AR(∞)形式

掌握这些模型的性质与识别方法,为后续的平稳序列建模奠定了坚实基础。在实际应用中,我们通常先通过样本自相关图初步判断模型类型,再通过参数估计和模型检验确定最终模型。

— 小象教研组

配套学习资源与课件
  • 第3章课件:平稳时间序列分析
    下载
  • 第3章配套代码
    下载
  • 时间序列分析推荐书籍(打包)(经典时序分析参考书合集)
    下载
  • 课程配套数据集(全课程实战数据)
    下载
🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加顾问免费领取;想学什么,直接告诉顾问
微信二维码:扫码添加课程顾问微信扫码添加顾问