好的,我来帮你系统梳理 时间序列预测中的 ARIMA 模型,从概念、原理到建模步骤,让你快速理解和应用。
1️⃣ ARIMA 模型简介
ARIMA 是 AutoRegressive Integrated Moving Average 的缩写,即 自回归-差分-移动平均模型。
- 应用场景:时间序列预测,如股票价格、销售额、气温等
- 特点:
- 适用于 非平稳时间序列(通过差分变平稳)
- 同时考虑 自回归 (AR) 和 移动平均 (MA)
2️⃣ ARIMA 模型组成
ARIMA(p,d,q) 三个参数含义:
参数 | 含义 |
---|---|
p | 自回归阶数(AR,AutoRegressive) |
d | 差分阶数(I,Integrated) |
q | 移动平均阶数(MA,Moving Average) |
2.1 自回归 AR(p)
- 用过去 p 个时间点的值预测当前值:
Xt=ϕ1Xt−1+ϕ2Xt−2+…+ϕpXt−p+ϵt
2.2 移动平均 MA(q)
- 用过去 q 个误差项预测当前值:
Xt=ϵt+θ1ϵt−1+…+θqϵt−q
2.3 差分 I(d)
- 对非平稳序列进行 d 阶差分,使序列平稳:
Yt=Xt−Xt−1(一阶差分)
3️⃣ ARIMA 建模流程
3.1 检查平稳性
- 平稳性要求:均值、方差随时间不变
- 方法:
- 绘图:时序图、ACF/PACF
- 统计检验:ADF(Augmented Dickey-Fuller)检验
from statsmodels.tsa.stattools import adfuller
result = adfuller(time_series)
print('ADF检验 p-value:', result[1])
3.2 差分处理
- 若非平稳,进行差分:
diff_series = time_series.diff().dropna()
3.3 确定 p 和 q
- ACF(自相关函数) → 确定 MA(q) 阶数
- PACF(偏自相关函数) → 确定 AR(p) 阶数
3.4 模型训练
from statsmodels.tsa.arima.model import ARIMA
model = ARIMA(time_series, order=(p, d, q))
result = model.fit()
print(result.summary())
3.5 模型诊断
- 检查残差是否 白噪声
- 使用
plot_diagnostics
可视化:
result.plot_diagnostics(figsize=(10,6))
3.6 预测
forecast = result.forecast(steps=10) # 预测未来10个时间点
print(forecast)
4️⃣ ARIMA 模型优缺点
优点:
- 对短期预测精度高
- 模型理论成熟,易解释
缺点:
- 对季节性不敏感(需使用 SARIMA)
- 依赖历史数据,长期预测效果差
- 参数选择需谨慎(p,d,q)
5️⃣ ARIMA 与 SARIMA 区别
模型 | 说明 |
---|---|
ARIMA | 无季节性,适用于非平稳序列 |
SARIMA | 增加季节性参数 (P,D,Q,s),适用于季节性序列 |
6️⃣ 总结
- 核心思想:利用自回归和移动平均对平稳化后的时间序列进行建模
- 建模步骤:
- 平稳性检验(ADF)
- 差分处理使序列平稳
- 根据 ACF/PACF 确定 p/q
- 训练 ARIMA 模型
- 模型诊断与残差分析
- 预测未来数据
ARIMA 是时间序列分析基础,理解 AR、I、MA 及建模流程,对于金融预测、销售预测和气象预测都非常重要。
发表回复