← 返回 QuantGrowth 首页

ARIMA预测方法:用历史值和历史误差预测当前值

数据
数据数据指标

如果说 Prophet 是"把业务直觉装进模型"的工程派代表,ARIMA 就是统计派的百年经典。它不依赖节假日表,也不需要分析师录入先验,只相信一件事:数据自己会说话——当前的值,可以被过去的值和过去的误差解释。这条朴素的假设撑起了半个多世纪的时间序列预测。

一、ARIMA 的前世今生:一个模型家族的进化史

ARIMA 不是一步到位的发明,而是逐级演进的结果——每一次升级都在解决前一模型的局限:
截屏2026-08-29 16.07.30

模型 全称 核心思想
AR(p) 自回归模型 前期观测数据本身影响当前数据
MA(q) 移动平均模型 前期观测数据的扰动影响当前数据
ARMA(p,q) 自回归移动平均模型 前期观测数据 + 系统扰动共同影响当前数据
ARIMA(p,d,q) 自回归差分移动平均模型 通过差分将有趋势的数据处理成适用于 ARMA 的平稳数据
SARIMA 季节性 ARIMA 引入周期性的季节因素
ARIMAX 带外生变量的 ARIMA 引入与预测对象相关程度较高的回归项

演进脉络可以概括为三步:AR 和 MA 分别刻画两种"记忆";ARMA 把两者组合;ARIMA 再加上差分,把"有趋势的现实数据"变成"ARMA 能吃的平稳数据"。这套体系源自统计学家 Box 和 Jenkins 在 1970 年出版的《Time Series Analysis: Forecasting and Control》,因此也常被称为 Box-Jenkins 方法。

二、AR 与 MA:时间序列的两种记忆

2.1 AR(p):值有惯性

自回归模型认为,当前值与前 p 个历史值存在线性关系:

y_t = c + \phi_1 y_{t-1} + \phi_2 y_{t-2} + \cdots + \phi_p y_{t-p} + \varepsilon_t

直觉很好理解:今天的 DAU 有相当部分来自昨天的惯性——用户的使用习惯会延续,昨天活跃的用户今天大概率还活跃。阶数 p 就是"记多久",AR(1) 只看昨天,AR(7) 则把一周前的水平也纳入参考。

2.2 MA(q):事件有余波

移动平均模型认为,当前值与前 q 期预测误差(扰动项)存在线性关系:

y_t = \mu + \varepsilon_t + \theta_1 \varepsilon_{t-1} + \theta_2 \varepsilon_{t-2} + \cdots + \theta_q \varepsilon_{t-q}

扰动项 ​\varepsilon_t 代表当期无法预测的突发影响:一次 push 推送、一条热搜、一场渠道投放。MA(q) 刻画的是事件的余波——昨天一场活动带来的超额活跃,会在接下来几天逐渐消退。

2.3 两者的区别与联系

一个常用的直觉区分:AR 记得"值",MA 记得"事"。ARMA(p,q) 则把两种记忆放进同一个模型:

y_t = c + \sum_{i=1}^{p}\phi_i y_{t-i} + \varepsilon_t + \sum_{j=1}^{q}\theta_j \varepsilon_{t-j}

从理论上讲(Wold 表示定理),任何平稳序列都可以用无限阶 MA 表示,而有限阶 AR 也可以逼近它——所以 AR 和 MA 并非对立,而是同一现象的两种参数化方式,实践中靠定阶准则取舍。
截屏2026-08-29 16.13.11

三、平稳性:ARMA 成立的前提

ARMA 适用于平稳时间序列——数值围绕均值波动,均值和方差不随时间变化。而现实中的业务数据几乎都是非平稳的:增长趋势让均值持续上移(DAU 长期爬坡),业务变化让方差随之放大。
截屏2026-08-29 16.14.04
把非平稳变成平稳的标准操作是差分

  • 一阶差分:相邻两项之差,​\Delta y_t = y_t - y_{t-1}。有线性趋势的序列,差分一次后趋势消失;
  • 二阶差分:相邻两项一阶差分之差,处理曲线趋势(增长率还在变化的序列)。

实操中通常用 ADF 检验(单位根检验)判断序列是否平稳,不平稳则差分后重检。差分次数 d 一般不超过 2——差分过多会过度削弱信号,让模型只剩噪声。

四、ARIMA = AR + I + MA

理解了三个部件,ARIMA 就只是一个组装品:
截屏2026-08-29 16.21.21

\text{ARIMA}(p, d, q):\quad \Delta^d y_t = c + \sum_{i=1}^{p}\phi_i \Delta^d y_{t-i} + \varepsilon_t + \sum_{j=1}^{q}\theta_j \varepsilon_{t-j}

主要思想:利用差分操作将非平稳时间序列转换成平稳时间序列,再利用历史值和历史值的预测误差对当前值进行预估。三个参数各管一件事:

  • p(自回归阶数):看几个历史值;
  • d(差分次数):做几次差分;
  • q(移动平均阶数):记几期扰动。

建模流程(Box-Jenkins 流程的工程化版本):

  1. 预处理:通过差分转换成平稳时间序列(确定 d);
  2. 定阶:通过 ACF/PACF 寻找 p 和 q;
  3. 训练模型:通过历史数据训练模型;
  4. 输出结果:预测 + 置信区间。

定阶的经典经验法则:

图形特征 结论
PACF 截尾、ACF 拖尾 AR(p)
ACF 截尾、PACF 拖尾 MA(q)
两者都拖尾 ARMA(p,q)

现代实践中更常用 AIC/BIC 信息准则遍历候选参数组合自动选阶,pmdarima 库的 auto_arima 把这一步完全自动化了。

五、SARIMA 与 ARIMAX:两把外挂

SARIMA(季节性 ARIMA)引入周期性的季节因素:对周周期为 7 的数据,用间隔 7 期的差分消除季节性不平稳,再对季节项单独做 ARMA。确定周期 m 后,模型变成 SARIMA(p,d,q)(P,D,Q)m;可以说 ARIMA 就是 SARIMA 在 m=1 时的特殊情况。业务指标大多带明显周期(周/年),这也是实战中 SARIMA 比 ARIMA 更常用的原因。

ARIMAX 则引入与预测对象相关程度较高的外生回归项(exogenous variables):预测 DAU 时把当日投放预算、大促标记作为 X 项喂进模型,让"事件"不再只能靠扰动项兜底。可以理解为统计派版本的"节假日表"。

六、Prophet 还是 ARIMA:怎么选

维度 Prophet ARIMA 系
擅长场景 强周期、多季节性、节假日效应明显 短期自相关强、数据量小、结构简单
趋势突变 突变点机制自动适应 差分后趋势被"抹平",突变期容易失效
节假日 建模内置,录入即生效 原生不支持,需 ARIMAX 外挂
数据要求 缺失值、异常值鲁棒 对异常值敏感,需清洗
门槛 几行代码可用 需要平稳性检验与定阶

经验法则一句话:Prophet 在周期性数据上表现更好,ARIMA 在短窗口、强惯性的序列上更稳。指标监控场景下两者并不互斥——常见做法是双模型并行,预测区间取并集报警,再根据各自的误报率动态降权。

参考资料

  • Box G E P, Jenkins G M. Time Series Analysis: Forecasting and Control. 1970(Box-Jenkins 方法原始出处)
  • Hyndman R J, Athanasopoulos G. Forecasting: Principles and Practice(时间序列预测开源教材)
  • Python 实现:statsmodels 的 SARIMAX 接口、pmdarima 的 auto_arima 自动定阶