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

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

约 63 分钟

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

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

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

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

💡 核心导读

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

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

指数平滑的基本原理

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

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

x~t=αxt+α(1α)xt1+α(1α)2xt2+\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~t1\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,l1\hat{x}_{T+l} = \tilde{x}_T, \quad l \geq 1

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

Holt两参数指数平滑

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

模型结构

  1. 水平方程x~t=αxt+(1α)(x~t1+rt1)\tilde{x}_t = \alpha x_t + (1-\alpha)(\tilde{x}_{t-1} + r_{t-1})
  2. 趋势方程rt=γ(x~tx~t1)+(1γ)rt1r_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=xnx1n1r_0 = \frac{x_n - x_1}{n-1}(用初始区间内已有观测估计平均增量,nn 为初始区间长度;初值只能基于已观测样本,不能引用未来的 xn+1x_{n+1}

预测公式ll 期预测值为:

x^T+l=x~T+lrT\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=1ni=1nxij\bar{x}_j = \frac{1}{n}\sum_{i=1}^n x_{ij}
  2. 计算总平均数:xˉ=1nmi=1nj=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:该季节的值通常低于平均水平
  • Sj1S_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章配套代码
    下载
  • 时间序列分析推荐书籍(打包)(经典时序分析参考书合集)
    下载
  • 课程配套数据集(全课程实战数据)
    下载
🎁 免费学习资源

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

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

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