← 返回模型库
MODEL / 预测

时间序列 ARIMA

存在自相关或季节性的序列做中短期预测,例如销量、负荷、降水强度,样本量在数十个时点以上。

核心公式

\left(1-\sum_{i=1}^{p}\phi_i L^{i}\right)(1-L)^{d}x_t=\left(1+\sum_{j=1}^{q}\theta_j L^{j}\right)\varepsilon_t

Python 最小示例

下载 .py 文件 ↓

依赖见代码开头;示例在自己的 Python 环境运行,页面不执行代码。用于理解方法,正式参赛请补齐数据检验与误差分析。

Python · 时间序列 ARIMA
# 依赖: statsmodels, pandas
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.tsa.stattools import adfuller

s = pd.Series([112, 118, 132, 129, 121, 135, 148, 136, 119, 104, 118, 115] * 2)
print('ADF p =', round(adfuller(s)[1], 4))       # p < 0.05 才近似平稳

orders = [(p, d, q) for p in range(3) for d in range(2) for q in range(3)]
best = min(orders, key=lambda o: ARIMA(s, order=o).fit().aic)   # 按 AIC 定阶
model = ARIMA(s, order=best).fit()
print('阶数 =', best, '未来 4 期 =', model.forecast(4).round(2).tolist())

用它研究过哪些问题?

浏览赛题库 →