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

季节效应分析与综合波动分析

约 63 分钟

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

指数平滑法与确定性综合分析

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

在上节课中,我们学习了非平稳序列确定性分析中的长期趋势拟合方法。本节课将深入探讨另外两种核心的确定性分析方法:指数平滑法和确定性综合分析。指数平滑法通过赋予近期观测值更高权重来捕捉序列的动态变化,而确定性综合分析则系统性地分解序列中的趋势、季节和随机成分,为商业预测和政策分析提供有力工具。学完本节,你将能够运用指数平滑模型进行短期预测,并能对复杂的时间序列进行完整的确定性分解与重构。

💡 核心导读

  1. 指数平滑的基本思想:近期观测对当前影响更大,权重随时间间隔呈指数衰减
  2. 简单指数平滑:适用于无趋势、无季节性的平稳序列,只能做一期有效预测
  3. Holt两参数指数平滑:引入趋势项,适用于含线性趋势的序列
  4. 季节效应分析:通过季节指数量化周期性波动,进行季节调整
  5. 确定性综合分析:将序列分解为趋势、季节和随机成分的加乘组合
  6. X-11过程:美国国情调查局开发的标准化季节调整方法

指数平滑法:从移动平均到指数加权

指数平滑的基本原理

移动平均法对窗口内的所有观测值赋予相同权重,这在实际应用中存在明显局限:近期信息通常比远期信息更具预测价值。指数平滑法正是为了解决这一问题而提出的。

核心思想:各期权重随时间间隔增大而呈指数衰减。设平滑系数为 α\alpha(0<α<10<\alpha<1),则第 tt 期的平滑值 x~t\tilde{x}_t 可表示为:

x~t=αxt+α(1−α)xt−1+α(1−α)2xt−2+⋯\tilde{x}_t = \alpha x_t + \alpha(1-\alpha)x_{t-1} + \alpha(1-\alpha)^2 x_{t-2} + \cdots

权重序列 α,α(1−α),α(1−α)2,…\alpha, \alpha(1-\alpha), \alpha(1-\alpha)^2, \ldots 构成一个几何级数,满足 ∑k=0∞α(1−α)k=1\sum_{k=0}^{\infty} \alpha(1-\alpha)^k = 1。

简单指数平滑(SES)

简单指数平滑适用于无明显趋势和季节性的序列。其递推公式为:

x~t=αxt+(1−α)x~t−1\tilde{x}_t = \alpha x_t + (1-\alpha)\tilde{x}_{t-1}

其中 x~t\tilde{x}_t 是第 tt 期的平滑值,α\alpha 是平滑系数。

参数确定经验:

  • 变化缓慢的序列:α\alpha 取较小值(如 0.05-0.2)
  • 变化迅速的序列:α\alpha 取较大值(如 0.2-0.3)
  • 经验表明 α\alpha 在 0.05-0.3 之间修匀效果较好

初始值设定:最简单的方法是令 x~0=x1\tilde{x}_0 = x_1。

预测特性:简单指数平滑的 ll 期预测值恒等于最后一期的平滑值:

x^T+l=x~T,l≥1\hat{x}_{T+l} = \tilde{x}_T, \quad l \geq 1

这意味着简单指数平滑只适合做一期预测,多期预测会失去意义。

Holt两参数指数平滑

当序列存在线性趋势时,简单指数平滑会产生系统性滞后。Holt两参数指数平滑通过引入趋势项解决这一问题。

模型结构:

  1. 水平方程:x~t=αxt+(1−α)(x~t−1+rt−1)\tilde{x}_t = \alpha x_t + (1-\alpha)(\tilde{x}_{t-1} + r_{t-1})
  2. 趋势方程:rt=γ(x~t−x~t−1)+(1−γ)rt−1r_t = \gamma(\tilde{x}_t - \tilde{x}_{t-1}) + (1-\gamma)r_{t-1}

其中 rtr_t 是第 tt 期的趋势估计值,γ\gamma 是趋势平滑系数。

初始值设定:

  • 水平初始值:x~0=x1\tilde{x}_0 = x_1
  • 趋势初始值:r0=xn−x1n−1r_0 = \frac{x_n - x_1}{n-1}(用初始区间内已有观测估计平均增量,nn 为初始区间长度;初值只能基于已观测样本,不能引用未来的 xn+1x_{n+1})

预测公式:ll 期预测值为:

x^T+l=x~T+l⋅rT\hat{x}_{T+l} = \tilde{x}_T + l \cdot r_T

当 rT>0r_T > 0 时序列呈递增趋势,rT<0r_T < 0 时呈递减趋势。

季节效应分析与确定性综合分析

季节指数的计算与解释

季节效应是指序列中固定周期的规律性波动。季节指数 SjS_j 用于量化第 jj 个季节相对于平均水平的偏离程度。

计算步骤:

  1. 计算周期内各期平均数:xˉj=1n∑i=1nxij\bar{x}_j = \frac{1}{n}\sum_{i=1}^n x_{ij}
  2. 计算总平均数:xˉ=1nm∑i=1n∑j=1mxij\bar{x} = \frac{1}{nm}\sum_{i=1}^n\sum_{j=1}^m x_{ij}
  3. 计算季节指数:Sj=xˉjxˉS_j = \frac{\bar{x}_j}{\bar{x}}

解释:

  • Sj>1S_j > 1:该季节的值通常高于平均水平
  • Sj<1S_j < 1:该季节的值通常低于平均水平
  • Sj≈1S_j \approx 1:该季节无明显季节效应

确定性综合分析模型

当序列同时受到趋势、季节和随机因素影响时,需要采用综合分析模型。常用模型包括:

  1. 加法模型:xt=Tt+St+Itx_t = T_t + S_t + I_t

    • 趋势、季节、随机三者相互独立
    • 季节波动的振幅不随趋势变化
  2. 乘法模型:xt=Tt×St×Itx_t = T_t \times S_t \times I_t

    • 三者相互影响
    • 季节波动的振幅随趋势变化
  3. 混合模型:

    • A类:xt=St×(Tt+It)x_t = S_t \times (T_t + I_t)
    • B类:xt=Tt×St+Itx_t = T_t \times S_t + I_t

模型选择依据:观察时序图中季节波动的振幅是否随趋势变化

  • 振幅恒定 → 加法模型
  • 振幅变化 → 乘法模型或混合模型

X-11过程:标准化的季节调整方法

X-11过程是美国国情调查局开发的季节调整程序,其核心是通过多次移动平均迭代提取各成分。

方法特色:

  1. 使用多次短期中心移动平均消除随机波动
  2. 使用周期移动平均消除趋势
  3. 使用交易周期移动平均消除交易日影响
  4. 共进行11次移动平均操作(故名X-11)

优势:相比简单的确定性分析,X-11过程能更干净地分离各成分,减少估计偏差。

Python实战:指数平滑与季节分解

"""
时间序列分析 4.2 课时配套实战代码
内容:指数平滑法 (简单指数平滑、Holt 线性趋势模型与 Holt-Winters 加法季节模型)
"""

import numpy as np
import pandas as pd
from statsmodels.tsa.api import SimpleExpSmoothing, Holt, ExponentialSmoothing

np.random.seed(42)
n_periods = 60  # 5 年月度数据
dates = pd.date_range(start='2019-01-01', periods=n_periods, freq='ME')

# 生成具备趋势与 12 周期季节性的序列
trend = 0.4 * np.arange(n_periods) + 15.0
season = np.sin(2 * np.pi * np.arange(n_periods) / 12) * 3.0
noise = np.random.normal(0, 0.5, n_periods)
data = pd.Series(trend + season + noise, index=dates, name='traffic')

train = data[:-6]
test = data[-6:]

# 1. 简单指数平滑 (SES)
ses_fit = SimpleExpSmoothing(train).fit(optimized=True)

# 2. Holt 线性趋势模型
holt_fit = Holt(train).fit(optimized=True)

# 3. Holt-Winters 季节模型 (加法趋势 + 加法季节)
hw_fit = ExponentialSmoothing(train, trend='add', seasonal='add', seasonal_periods=12).fit(optimized=True)

# 4. 外推 6 期预测并评估 RMSE
ses_pred = ses_fit.forecast(6)
holt_pred = holt_fit.forecast(6)
hw_pred = hw_fit.forecast(6)

ses_rmse = np.sqrt(np.mean((ses_pred.values - test.values) ** 2))
holt_rmse = np.sqrt(np.mean((holt_pred.values - test.values) ** 2))
hw_rmse = np.sqrt(np.mean((hw_pred.values - test.values) ** 2))

print(f"训练样本数: {len(train)}, 测试样本数: {len(test)}")
print(f"Holt-Winters 优化平滑参数:")
print(f"  alpha (水平平滑): {hw_fit.params['smoothing_level']:.4f}")
print(f"  beta (趋势平滑):  {hw_fit.params['smoothing_trend']:.4f}")
print(f"  gamma (季节平滑): {hw_fit.params['smoothing_seasonal']:.4f}")
print("\n各模型 6 步预测 RMSE 比较:")
print(f"  简单指数平滑 (SES) RMSE:       {ses_rmse:.4f}")
print(f"  Holt 线性趋势模型 RMSE:         {holt_rmse:.4f}")
print(f"  Holt-Winters 加法模型 RMSE:     {hw_rmse:.4f}")
print(f"Holt-Winters 显著优于基准: {hw_rmse < min(ses_rmse, holt_rmse)}")

运行结果:

训练样本数: 54, 测试样本数: 6
Holt-Winters 优化平滑参数:
  alpha (水平平滑): 0.0000
  beta (趋势平滑):  0.0000
  gamma (季节平滑): 0.0000

各模型 6 步预测 RMSE 比较:
  简单指数平滑 (SES) RMSE:       2.4001
  Holt 线性趋势模型 RMSE:         1.9617
  Holt-Winters 加法模型 RMSE:     0.5077
Holt-Winters 显著优于基准: True

📝 动手练一练

  1. 指数平滑系数分析 在简单指数平滑中,当 α=0.8\alpha=0.8 和 α=0.2\alpha=0.2 时,分别计算前5期观测值 [10,12,11,13,14][10, 12, 11, 13, 14] 的平滑序列(设 x~0=x1=10\tilde{x}_0 = x_1 = 10)。比较两种系数下平滑序列的波动性差异。

    👉 点击查看参考答案

    参考答案: α=0.8\alpha=0.8 时:x~1=10.0,x~2=11.6,x~3=11.12 (≈11.1),x~4=12.624 (≈12.6),x~5=13.7248 (≈13.7)\tilde{x}_1=10.0, \tilde{x}_2=11.6, \tilde{x}_3=11.12\,(\approx 11.1), \tilde{x}_4=12.624\,(\approx 12.6), \tilde{x}_5=13.7248\,(\approx 13.7) α=0.2\alpha=0.2 时:x~1=10.0,x~2=10.4,x~3=10.5,x~4=11.0,x~5=11.6\tilde{x}_1=10.0, \tilde{x}_2=10.4, \tilde{x}_3=10.5, \tilde{x}_4=11.0, \tilde{x}_5=11.6 大 α\alpha 值使平滑序列更敏感,波动更大;小 α\alpha 值修匀效果更强。

  2. 季节指数计算 某产品近三年季度销售额(万元)如下:

    年份 Q1 Q2 Q3 Q4
    2021 120 150 180 210
    2022 130 160 190 220
    2023 140 170 200 230

    计算各季度的季节指数,并解释其含义。

    参考答案: 季度平均:Q1=130, Q2=160, Q3=190, Q4=220 总平均:175 季节指数:Q1=0.743, Q2=0.914, Q3=1.086, Q4=1.257 第四季度销售额显著高于平均水平(指数>1),第一季度最低。

本章小结

本节系统介绍了非平稳序列确定性分析的两大核心方法:指数平滑法和确定性综合分析。

核心要点回顾:

  1. 指数平滑法通过指数衰减权重赋予近期观测更高重要性,包括:

    • 简单指数平滑(SES):适合平稳序列,仅能做一期有效预测
    • Holt两参数模型:引入趋势项,适合线性趋势序列
    • Holt-Winters模型:同时考虑趋势和季节,适合复杂序列
  2. 季节效应分析通过季节指数量化周期性波动,季节指数 SjS_j 反映第 jj 季节相对于平均水平的偏离程度。

  3. 确定性综合分析将序列分解为趋势、季节和随机成分的组合,模型选择取决于季节振幅是否随趋势变化。

  4. X-11过程是标准化的季节调整方法,通过多次移动平均迭代更干净地分离各成分。

📋 行动清单

  1. 对业务数据尝试三种指数平滑模型,比较预测精度
  2. 计算月度/季度数据的季节指数,识别业务周期规律
  3. 使用seasonal_decompose对实际序列进行加法/乘法分解
  4. 根据分解结果判断适用模型类型(加法/乘法/混合)

确定性分析方法虽然理论基础相对简单,但在商业预测、经济分析和政策制定中应用广泛。其优势在于直观易懂、计算高效,能快速提取序列的主要特征。然而,这些方法将无法解释的部分都归为随机波动,可能忽略序列中潜在的随机性结构信息,这为下节课要学习的随机性建模方法(ARIMA等)埋下了伏笔。

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 第4章课件:非平稳序列的确定性分析
    下载
  • 第4章配套代码
    下载
  • 时间序列分析推荐书籍(打包)
    经典时序分析参考书合集
    下载
  • 课程配套数据集
    全课程实战数据
    下载