跳到主要内容

AR 自回归模型

一、直观理解:用自己的过去解释现在​

AR(AutoRegressive)模型认为:今天的值,主要是昨天、前天若干期数值的线性组合,再加上随机冲击。

yt=c+ϕ1yt−1+ϕ2yt−2+⋯+ϕpyt−p+εty_t = c + \phi_1 y_{t-1} + \phi_2 y_{t-2} + \cdots + \phi_p y_{t-p} + \varepsilon_t

这很像“惯性”:气温、负荷、汇率等常表现为“高了还会偏高一段时间”。pp 称为阶数,表示往回看几步。

AR 是整个 ARIMA 家族的底座。理解 AR,才能理解 PACF 截尾、平稳性条件,以及为什么差分后再建模。

二、适用场景与优缺点​

类型说明
适用场景单变量、近似平稳(或已差分平稳);自相关拖尾、偏自相关在 pp 阶截尾;需要可解释的短期外推。
核心优点参数少、含义清楚;估计与预测标准;诊断工具完善;可作更复杂模型的基线。
局限与缺点要求平稳;不能直接处理强季节(需 SAR 或季节差分);忽略外生变量;对结构突变敏感;长期预测会收敛到均值。

使用前必须做:

  1. 时序图:趋势、季节、异常点;
  2. 单位根检验(ADF 等)与是否需要差分;
  3. ACF/PACF 识别 pp;
  4. 训练/测试按时间切分。

三、核心原理​

1. 平稳性​

对 AR(1):yt=c+ϕyt−1+εty_t=c+\phi y_{t-1}+\varepsilon_t,弱平稳需要 ∣ϕ∣<1|\phi|<1。更一般地,特征多项式

ϕ(z)=1−ϕ1z−⋯−ϕpzp\phi(z)=1-\phi_1 z-\cdots-\phi_p z^p

的根应都在单位圆外。若根靠近单位圆,冲击衰减很慢,预测区间扩张也慢。

2. ACF 与 PACF​

  • ACF:各滞后上的整体相关,AR 过程通常拖尾;
  • PACF:剔除中间滞后影响后的相关,AR(pp) 常在滞后 pp 后截尾。

因此经典识别规则:PACF 在 pp 后截尾、ACF 拖尾 → 试 AR(pp)。

3. 预测​

一步预测:

y^t+1∣t=c+ϕ1yt+⋯+ϕpyt−p+1\hat y_{t+1|t}=c+\phi_1 y_t+\cdots+\phi_p y_{t-p+1}

多步时,未知的 yy 用预测值递推;随着 hh 增大,y^t+h\hat y_{t+h} 趋向无条件均值,预测方差增大。这是均值回复过程的正常行为,不是程序错误。

四、定阶、估计与诊断​

  1. 网格 p=0,1,…,pmax⁡p=0,1,\ldots,p_{\max},比较 AIC/BIC;
  2. 检查系数显著性与平稳根;
  3. 残差应近似白噪声:autocorr、Ljung-Box;
  4. 若残差仍有 ACF,提高 pp 或改 ARMA;
  5. 最终以测试集 RMSE/MAE 为准,而不是 AIC 最小就一定最好。

BIC 通常比 AIC 更吝啬阶数,小样本宜偏保守。

五、MATLAB 示例​

%% 生成 AR(2) 并估计
rng(1);
trueAR = [0.6, -0.3];
md0 = arima("Constant",0.5,"AR",trueAR,"Variance",1);
y = simulate(md0, 300);

T0 = 240;
yTrain = y(1:T0);
yTest = y(T0+1:end);

% 识别:PACF
figure;
subplot(2,1,1); autocorr(yTrain);
subplot(2,1,2); parcorr(yTrain);

% 平稳性
[hADF,pADF] = adftest(yTrain);
fprintf("ADF h=%d, p=%.4f (h=1 拒绝单位根)\n", hADF, pADF);

% 用 AIC 选 p
pMax = 6;
aic = nan(pMax,1); bic = aic; models = cell(pMax,1);
for p = 1:pMax
md = arima(p,0,0);
try
est = estimate(md, yTrain, "Display","off");
[~,~,logL] = infer(est, yTrain);
numParam = p + 2; % AR + const + var 的近似计数
aic(p) = -2*logL + 2*numParam;
bic(p) = -2*logL + numParam*log(numel(yTrain));
models{p} = est;
catch
end
end
[~,pBest] = min(aic);
est = models{pBest};
fprintf("AIC 选择 p=%d\n", pBest);
summarize(est);

% 残差诊断
res = infer(est, yTrain);
figure; autocorr(res); title("AR 残差 ACF");
[hLB,pLB] = lbqtest(res, "Lags",10);
fprintf("Ljung-Box h=%d, p=%.4f\n", hLB, pLB);

% 训练期外预测
h = numel(yTest);
[yf, yMSE] = forecast(est, h, "Y0", yTrain);
rmse = sqrt(mean((yTest - yf).^2));
fprintf("测试 RMSE=%.4f\n", rmse);

figure;
plot(T0+1:T0+h, yTest, "k"); hold on;
plot(T0+1:T0+h, yf, "r", "LineWidth",1.2);
plot(T0+1:T0+h, yf+1.96*sqrt(yMSE), "r--");
plot(T0+1:T0+h, yf-1.96*sqrt(yMSE), "r--");
legend("真实","预测","95% 区间"); title("AR 训练期外预测");

对真实数据,先处理缺失与异常,再决定是否差分;若必须差分,差分后的 AR 就是 ARIMA(p,1,0p,1,0)。

六、如何解释结果​

应报告:

  1. 是否平稳、是否差分;
  2. 阶数 pp 的选择依据(PACF/AIC/BIC/测试误差);
  3. 系数 ϕ^i\hat\phi_i、常数项、创新方差;
  4. 特征根是否在单位圆外;
  5. 残差白噪声检验;
  6. 测试集误差与朴素预测对比;
  7. 预测区间及其覆盖情况(若测试期足够长)。

系数解释示例:ϕ^1=0.7\hat\phi_1=0.7 表示在其他滞后固定时,上一期偏高 1 个单位,本期平均仍偏高 0.7,冲击逐渐衰减。

七、常见误区​

1. 对非平稳序列直接拟合 AR​

趋势或单位根会使相关图缓慢衰减,系数估计与 tt 检验失真。先差分或去势。

2. 只看样本内 R2R^2​

带惯性的序列很容易“拟合得好”。必须看残差与训练期外误差。

3. 阶数盲目加大​

pp 过大导致过拟合、预测方差上升。优先稀疏模型。

4. 把长期预测当成可靠路径​

AR 的多步预测会回到均值,若业务上存在持续趋势,应改 ARIMA 或加入趋势项。

5. 忽略季节​

周/月周期明显时,纯 AR 往往残差仍有季节峰,应使用季节滞后或 SARIMA。

八、小结​

AR 模型的核心是:

在平稳前提下,用自身有限阶滞后的线性组合做短期预测,并用 PACF/信息准则定阶、用残差与训练期外误差验收。

它是时间序列工具箱中的第一块砖。掌握平稳性、ACF/PACF、arima/estimate/forecast 流程后,再学习 MA、ARMA、ARIMA 会非常自然。记住:能通过白噪声检验且在测试集上打败朴素基线,才算一个合格的 AR 模型。