AR 自回归模型
一、直观理解:用自己的过去解释现在
AR(AutoRegressive)模型认为:今天的值,主要是昨天、前天若干期数值的线性组合,再加上随机冲击。
这很像“惯性”:气温、负荷、汇率等常表现为“高了还会偏高一段时间”。 称为阶数,表示往回看几步。
AR 是整个 ARIMA 家族的底座。理解 AR,才能理解 PACF 截尾、平稳性条件,以及为什么差分后再建模。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 单变量、近似平稳(或已差分平稳);自相关拖尾、偏自相关在 阶截尾;需要可解释的短期外推。 |
| 核心优点 | 参数少、含义清楚;估计与预测标准;诊断工具完善;可作更复杂模型的基线。 |
| 局限与缺点 | 要求平稳;不能直接处理强季节(需 SAR 或季节差分);忽略外生变量;对结构突变敏感;长期预测会收敛到均值。 |
使用前必须做:
- 时序图:趋势、季节、异常点;
- 单位根检验(ADF 等)与是否需要差分;
- ACF/PACF 识别 ;
- 训练/测试按时间切分。
三、核心原理
1. 平稳性
对 AR(1):,弱平稳需要 。更一般地,特征多项式
的根应都在单位圆外。若根靠近单位圆,冲击衰减很慢,预测区间扩张也慢。
2. ACF 与 PACF
- ACF:各滞后上的整体相关,AR 过程通常拖尾;
- PACF:剔除中间滞后影响后的相关,AR() 常在滞后 后截尾。
因此经典识别规则:PACF 在 后截尾、ACF 拖尾 → 试 AR()。
3. 预测
一步预测:
多步时,未知的 用预测值递推;随着 增大, 趋向无条件均值,预测方差增大。这是均值回复过程的正常行为,不是程序错误。
四、定阶、估计与诊断
- 网格 ,比较 AIC/BIC;
- 检查系数显著性与平稳根;
- 残差应近似白噪声:
autocorr、Ljung-Box; - 若残差仍有 ACF,提高 或改 ARMA;
- 最终以测试集 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()。
六、如何解释结果
应报告:
- 是否平稳、是否差分;
- 阶数 的选择依据(PACF/AIC/BIC/测试误差);
- 系数 、常数项、创新方差;
- 特征根是否在单位圆外;
- 残差白噪声检验;
- 测试集误差与朴素预测对比;
- 预测区间及其覆盖情况(若测试期足够长)。
系数解释示例: 表示在其他滞后固定时,上一期偏高 1 个单位,本期平均仍偏高 0.7,冲击逐渐衰减。
七、常见误区
1. 对非平稳序列直接拟合 AR
趋势或单位根会使相关图缓慢衰减,系数估计与 检验失真。先差分或去势。
2. 只看样本内
带惯性的序列很容易“拟合得好”。必须看残差与训练期外误差。
3. 阶数盲目加大
过大导致过拟合、预测方差上升。优先稀疏模型。
4. 把长期预测当成可靠路径
AR 的多步预测会回到均值,若业务上存在持续趋势,应改 ARIMA 或加入趋势项。
5. 忽略季节
周/月周期明显时,纯 AR 往往残差仍有季节峰,应使用季节滞后或 SARIMA。
八、小结
AR 模型的核心是:
在平稳前提下,用自身有限阶滞后的线性组合做短期预测,并用 PACF/信息准则定阶、用残差与训练期外误差验收。
它是时间序列工具箱中的第一块砖。掌握平稳性、ACF/PACF、arima/estimate/forecast 流程后,再学习 MA、ARMA、ARIMA 会非常自然。记住:能通过白噪声检验且在测试集上打败朴素基线,才算一个合格的 AR 模型。