ARIMA 模型
在深入 arima 命令之前,先要理解它所拟合的模型——ARIMA 模型,ARIMA 代表 Autoregressive Integrated Moving Average,即自回归积分移动平均模型,它由三个部分组成:

-
AR (p) - 自回归部分:
- 思想:当前值与其过去
p期值的线性组合。 - 公式:
y_t = c + φ₁y_{t-1} + φ₂y_{t-2} + ... + φ_p y_{t-p} + ε_t - 解释:
y_t依赖于它自己的滞后项y_{t-1}, y_{t-2}, ..., y_{t-p}。p是自回归阶数。
- 思想:当前值与其过去
-
I (d) - 积分部分:
- 思想:对原始数据进行
d阶差分,使其平稳。 - 解释:如果一个时间序列是非平稳的(有趋势),我们可以通过差分来消除趋势,使其变为平稳序列。
d是差分的阶数。
- 思想:对原始数据进行
-
MA (q) - 移动平均部分:
- 思想:当前值是过去
q期随机误差项的线性组合。 - 公式:
y_t = c + ε_t + θ₁ε_{t-1} + θ₂ε_{t-2} + ... + θ_q ε_{t-q} - 解释:
y_t依赖于过去的“冲击”或“误差”。q是移动平均阶数。
- 思想:当前值是过去
ar 命令就是专门指当 d=0 和 q=0 时的情况,即只拟合 AR(p) 模型,而 arima 命令是更通用的命令,可以拟合完整的 ARIMA(p, d, q) 模型。

arima 命令的基本语法
arima 命令是 Stata 中进行时间序列分析的核心命令。
arima depvar [indepvars] [if] [in] [, ar(numlist) ma(numlist) arch(numlist) garch(numlist) ... options]
参数说明:
depvar: 因变量(要建模的时间序列)。indepvars: 外生自变量(可选)。ar(numlist): 指定 AR 项的阶数。ar(1 2)表示拟合 AR(1) 和 AR(2) 项。ma(numlist): 指定 MA 项的阶数。ma(1)表示拟合 MA(1) 项。..., options: 其他选项,如vce(robust)、noconstant等。
关键选项:
arima(p, d, q): 这是更直观的指定模型阶数的方式。arima(1, 1, 1)等价于ar(1) ma(1) d(1)。vce(robust): 使用稳健的标准误。noconstant: 模型中不包含常数项。predict: 在估计模型后,使用predict命令进行预测或获取残差。predict newvar, y: 计算预测值。predict newvar, r: 计算残差。predict newvar, y dynamic(time_constant): 进行动态预测,这在时间序列中非常重要。
ar 命令的语法(简化版)
ar 命令是 arima 的一个封装,语法更简单,专门用于 AR 模型。

ar depvar [arlist] [if] [in] [, options]
depvar: 因变量。arlist: 指定 AR 项的滞后阶数。ar(1/3)表示包含 AR(1), AR(2), AR(3)。options: 常用选项包括trend(包含时间趋势)、noconstant等。
完整操作步骤与实例
下面我们通过一个完整的例子来演示如何使用 arima(即 ar 命令的功能)进行时间序列建模。
第1步:加载数据并检查
我们使用 Stata 自带的 wpi1 数据集,这是一个批发物价指数的时间序列。
// 加载数据
webuse wpi1, clear
// 描述数据
describe
summarize wpi
// 绘制时间序列图,观察趋势和波动
tsset wpi // 将 wpi 设为时间序列数据
line wpi, title("Wholesale Price Index over Time") ytitle("WPI")
你会看到 wpi 序列有一个明显的上升趋势,这意味着它很可能是非平稳的。
第2步:平稳性检验
在建模前,必须检验序列的平稳性,常用的是 ADF (Augmented Dickey-Fuller) 检验。
// 对原始序列进行 ADF 检验 dfuller wpi, lag(0) // lag(0) 表示最简单的 ADF 检验
结果解读: ADF 检验的原假设 (H0) 是“序列有一个单位根(即非平稳)”。
- p-value > 0.05,我们不能拒绝原假设,说明序列非平稳。
- p-value < 0.05,我们拒绝原假设,说明序列是平稳的。
对于 wpi,你会得到一个很大的 p-value (0.99 左右),证明它是非平稳的。
第3步:差分使其平稳
既然原始序列非平稳,我们对其进行一阶差分。
// 生成一阶差分序列 gen d_wpi = D.wpi // 对差分后的序列进行 ADF 检验 dfuller d_wpi, lag(0)
d_wpi 的 p-value 应该会非常小(< 0.01),这表明差分后的序列是平稳的,我们确定 d=1。
第4步:识别 ARMA 模型阶数 (p, q)
平稳后,我们需要确定 AR 和 MA 的阶数,常用工具是自相关函数图和偏自相关函数图。
// 绘制 ACF 和 PACF 图 ac d_wpi, lags(12) pac d_wpi, lags(12)
图解法识别模型:
-
ACF (自相关函数):ACF 图“缓慢衰减”,则可能存在 AR 结构,ACF 在滞后
q阶后“截尾”(突然变为 0),则可能存在 MA(q) 结构。 -
PACF (偏自相关函数):PACF 图“缓慢衰减”,则可能存在 MA 结构,PACF 在滞后
p阶后“截尾”,则可能存在 AR(p) 结构。 -
ACF 截尾,PACF 拖尾 → MA(q) 模型
-
PACF 截尾,ACF 拖尾 → AR(p) 模型
-
两者都拖尾 → ARMA(p, q) 模型
观察 d_wpi 的 ACF 和 PACF 图,我们可以尝试拟合一个 AR(1) 模型,因为 PACF 在 lag 1 之后可能有一个“截尾”的趋势。
第5步:拟合模型
现在我们使用 arima 命令来拟合模型,因为我们差分了一次,d=1,我们尝试 p=1,q=0。
// 拟合 ARIMA(1, 1, 0) 模型 arima d.wpi ar(1), noconstant
命令解释:
d.wpi:直接对wpi的一阶差分进行建模,这等同于设置d=1。ar(1):包含一个 AR(1) 项,即设置p=1。noconstant:因为我们是对差分后的序列建模,且差分序列的均值通常接近于0,所以不包含常数项。
结果解读: Stata 会输出系数表,包括:
ARMA部分:AR(1)的系数AR1。- 系数的 p-value:p-value < 0.05,说明该系数在统计上是显著的。
- 对数似然值 和 信息准则:
AIC和BIC,这些值越小,通常说明模型拟合得越好,可用于比较不同模型。
第6步:模型诊断
一个好的模型,其残差应该是白噪声(即不存在自相关),我们再次对残差进行 ADF 检验。
// 保存残差 predict residuals, r // 对残差进行 ADF 检验 dfuller residuals, lag(0)
如果残差的 ADF 检验 p-value 非常小(< 0.05),我们就可以认为残差是平稳的,即模型已经充分提取了数据中的信息,没有遗漏的自相关结构。
第7步:预测
使用我们拟合好的模型进行预测。
// 进行样本内动态预测 // dynamic(45) 表示从第45个观测值开始使用预测值而非真实值来计算后续预测 predict wpi_hat, y dynamic(45) // 绘制真实值和预测值的对比图 line wpi wpi_hat, sort legend(order(1 "Actual WPI" 2 "Predicted WPI"))
这会生成一张图,直观地展示模型的拟合效果。
ar vs. arima
特性
ar 命令
arima 命令
功能
专门拟合 AR(p) 模型
拟合完整的 ARIMA(p, d, q) 模型
语法
ar depvar arlist
arima depvar, ar(#) ma(#) d(#) 或 arima(p, d, q) depvar
灵活性
低,只能处理 AR 模型
高,可处理 AR、MA、ARMA、ARIMA 模型,还可加入外生变量、ARCH/GARCH 效应等
推荐度
不推荐,功能有限
强烈推荐,是 Stata 时间序列分析的标准和强大工具
最佳实践建议
- 总是从
arima 开始:即使你只想拟合一个 AR 模型,也使用 arima 命令,arima y, ar(1)。
- 平稳性是前提:永远不要忘记在建模前检验和确保序列的平稳性(通过差分或其它变换)。
- 模型选择是艺术:ACF/PACF 图是很好的起点,但不要完全依赖它们,尝试几个不同的 (p, q) 组合,并用 AIC/BIC 准则进行比较,选择信息准则值最小的模型。
- 诊断必不可少:模型拟合后,一定要对残差进行检验,确保它是白噪声,这是判断模型是否有效的最终标准。
| 特性 | ar 命令 |
arima 命令 |
|---|---|---|
| 功能 | 专门拟合 AR(p) 模型 | 拟合完整的 ARIMA(p, d, q) 模型 |
| 语法 | ar depvar arlist |
arima depvar, ar(#) ma(#) d(#) 或 arima(p, d, q) depvar |
| 灵活性 | 低,只能处理 AR 模型 | 高,可处理 AR、MA、ARMA、ARIMA 模型,还可加入外生变量、ARCH/GARCH 效应等 |
| 推荐度 | 不推荐,功能有限 | 强烈推荐,是 Stata 时间序列分析的标准和强大工具 |
最佳实践建议
- 总是从
arima开始:即使你只想拟合一个 AR 模型,也使用arima命令,arima y, ar(1)。 - 平稳性是前提:永远不要忘记在建模前检验和确保序列的平稳性(通过差分或其它变换)。
- 模型选择是艺术:ACF/PACF 图是很好的起点,但不要完全依赖它们,尝试几个不同的 (p, q) 组合,并用 AIC/BIC 准则进行比较,选择信息准则值最小的模型。
- 诊断必不可少:模型拟合后,一定要对残差进行检验,确保它是白噪声,这是判断模型是否有效的最终标准。
