时间序列是按时间顺序排列的一组观测值。 例如:每日气温、股票收盘价、网站访问量、脑电图信号。
趋势、季节性、周期、噪声设 \( t_1 < t_2 < \dots < t_n \),则时间序列为:
通常简写为 \(\{y_t\}\),其中 \(t=1,2,\dots,T\)
| 特征 | 平稳 | 非平稳 |
|---|---|---|
| 均值 | 常数 | 随时间变化 |
| 方差 | 稳定 | 通常变化 |
| 自相关 | 快速衰减 | 衰减缓慢 / 持久 |
| 预测难度 | 较低 (规律明显) | 较高 (需预处理) |
| 实例 | 振动信号 | 零售额、流量 |
⬆️ 橙色线:含季节与轻微趋势(可差分平稳);蓝色虚线:明显非平稳
平稳序列自相关通常快速衰减至零(虚线内)
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 深入探索。
🔁 从原始序列到深度学习预测的标准流程,平稳化是重要预处理。