📈 时间序列预测:从零到实战

第一课 · 基础篇
📌 1. 时间序列定义 Definition

时间序列 是按照时间顺序排列的一组观测值。每个观测值对应一个特定时间点(或时间段), 相邻观测之间通常具有时间依赖性。简单说,就是“把数据按时间排成队”。

🌱 例子 每日气温、股票收盘价、网站每小时访问量、心电图信号……
时间序列 = 时间 + 数值 t₁ t₂ t₃ t₄ t₅ t₆
📊 2. 时间序列分类 Stationary / Non‑stationary

✅ 平稳序列

  • 统计性质(均值、方差)不随时间变化
  • 没有趋势、季节性等长期模式
  • 容易建模,如 ARMA
📘 举例 白噪声、差分后的平稳序列

⚠️ 非平稳序列

  • 均值/方差不恒定,有趋势、季节或周期
  • 大部分真实数据都是非平稳的
  • 需要差分、变换等处理
📘 举例 股票价格、逐年增长的GDP
特征平稳序列非平稳序列
均值常数随时间变化
方差稳定通常变化
自相关短期相关长期相关
预测难度较低较高(需预处理)
典型处理方法直接建模差分、对数变换、分解
平稳 (左) vs 非平稳 (右) 均值恒定 趋势上升
🚀 3. 预测应用场景 Applications

🏭 商业 & 经济

  • 零售销量预测
  • 股票/期货价格
  • GDP、失业率
  • 电力负荷预测

🌤️ 自然科学 & 工程

  • 天气预报 (温度/降雨)
  • 地震波分析
  • 物联网传感器数据
  • 交通流量预测
📈 金融 股票 · 汇率 · 风险 🌦️ 气象 温度 · 降雨 · 风速 🏭 工业 电力 · 传感器 · 流量 时间序列预测引擎
🐍 Python 快速体验 Code
# 导入常用库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 生成一个简单的时间序列 (非平稳 + 趋势)
dates = pd.date_range(start='2024-01-01', periods=100, freq='D')
values = np.linspace(10, 50, 100) + np.random.normal(0, 2, 100)

ts = pd.Series(values, index=dates)
print(ts.head())

# 快速可视化
plt.figure(figsize=(10, 4))
plt.plot(ts, color='#ea8d4a', linewidth=2)
plt.title('示例时间序列 (非平稳)', fontsize=14)
plt.xlabel('时间')
plt.ylabel('数值')
plt.grid(True, linestyle='--', alpha=0.5)
plt.show()