📈 时间序列与深度学习预测

⏳ 第1讲 · 时间序列基础
📌 1. 时间序列定义

🧾 什么是时间序列?

时间序列是按时间顺序排列的一组观测值。 例如:每日气温、股票收盘价、网站访问量、脑电图信号。

  • 等间隔 vs 不等间隔
  • 单变量 (一个通道) vs 多变量 (多个通道)
  • 通常包含 趋势、季节性、周期、噪声
核心要素 时间索引 + 观测值

📐 数学表示

设 \( t_1 < t_2 < \dots < t_n \),则时间序列为:

\(\{ y_{t_1}, y_{t_2}, \dots, y_{t_n} \}\)

通常简写为 \(\{y_t\}\),其中 \(t=1,2,\dots,T\)

🎯 预测目标: 基于历史 \(y_1...y_t\) 预测 \(y_{t+1}, y_{t+2}...\)
⚖️ 2. 时间序列分类 · 平稳 / 非平稳

🧊 平稳 (Stationary)

  • 严平稳: 联合分布不随时间平移而改变
  • 弱平稳: 均值、方差为常数,自协方差仅与滞后有关
  • ✅ 容易建模,统计性质稳定
  • 📊 示例:白噪声、部分ARMA过程
检验方法 ADF检验、KPSS检验、观察滚动统计量

🌊 非平稳 (Non-stationary)

  • 均值、方差随时间变化,或存在趋势/季节性
  • ❌ 直接建模容易产生伪回归
  • 🔄 常用处理:差分、对数变换、季节分解
  • 📈 示例:股票价格、GDP、气温上升趋势
常见类型 趋势平稳 · 差分平稳 · 季节非平稳
特征平稳非平稳
均值常数随时间变化
方差稳定通常变化
自相关快速衰减衰减缓慢 / 持久
预测难度较低 (规律明显)较高 (需预处理)
实例振动信号零售额、流量
📊 3. 时间序列可视化基础

👁️ 可视化原则

  • ✔ 时间轴在 x 轴
  • ✔ 观察趋势、季节、异常
  • ✔ 使用折线图、散点图、自相关图
  • ✔ 对比多个序列时使用不同颜色

📈 模拟时间序列 (趋势 + 季节 + 噪声)

趋势+季节 (平稳化后) 非平稳 (上升趋势) 时间 t 观测值 y

⬆️ 橙色线:含季节与轻微趋势(可差分平稳);蓝色虚线:明显非平稳

🔁 自相关函数 (ACF) 示意 — 平稳序列

滞后 (Lag) ACF

平稳序列自相关通常快速衰减至零(虚线内)

🐍 代码速览 · 可视化 & 平稳性
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller

# 读取时间序列 (示例)
df = pd.read_csv('airline.csv', parse_dates=['Month'], index_col='Month')
ts = df['Passengers']

# 1. 可视化
plt.figure(figsize=(10,4))
plt.plot(ts, color='#f7b731', linewidth=2)
plt.title('航空乘客数 (1949-1960)')
plt.xlabel('时间'); plt.ylabel('乘客数')
plt.grid(True, alpha=0.3)
plt.show()

# 2. ADF 平稳性检验
result = adfuller(ts)
print(f'ADF 统计量: {result[0]:.4f}')
print(f'p-value: {result[1]:.6f}')
if result[1] < 0.05:
    print("✅ 序列平稳 (拒绝非平稳原假设)")
else:
    print("❌ 序列非平稳,建议差分或变换")

💡 实际分析中常结合 plot_acf 和 seasonal_decompose 深入探索。

🧩 时间序列建模流程 (深度学习视角)
原始序列 平稳化 差分/变换/分解 特征工程 滑动窗口/ACF/PACF 深度学习模型 LSTM / Transformer / CNN 预测 & 评估

🔁 从原始序列到深度学习预测的标准流程,平稳化是重要预处理。