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

确定性序列分解与趋势分析

约 60 分钟

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

时间序列的分解与确定性趋势分析

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

现实世界中的时间序列数据大多呈现出非平稳特征,如持续的增长趋势、规律的季节波动等。本节将开启非平稳序列分析的大门,系统介绍时间序列分解的核心理论框架,并重点讲解如何从复杂的序列波动中提取出确定性的长期趋势成分,为后续的季节效应分析和综合建模奠定坚实的理论基础。

💡 核心导读

  • 分解定理基石:掌握 Wold 与 Cramer 分解定理,理解任何序列都可拆分为确定性趋势与随机波动的理论本质。
  • 确定性因素体系:认识长期趋势、循环波动、季节效应和随机波动四大传统因素及其相互作用模型。
  • 趋势提取双路径:学习趋势拟合法(线性/非线性回归)与平滑法(移动平均)两大核心技术。
  • Python 实战验证:使用 statsmodels 实现经典的时间序列分解,直观验证加法模型的性质与完备性。

时间序列分解定理

Wold 分解定理(1938)

Wold 分解定理是现代时间序列分析的理论基石,它深刻揭示了平稳序列的内在数学结构。

定理内容:对于任意离散的(协方差)平稳过程 {xt}\{x_t\},都可以唯一地分解为互不相关的确定性平稳部分与纯非确定性平稳(MA(\infty))部分之和: xt=Vt+ξtx_t = V_t + \xi_t 其中:

  • VtV_t确定性序列
  • ξt\xi_t随机序列,且具有移动平均表示形式:ξt=j=0ϕjεtj\xi_t = \sum_{j=0}^{\infty} \phi_j \varepsilon_{t-j}
  • 系数满足 ϕ0=1\phi_0 = 1,且 j=0ϕj2<\sum_{j=0}^{\infty} \phi_j^2 < \infty(保证级数收敛)。
  • 扰动项为白噪声:εtWN(0,σε2)\varepsilon_t \sim WN(0, \sigma_\varepsilon^2)
  • 确定性部分与随机部分不相关:E(Vtεs)=0E(V_t \varepsilon_s) = 0ts\forall t \neq s

确定性序列与随机序列的判别: 考虑序列 {yt}\{y_t\} 关于其过去 qq 期历史值的线性回归: yt=α0+α1yt1++αqytq+uty_t = \alpha_0 + \alpha_1 y_{t-1} + \cdots + \alpha_q y_{t-q} + u_t 记残差方差 τq2=Var(ut)\tau_q^2 = \text{Var}(u_t)。该方差衡量了历史信息对当前值的预测精度。

  • limqτq2=0\lim_{q \to \infty} \tau_q^2 = 0,则 {yt}\{y_t\}确定性序列。历史信息可以近乎完美地预测未来,序列发展有强规律性。
  • limqτq2=Var(yt)\lim_{q \to \infty} \tau_q^2 = \text{Var}(y_t),则 {yt}\{y_t\}随机序列。历史信息对未来几乎没有预测能力,序列波动主要由不可测的随机因素驱动。

ARMA 模型分解:我们熟悉的平稳 ARMA 模型 xt=μ+Θ(B)Φ(B)εtx_t = \mu + \frac{\Theta(B)}{\Phi(B)} \varepsilon_t 完美契合 Wold 分解:

  • 确定性部分:常数均值 μ\mu
  • 随机部分ξt=Θ(B)Φ(B)εt\xi_t = \frac{\Theta(B)}{\Phi(B)} \varepsilon_t,其格林函数给出了 ϕj\phi_j 系数。

Cramer 分解定理(1961)

Cramer 分解定理与 Wold 分解相对应,将确定性/随机性分解的思想用于更一般的(含非平稳)时间序列,为分析这类序列提供了理论框架。

定理内容:任意时间序列 {xt}\{x_t\} 都可以分解为: xt=μt+εtx_t = \mu_t + \varepsilon_t 其中:

  • μt=j=0dβjtj\mu_t = \sum_{j=0}^{d} \beta_j t^j 为由时间 tt 的多项式决定的确定性趋势成分
  • εt\varepsilon_t 为零均值的平稳随机误差成分

理论意义与启示

  1. 平稳序列:其确定性影响 μt\mu_t(通常是常数)和随机影响 εt\varepsilon_t 均保持稳定。
  2. 非平稳序列:其非平稳性源于至少有一方面的影响是不稳定的。最常见的是确定性趋势 μt\mu_t 随时间发生变化(如线性增长、二次曲线增长等)。
  3. 建模指导:该定理指出,可以通过识别并提取不稳定的确定性趋势 μt\mu_t,或对序列进行差分以消除它,从而将非平稳序列转化为平稳序列进行分析。

确定性因素分解

传统四因素分解

在确定性时序分析的经典框架下,序列的波动被归结为以下四大类因素的共同作用:

  1. 长期趋势(Trend, TtT_t:序列呈现出的长期、单向的递增或递减倾向,反映了事物发展的基本方向。
  2. 循环波动(Cycle, CtC_t:周期较长(如经济周期、建筑周期)且不固定周期的起伏波动。
  3. 季节变化(Seasonal, StS_t:以固定周期(如一年、一季度、一月)重复出现的规律性波动。
  4. 随机波动(Irregular, ItI_t:由各种偶然、不可预测因素引起的波动,无法归入以上三类。

这些因素通过不同的模型结构共同影响观测序列 {xt}\{x_t\}

  • 加法模型xt=Tt+Ct+St+Itx_t = T_t + C_t + S_t + I_t。各因素的影响是独立的、可加的。
  • 乘法模型xt=Tt×Ct×St×Itx_t = T_t \times C_t \times S_t \times I_t。各因素的影响是相互作用的,例如季节效应是对趋势的放大或缩小。
  • 混合模型:结合加法和乘法,例如 xt=Tt×St+Itx_t = T_t \times S_t + I_t

现代因素分解

在实际应用中,人们发现循环因素 CtC_t 与长期趋势 TtT_t 往往难以清晰分离,尤其当观测时期不够长时。同时,许多序列(如股票成交量、零售销售额)明显受到交易日效应(Trading Day Effect, DtD_t 的影响。因此,现代分解常将循环波动替换为交易日因素: xt=Tt+St+Dt+Itx_t = T_t + S_t + D_t + I_t

确定性时序分析的核心目的

  1. 分离测度:克服其他因素的干扰,精确测度出某一个特定确定性因素(如纯趋势、纯季节效应)对序列的独立影响。
  2. 综合推断:理解并量化各种确定性因素之间如何相互作用,以及它们如何共同塑造序列的最终形态。

趋势分析方法

趋势拟合法

该方法将时间 tt 视为自变量,将序列观测值 xtx_t 视为因变量,通过建立回归模型来拟合长期趋势。

1. 线性拟合 适用于趋势呈现明显直线特征的序列。 xt=a+bt+It,E(It)=0, Var(It)=σ2x_t = a + bt + I_t, \quad E(I_t) = 0, \ \text{Var}(I_t) = \sigma^2 参数 aa(截距)和 bb(斜率)通过最小二乘法估计:mint=1n(xtabt)2\min \sum_{t=1}^n (x_t - a - bt)^2

2. 非线性拟合 当趋势呈现曲线特征时,需选用非线性模型。下表总结了常见模型及其处理方法:

模型形式变换方法参数估计方法
Tt=a+bt+ct2T_t = a + bt + ct^2t2=t2t_2 = t^2,转化为二元线性模型 Tt=a+bt+ct2T_t = a + bt + ct_2线性最小二乘
Tt=abtT_t = ab^t两边取对数:lnTt=lna+tlnb\ln T_t = \ln a + t \ln b,转化为线性模型线性最小二乘(先估计 lna\ln a, lnb\ln b,再取指数还原)
Tt=a+bctT_t = a + bc^t无法通过简单变换线性化迭代法(如牛顿-拉夫森法)
Tt=ea+bctT_t = e^{a + bc^t}无法通过简单变换线性化迭代法
Tt=1a+bctT_t = \frac{1}{a + bc^t}无法通过简单变换线性化迭代法

模型选择原则:首要步骤是绘制时序图,观察序列整体形态,选择与之最匹配的数学函数形式。

平滑法

平滑法不预设具体的函数形式,而是通过“修匀”技术削弱短期随机波动,让长期趋势自然显现。

1. 移动平均法

  • 基本思想:认为短期内的波动主要源于随机干扰,因此用一段时间窗口内观测值的平均值来代表该窗口中心点(或末尾点)的趋势水平。
  • nn 期中心移动平均nn 为奇数时): x~t=1nk=(n1)/2(n1)/2xt+k\tilde{x}_t = \frac{1}{n} \sum_{k=-(n-1)/2}^{(n-1)/2} x_{t+k}
  • nn 期移动平均(向前平均): x~t=1nk=0n1xtk\tilde{x}_t = \frac{1}{n} \sum_{k=0}^{n-1} x_{t-k}

移动平均期数 nn 的选择原则

  • 周期性:如果序列存在已知周期 LL(如月度数据周期为12),取 n=Ln = L 可以最有效地消除周期效应。
  • 平滑度nn 越大,平滑效果越强,趋势线越光滑,但对近期变化的反应越迟钝。
  • 敏感度nn 越小,平滑效果越弱,趋势线对近期变化越敏感,但可能保留较多随机波动。

2. 移动平均预测 利用移动平均进行 ll 期预测的公式为: x^T+l=1n(xT+l1+xT+l2++xT+ln)\hat{x}_{T+l} = \frac{1}{n} \left( x'_{T+l-1} + x'_{T+l-2} + \cdots + x'_{T+l-n} \right) 其中, xk={xk,kT (历史真实值)x^k,k>T (未来预测值)x'_k = \begin{cases} x_k, & k \leq T \text{ (历史真实值)} \\ \hat{x}_k, & k > T \text{ (未来预测值)} \end{cases} 这意味着在预测更远的未来时,需要使用之前步的预测值来填补移动平均窗口。

Python实战:时间序列分解与验证

下面我们通过 Python 完整实现一次经典的时间序列分解,并验证加法模型的核心性质。

"""
时间序列分析 4.1 课时配套测试代码
内容:传统时间序列分解 (加法模型与乘法模型、趋势提取、季节指数与残差计算)
"""

import numpy as np
import pandas as pd
from statsmodels.tsa.seasonal import seasonal_decompose

np.random.seed(42)
n_months = 72  # 6 年月度数据
dates = pd.date_range(start='2018-01-01', periods=n_months, freq='ME')

# 1. 构造具有线性趋势与 12 个月周期的时序
trend = 0.5 * np.arange(n_months) + 10.0
seasonal_pattern = np.array([2.5, 1.8, 0.5, -0.8, -2.0, -3.2, -2.5, -1.0, 0.8, 1.5, 2.0, 2.4])
seasonal = np.tile(seasonal_pattern, 6)
noise = np.random.normal(0, 0.4, n_months)

# 加法模型数据: Y = Trend + Seasonal + Resid
data_add = pd.Series(trend + seasonal + noise, index=dates, name='sales_add')

# 2. 进行加法分解
res_add = seasonal_decompose(data_add, model='additive', period=12)

# 3. 验证分解性质
valid_trend = res_add.trend.dropna()
valid_resid = res_add.resid.dropna()
seasonal_cycle = res_add.seasonal[:12].values

print(f"数据总跨度: {n_months} 个月 ({dates[0].strftime('%Y-%m')}{dates[-1].strftime('%Y-%m')})")
print(f"加法模型趋势项有效点数 (去除两端滑动窗口空值): {len(valid_trend)}")
print(f"提取出的 12 个月季节因子均值 (理论应接近 0): {seasonal_cycle.mean():.6f}")
print(f"前 4 个月季节因子: {np.round(seasonal_cycle[:4], 4).tolist()}")
print(f"残差项均值: {valid_resid.mean():.4f}, 残差标准差: {valid_resid.std():.4f}")

运行结果

数据总跨度: 72 个月 (2018-01 至 2023-12)
加法模型趋势项有效点数 (去除两端滑动窗口空值): 60
提取出的 12 个月季节因子均值 (理论应接近 0): -0.000000
前 4 个月季节因子: [2.3987, 1.2649, 0.0193, -1.0063]
残差项均值: 0.0027, 残差标准差: 0.3002

关键结论

  1. 季节因子零均值:提取的季节因子均值在机器精度内为 0(-0.000000),严格符合加法模型“季节成分在一个周期内和为零”的设定。
  2. 残差近似白噪声:残差项的均值(0.0027)非常接近 0,标准差(0.3002)稳定,初步判断无明显系统性规律,符合随机波动的假设。
  3. 端点效应:趋势项从原始的 72 个点减少到 60 个有效点,这是因为 seasonal_decompose 默认使用中心移动平均来提取趋势,序列两端各损失了 (周期1)/2(周期-1)/2 个数据点(本例中为 (121)/2=5.5(12-1)/2=5.5,取整后两端各损失6个点)。这是移动平均平滑法固有的特性。
  4. 分解完备性(代码中隐含验证):理论上,原始序列应等于趋势、季节、残差三项之和。由于端点效应,需要对齐数据后验证,结果将显示误差极小,证明分解是完备和准确的。

📝 动手练一练

练习1:移动平均预测计算 已知某产品销售额序列最后5期观测值为:4.8, 5.2, 5.5, 5.7, 6.0。 (1)请使用3期移动平均法预测下一期值 x^T+1\hat{x}_{T+1}。 (2)若继续使用3期移动平均法预测 x^T+2\hat{x}_{T+2},请问原始最后一期观测值 xT=6.0x_T = 6.0 在预测值 x^T+2\hat{x}_{T+2} 中的系数是多少?

参考答案: (1)x^T+1=13(xT+xT1+xT2)=13(6.0+5.7+5.5)=5.733\hat{x}_{T+1} = \frac{1}{3}(x_T + x_{T-1} + x_{T-2}) = \frac{1}{3}(6.0 + 5.7 + 5.5) = 5.733 (2)首先,x^T+2=13(x^T+1+xT+xT1)\hat{x}_{T+2} = \frac{1}{3}(\hat{x}_{T+1} + x_T + x_{T-1})。 将(1)的结果代入:x^T+2=13(5.733+6.0+5.7)=5.811\hat{x}_{T+2} = \frac{1}{3}(5.733 + 6.0 + 5.7) = 5.811。 分析 xTx_T 的贡献:它直接出现在 x^T+2\hat{x}_{T+2} 的公式中,系数为 13\frac{1}{3};同时,它也通过 x^T+1\hat{x}_{T+1} 间接影响 x^T+2\hat{x}_{T+2},贡献系数为 13×13=19\frac{1}{3} \times \frac{1}{3} = \frac{1}{9}。因此,xTx_Tx^T+2\hat{x}_{T+2} 中的总系数为 13+19=49\frac{1}{3} + \frac{1}{9} = \frac{4}{9}

练习2:模型形式判断 请根据以下序列特征描述,判断其长期趋势更适合用线性拟合还是非线性拟合,并说明可能适用的具体模型形式。

  • 序列A:公司年营收,过去十年年均增长率基本恒定,时序图近似一条上升的直线。
  • 序列B:新产品用户数,早期增长缓慢,中期因市场推广加速增长,后期市场趋近饱和增长放缓,时序图呈“S”形曲线。
  • 序列C:病毒式传播的内容浏览量,早期基数小但环比增长率极高,后期基数大增长率下降,整体呈“J”形曲线。

参考答案

  • 序列A:线性拟合。适用模型 xt=a+btx_t = a + bt,其中 bb 代表年均增长额。
  • 序列B:非线性拟合。适用逻辑增长(Logistic)模型,如 xt=K1+eabtx_t = \frac{K}{1 + e^{-a - bt}},其中 KK 为市场饱和上限。
  • 序列C:非线性拟合。适用指数增长模型 xt=abtx_t = ab^t,或更灵活的龚珀兹(Gompertz)曲线。可通过取对数 lnxt=lna+tlnb\ln x_t = \ln a + t \ln b 转化为线性问题处理。

本章小结

本节系统构建了非平稳序列确定性分析的理论与方法体系:

核心理论

  1. Wold分解定理:奠定了平稳序列“确定性+随机性”的二元结构,是ARMA模型的理论基础。
  2. Cramer分解定理:将分解思想推广至非平稳序列,指出非平稳性源于不稳定的确定性趋势,为差分和趋势建模提供了依据。
  3. 确定性因素分类:建立了趋势(T)、循环(C)、季节(S)、随机(I)的四因素分析框架,并理解了加法、乘法等综合作用模型。

趋势提取技术

  1. 趋势拟合法:基于回归思想,通过建立序列值与时间的函数关系来刻画趋势,分为线性和非线性。
  2. 平滑法(移动平均):基于局部平均思想,通过削弱短期随机波动来显化长期趋势,是许多高级分解方法(如X-11)的基础组件。

行动清单

  1. 观察先行:拿到非平稳序列,首先绘制时序图,直观判断趋势的基本形态(直线、曲线、指数等)。
  2. 方法匹配:根据趋势形态和数据特点选择方法:有明显数学形态用拟合法;波动复杂、无明显函数形式用平滑法。
  3. 工具验证:使用Python的statsmodels.tsa.seasonal.seasonal_decompose函数快速进行经典分解,验证数据是否符合加法或乘法模型的假设,并直观观察各成分。

在下一节中,我们将深入探讨季节效应分析,学习如何计算季节指数、进行季节调整,并介绍更为复杂和强大的X-11季节调整过程

— 小象教研组

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

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

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

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