4、时间序列分析入门:理解时间序列的基本概念(趋势、季节性、周期性、随机性),掌握平稳性检验和差分方法
旅游市场预测的核心挑战在于:游客量、旅游收入、酒店入住率等指标并非随机波动,而是受到季节更替、节假日分布、经济周期、突发事件等多重因素叠加影响。时间序列分析正是处理这类按时间顺序排列的数据的核心工具。本章将系统讲解时间序列的四大基本成分(趋势、季节性、周期性、随机性),并重点掌握平稳性检验与差分处理两大关键技能——这是从"看图说话"走向"科学建模"的分水岭。
4.1 时间序列的四大基本成分
时间序列是将某一指标按时间顺序排列的观测值集合。在旅游场景中,常见的序列包括月度游客量、季度旅游收入、每日景区门票销售等。理解序列的构成成分,是选择预测模型的前提。通常我们将时间序列分解为四种成分:
| 成分 | 定义 | 旅游场景示例 | 识别方法 |
|---|---|---|---|
| 趋势 (Trend, T) | 长期方向性变化,反映持续增长或下降 | 某城市近10年游客量年均增长8%,反映目的地知名度提升 | 移动平均、线性回归拟合、HP滤波 |
| 季节性 (Seasonal, S) | 固定周期(年/月/周)内的规律波动 | 海滨城市每年7-8月游客量达到峰值,冬季为低谷 | 季节指数、自相关函数(ACF)在滞后12处显著 |
| 周期性 (Cyclical, C) | 非固定周期的波动,通常与经济周期相关 | 每3-5年出现一次出境游热潮,与汇率、国际形势相关 | 频谱分析、经济景气指数对照 |
| 随机性 (Irregular, I) | 不可预测的随机波动,由突发事件引起 | 疫情导致某月游客量骤降80%,或某次大型演唱会带来短期激增 | 残差分析、白噪声检验 |
实际应用中,序列通常以加法模型(Y = T + S + C + I)或乘法模型(Y = T × S × C × I)组合。加法模型适用于各成分相互独立、波动幅度不随趋势变化的情况;乘法模型适用于季节波动幅度随趋势水平变化的情况——例如旅游旺季的波动幅度通常远大于淡季,因此旅游数据更常使用乘法模型。
4.2 平稳性:时间序列分析的核心前提
平稳性是指时间序列的统计性质(均值、方差、自协方差)不随时间变化。严格平稳要求联合分布不变,实际应用中通常使用弱平稳(宽平稳)条件:
- 均值恒定:序列围绕固定水平波动,无趋势成分
- 方差恒定:波动幅度不随时间变化
- 自协方差仅与滞后阶数有关:两个时间点的相关性只取决于间隔长度,与具体时间点无关
为什么平稳性如此重要?因为大多数时间序列模型(如ARIMA、指数平滑)都假设序列是平稳的。如果序列非平稳,模型参数估计将不稳定,预测结果不可靠。例如,直接用带趋势的游客量数据拟合AR模型,会导致回归系数被趋势主导,忽略真实的短期波动规律。
4.2.1 平稳性的直观判断
在正式检验之前,可以通过以下方式快速判断:
- 时序图观察:若序列呈现明显上升/下降趋势,或波动幅度随时间变化,则非平稳
- 自相关图(ACF):平稳序列的ACF通常在滞后几阶后迅速衰减到0附近;非平稳序列的ACF衰减极慢,呈现"拖尾"现象
- 滚动统计量:将序列分段计算均值和标准差,若各段差异明显,则非平稳
4.2.2 单位根检验:ADF检验
最常用的正式检验方法是Augmented Dickey-Fuller (ADF) 检验。其核心思想是检验序列是否存在单位根:
原假设 H0:序列存在单位根(非平稳)
备择假设 H1:序列不存在单位根(平稳)
ADF检验回归方程:
Δy_t = α + βt + γy_{t-1} + Σδ_i·Δy_{t-i} + ε_t
判断规则:
- 若ADF统计量 < 临界值(通常取1%、5%、10%显著性水平)
- 且p值 < 0.05,则拒绝H0,认为序列平稳
- 反之,p值 > 0.05,则不能拒绝H0,序列非平稳
在Python中,可以使用statsmodels库的adfuller函数执行检验。需要注意,ADF检验对滞后阶数的选择敏感,通常使用AIC或BIC准则自动确定最优滞后阶数。
4.3 差分方法:让非平稳序列"变平稳"
当序列非平稳时,差分是最常用的平稳化手段。差分通过计算相邻观测值之差,消除趋势和季节性成分。
4.3.1 一阶差分
一阶差分定义为:Δy_t = y_t - y_{t-1}。它适用于消除线性趋势。例如,某景区月游客量从1月的10万增长到12月的21万,呈近似线性增长,一阶差分后各月差值将围绕某个常数波动,序列变为平稳。
4.3.2 季节差分
对于季节性数据,需要执行季节差分:Δ_s y_t = y_t - y_{t-s},其中s为季节周期长度(月度数据s=12,季度数据s=4)。季节差分消除的是固定周期的季节性成分。例如,今年1月与去年1月的差值,消除了季节性影响,反映的是年度同比变化。
4.3.3 差分阶数的确定
| 差分类型 | 公式 | 适用场景 | 注意事项 |
|---|---|---|---|
| 一阶差分 | Δy_t = y_t - y_{t-1} | 线性趋势 | 差分后序列长度减1 |
| 二阶差分 | Δ²y_t = Δy_t - Δy_{t-1} | 二次曲线趋势 | 极少使用,易过度差分 |
| 季节差分 | Δ_s y_t = y_t - y_{t-s} | 固定季节周期 | s=12(月度)或s=4(季度) |
| 一阶+季节差分 | ΔΔ_s y_t | 趋势+季节性同时存在 | ARIMA(p,d,q)(P,D,Q)s 的基础 |
- 绘制时序图,观察趋势和季节性
- 执行ADF检验,确认非平稳
- 若存在趋势 → 一阶差分
- 若存在季节性 → 季节差分
- 差分后再次执行ADF检验,验证平稳性
- 若仍非平稳 → 考虑二阶差分或组合差分
- 注意:差分次数不宜过多,否则会引入额外的相关性
4.4 案例拆解:某滨海城市月度游客量平稳化处理
背景与目标:某滨海旅游城市收集了2018年1月至2023年12月共72个月的月度游客量数据(单位:万人次)。目标是将该序列处理为平稳序列,为后续ARIMA建模做准备。
初始现象:时序图显示游客量呈明显上升趋势,且每年7-8月出现高峰,12-2月为低谷,波动幅度随趋势增大——典型的乘法模型特征。
关键输入数据(部分):
月份 游客量(万人次)
2018-01 45.2
2018-02 38.7
2018-03 52.3
...
2023-07 168.5
2023-08 175.2
2023-12 89.4
分析判断过程:
- ADF检验原始序列:p值 = 0.42 > 0.05,无法拒绝单位根假设,序列非平稳
- 一阶差分:Δy_t = y_t - y_{t-1},再次ADF检验,p值 = 0.03 < 0.05,但ACF图在滞后12处仍显著,说明季节性未消除
- 季节差分:Δ_12 y_t = y_t - y_{t-12},ADF检验p值 = 0.001 < 0.01,序列平稳
- 组合差分验证:同时进行一阶和季节差分,ADF检验p值 = 0.0005,但序列方差增大,存在过度差分风险
实际操作步骤:
# Python代码示例
import pandas as pd
from statsmodels.tsa.stattools import adfuller
# 读取数据
df = pd.read_csv('tourist.csv', index_col='月份', parse_dates=True)
y = df['游客量']
# 原始序列ADF检验
result1 = adfuller(y)
print(f'原始序列 p-value: {result1[1]:.4f}')
# 一阶差分
y_diff1 = y.diff().dropna()
result2 = adfuller(y_diff1)
print(f'一阶差分 p-value: {result2[1]:.4f}')
# 季节差分(s=12)
y_diff12 = y.diff(12).dropna()
result3 = adfuller(y_diff12)
print(f'季节差分 p-value: {result3[1]:.4f}')
# 组合差分
y_diff_both = y.diff().diff(12).dropna()
result4 = adfuller(y_diff_both)
print(f'组合差分 p-value: {result4[1]:.4f}')
结果对比:
| 处理方式 | ADF p值 | 是否平稳 | 备注 |
|---|---|---|---|
| 原始序列 | 0.42 | 否 | 趋势+季节性明显 |
| 一阶差分 | 0.03 | 是(但季节性残留) | ACF在滞后12处仍显著 |
| 季节差分 | 0.001 | 是 | 推荐方案 |
| 组合差分 | 0.0005 | 是 | 方差增大,慎用 |
风险与代价:选择季节差分而非组合差分,是因为组合差分虽然p值更低,但会损失更多信息,且可能导致过度差分——即序列变得"过于平稳",丢失了短期动态相关性,反而降低模型预测精度。
复盘经验:对于旅游数据,季节差分往往比一阶差分更有效,因为季节性成分的贡献通常大于趋势成分。建议先做季节差分,再检验是否还需要一阶差分。同时,差分后的序列应检查残差是否为白噪声,以确保信息提取充分。
4.5 常见误区与总结复盘
过度差分会导致序列丢失重要的短期相关性,使模型退化为随机游走预测。判断标准:差分后ACF应快速衰减,但不应全部落在置信区间内且无任何显著滞后。
旅游数据常受政策、疫情、大型活动等影响,产生结构性突变(如2020年疫情导致断崖式下跌)。此时单纯差分无法解决,需引入干预分析或分段建模。
- 时间序列四成分:趋势(T)、季节性(S)、周期性(C)、随机性(I)
- 平稳性是建模前提:均值、方差、自协方差恒定
- ADF检验是主流方法,p值<0.05拒绝单位根假设
- 差分是平稳化核心工具:一阶差分去趋势,季节差分去季节性
- 差分阶数宁少勿多,通过ACF和ADF双重验证
- 旅游数据优先考虑季节差分,再评估是否需要一阶差分
掌握时间序列的成分分解与平稳化处理,是进入ARIMA、指数平滑等高级预测模型的基石。下一阶段,我们将基于平稳序列,进一步探讨自相关函数(ACF)与偏自相关函数(PACF)的识别方法,为模型定阶奠定基础。