MCM520 ← 资料站首页 ARIMA 时序模型 · 深度手册 打开交互阅读器 →

ARIMA 时序模型 · 深度手册

分类:预测类 | 难度:★★★ 高阶 | 编号:arima

一、这是什么(一句话用途)

有趋势 / 季节性的单变量序列预测

二、核心思想

ARIMA(自回归积分滑动平均)是单变量时间序列预测的工业级标准模型。它的三大组件:AR(自回归)用过去若干期自身值预测当前;MA(移动平均)用过去若干期预测误差修正当前;I(积分/差分)通过差分把非平稳序列转成平稳。三者组合 ARIMA(p,d,q)(p,d,q) 既能刻画趋势又能刻画短期相关性。定阶是核心技能——靠 ACF/PACF 图形与 AIC 准则。

三、数学原理与推导

对序列 yty_t 作 dd 阶差分 ∇dyt=(1−B)dyt\nabla^d y_t=(1-B)^d y_t(BB 为滞后算子 Byt=yt−1B y_t=y_{t-1})。ARMA(p,q)(p,q) 模型:

ϕ(B)∇dyt=θ(B)εt \phi(B)\nabla^d y_t=\theta(B)\varepsilon_t

其中 ϕ(B)=1−ϕ1B−⋯−ϕpBp\phi(B)=1-\phi_1 B-\cdots-\phi_p B^p(自回归多项式),θ(B)=1+θ1B+⋯+θqBq\theta(B)=1+\theta_1 B+\cdots+\theta_q B^q(滑动平均多项式),εt\varepsilon_t 为白噪声。

参数辨识:

  • dd:使序列平稳的最小差分次数(ADF 检验确认);
  • p,qp,q:由平稳后序列的 ACF(截尾于 qq)、PACF(截尾于 pp)初判,再用 AIC 在候选组合中选最优:

AIC=2k−2ln⁡(L^) \mathrm{AIC}=2k-2\ln(\hat{L})

拟合后需检验残差是否为白噪声(Ljung-Box 检验),预测给出带置信区间的点估计。

四、建模 / 求解步骤

  1. 平稳性检验(ADF)
  2. 定阶 d(差分次数)
  3. 选 p,q(ACF/PACF/ AIC)
  4. 拟合 ARIMA(p,d,q)
  5. 残差检验 + 预测

五、关键公式速查

(1−Σφ_i B^i)(1−B)^d y_t = (1+Σθ_j B^j) ε_t

六、典型示例

月度客流带趋势 → 差分后 ARMA 预测。

完整算例(数字演示,照着算一遍)

场景:差分后序列平稳,定阶 ARIMA(1,1,1)。

拟合:φ1=0.6,θ1=−0.3,对原序列预测未来 3 期 = (153, 156, 159)。

结论:需先 d 阶差分使平稳,再按 AIC 选 p,q。

七、Python 实现示例

import os, numpy as np
import pandas as pd
HERE = os.path.dirname(os.path.abspath(__file__))
df = pd.read_csv(os.path.join(HERE,"..","datasets","arima.csv"))
y = df["value"].to_numpy(dtype=float)
# 一阶差分转平稳
dy = np.diff(y)
# 用自相关粗估:简单 AR(1) 演示
X = dy[:-1]; Y = dy[1:]
phi = np.polyfit(X, Y, 1)[0]
fc = y[-1] + (phi*(y[-1]-y[-2]))
print("AR(1) 系数 phi=%.3f"%phi)
print("下期预测=%.2f"%fc)

配套文件:py_arima.py(需 numpy / pandas;与下方数据集配套练习)

八、MATLAB 实现示例

%% ARIMA 简化示例:差分+AR(1)(MATLAB/Octave)
df = readtable('..\datasets\arima.csv');
y = table2array(df(:,2:end));
dy = diff(y);
phi = polyfit(dy(1:end-1), dy(2:end), 1); phi=phi(1);
fc = y(end) + phi*(y(end)-y(end-1));
fprintf('下期预测=%.2f\n', fc);

配套文件:m_arima.m(基础 MATLAB / Octave 即可运行)

九、练手数据集(可下载)

36 期含趋势与季节成分月度序列。用于差分转平稳、AR(1) 拟合与预测。

  • 字段:month, value
  • 行数:36 行
  • 下载:arima.csv

十、常见误区与避坑清单

  • 先差分到平稳
  • 过拟合阶数
  • 需残差为白噪声

十一、结果怎么解读

看 AIC 选阶;预测带置信区间。

十二、常与谁搭配

季节用 SARIMA。

十三、论文写作技巧(怎么把它写进论文)

把 ARIMA 时序模型 写进论文,核心不是堆公式,而是讲清「为什么用它、结果怎么呈现、如何对比」三件事。

1. 动机怎么写(为什么用它而不是别的)

先说明你的数据具有时间 / 序列依赖,或需要由已知推断未知,因此采用预测类方法。交代输入特征与预测目标,并说明为何选 ARIMA 时序模型(如非线性强、含季节性、小样本等),对比朴素法(如移动平均)点出优势。

2. 结果怎么写(图表与指标)

结果必须给「预测值 vs 真实值」对比曲线 + 误差指标表(MAE / RMSE / MAPE),最好附训练 / 验证分段。若有多个模型,用一张表横向对比误差,突出 ARIMA 时序模型 更优。

3. 可直接套用的写作话术

  • 中文模板:针对<问题>,本文采用 ARIMA 时序模型 进行有趋势 / 季节性的单变量序列预测。该方法能够自动刻画<优势>,在处理<场景>时相较<对比方法>更具<特点>。
  • 英文模板:To address , we adopt ARIMA 时序模型 to 有趋势 / 季节性的单变量序列预测. Benefiting from its ability to , it outperforms on .

4. 同类易踩的写作坑

不可只报 R² 不看外推;时间序列要显式说明训练 / 测试切分方式,避免用未来信息泄漏(look-ahead bias)。

5. 典型论文段落范例(可直接参考 / 改写)

下面是一段可直接套用的论文表述,已按本算法定制,填空处(…)替换成你的真实数值即可。

由于日用电量具有明显的时间依赖与周期波动,本文采用 ARIMA 时序模型 对未来 30 天负荷进行预测,以 RMSE=…、MAPE=… 的精度优于 ARIMA 基线,验证了模型对非线性趋势的捕捉能力。

Given the strong temporal dependence and periodic fluctuation of daily load, we employ ARIMA 时序模型 to forecast the next 30 days, achieving RMSE=… and MAPE=… and outperforming the ARIMA baseline, which confirms its strength in capturing nonlinear trends.

十四、相关手册(延伸阅读)

(暂无直接关联手册,可前往手册库浏览其它算法)

十五、本手册导航


本手册由「算法深度手册生成器」自动产出,配套提供 Python / MATLAB 双版本示例与可下载练手数据集。