3. 数据探索与可视化
在时间序列建模流程中,数据探索与可视化是连接原始数据与模型选择的关键桥梁。本章将系统讲解三种核心可视化工具——折线图、自相关图(ACF)与偏自相关图(PACF)的绘制原理、解读方法及工程实践要点。通过本章学习,你将能够从视觉上快速判断序列的平稳性、季节性、趋势成分,并为后续的模型定阶(如 ARIMA 的 p、d、q 参数)提供直接依据。
3.1 折线图:序列的“心电图”
折线图是时间序列分析最基础的图形,它将时间作为横轴、观测值作为纵轴,直观展示序列的整体走势、波动幅度和异常点。在工程实践中,折线图通常作为数据探索的第一步,帮助我们回答以下问题:
- 趋势性:序列是否存在长期上升或下降的单调趋势?
- 季节性:序列是否呈现周期性重复的波动模式?
- 平稳性:序列的均值和方差是否随时间发生明显变化?
- 异常值:是否存在远离正常范围的孤立点或突变点?
工程提示:绘制折线图时,建议将时间索引显式设置为 x 轴刻度,避免使用默认整数索引。对于高频数据(如分钟级),可先进行重采样(resample)降频,再绘制折线图,以提升图形可读性。
以下是一个典型的折线图绘制代码示例(Python + Matplotlib):
import matplotlib.pyplot as plt
import pandas as pd
# 假设 df 包含时间序列数据,索引为 DatetimeIndex
plt.figure(figsize=(12, 5))
plt.plot(df.index, df['value'], color='#3498db', linewidth=1.5)
plt.title('时间序列折线图', fontsize=14, color='#2c3e50')
plt.xlabel('时间', fontsize=12)
plt.ylabel('观测值', fontsize=12)
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
关键解读指标:
- 趋势线斜率:正斜率表示增长趋势,负斜率表示下降趋势。
- 波动幅度:振幅随时间扩大或缩小,提示异方差性。
- 周期性:相邻波峰/波谷的时间间隔是否固定。
3.2 自相关图(ACF):序列的“记忆长度”
自相关函数(ACF)衡量的是时间序列与其滞后版本之间的线性相关性。ACF 图以滞后阶数(lag)为横轴、自相关系数为纵轴,并通常绘制 95% 置信区间带(蓝色虚线区域)。ACF 图的核心用途包括:
- 判断平稳性:平稳序列的 ACF 通常快速衰减到零附近;非平稳序列的 ACF 衰减缓慢或呈“拖尾”形态。
- 识别季节性:在季节性周期对应的滞后阶数上,ACF 会出现显著峰值。
- 确定 MA 阶数(q):对于 ARIMA 模型,ACF 在 q 阶后截尾(突然降为不显著)是 MA(q) 过程的典型特征。
常见误区:ACF 图中的置信区间是基于白噪声假设计算的。当序列存在强自相关时,置信区间可能偏窄,导致误判。建议结合 Ljung-Box 检验进行统计确认。
绘制 ACF 图的典型代码(使用 statsmodels):
from statsmodels.graphics.tsaplots import plot_acf
import matplotlib.pyplot as plt
plot_acf(df['value'], lags=40, alpha=0.05, title='自相关图 (ACF)')
plt.tight_layout()
plt.show()
3.3 偏自相关图(PACF):剔除中间影响的“净相关”
偏自相关函数(PACF)在计算滞后 k 阶的相关性时,剔除了中间 1 到 k-1 阶滞后的间接影响,只保留“纯”的 k 阶直接相关性。PACF 图的主要应用场景:
- 确定 AR 阶数(p):对于 AR(p) 过程,PACF 在 p 阶后截尾。
- 区分 AR 与 MA 行为:结合 ACF 和 PACF 的截尾/拖尾模式,可以初步判断模型类型。
- 识别混合模型:当 ACF 和 PACF 均呈现拖尾时,提示可能需要 ARMA 或 ARIMA 模型。
绘制 PACF 图的典型代码:
from statsmodels.graphics.tsaplots import plot_pacf
plot_pacf(df['value'], lags=40, alpha=0.05, method='ywm', title='偏自相关图 (PACF)')
plt.tight_layout()
plt.show()
ACF 与 PACF 对比速查表:
| 特征 | ACF(自相关函数) | PACF(偏自相关函数) |
|---|---|---|
| 定义 | 序列与自身滞后版本的相关系数 | 剔除中间滞后影响后的“净”相关系数 |
| AR(p) 过程 | 拖尾(指数衰减或正弦衰减) | p 阶后截尾 |
| MA(q) 过程 | q 阶后截尾 | 拖尾 |
| ARMA(p,q) 过程 | 拖尾 | 拖尾 |
| 非平稳序列 | 衰减缓慢,通常为正且持续 | 第一阶接近 1,后续快速下降 |
| 季节性序列 | 在季节周期滞后处出现显著峰值 | 在季节周期滞后处也可能出现峰值 |
3.4 三图联动的工程解读流程
在实际工程中,我们通常将折线图、ACF 图、PACF 图并列展示,形成“三图联动”的分析框架。以下是一个标准解读流程:
- 第一步:看折线图——判断序列是否存在明显趋势或季节性。若存在,先进行差分或季节差分,使序列平稳。
- 第二步:看 ACF 图——观察自相关系数的衰减速度。若衰减缓慢,提示序列非平稳,需要进一步差分。
- 第三步:看 PACF 图——结合 ACF 的截尾/拖尾模式,初步确定 AR 阶数 p 和 MA 阶数 q。
- 第四步:交叉验证——使用信息准则(AIC/BIC)对候选模型进行定阶,避免仅依赖视觉判断。
工程经验:
- 对于金融时间序列(如股票收益率),ACF 和 PACF 通常呈现“快速衰减”特征,提示序列接近白噪声。
- 对于气象或传感器数据,ACF 往往在低阶滞后处显著,且存在明显的日/周季节性周期。
- 当 ACF 和 PACF 均出现“拖尾”时,优先尝试 ARMA(1,1) 作为基线模型。
3.5 常见陷阱与避坑指南
| 陷阱 | 表现 | 解决方案 |
|---|---|---|
| 过度解读置信区间 | 将刚好落在置信区间边界上的峰值误判为显著 | 结合 Ljung-Box 检验的 p 值综合判断 |
| 忽略季节性 | ACF 在季节周期处出现显著峰值,但被误认为 MA 行为 | 先进行季节差分,再观察 ACF/PACF |
| 样本量不足 | 滞后阶数过多导致置信区间过宽,失去参考价值 | 一般建议 lags ≤ n/4,且不超过 40 |
| 数据预处理不当 | 缺失值或异常值导致 ACF 出现虚假相关性 | 绘制折线图时先标记异常点,进行插值或截断处理 |
重要提醒:ACF 和 PACF 的解读结果应作为模型选择的参考依据,而非唯一标准。最终模型定阶必须结合信息准则(AIC/BIC)、残差诊断和业务场景综合确定。切勿盲目追求“视觉完美”的截尾模式。