跳到主要内容

自相关检验

一、直观理解:残差是否“一人犯错,邻座跟着错”​

回归假定误差项相互独立。对时间序列或空间相邻观测,这个假定常被违反:某一期的冲击会延续到下一期,于是残差出现自相关(autocorrelation)。

图像特征:残差对时间作图呈波浪或持续同号;残差自相关函数(ACF)在滞后 1、2 阶显著不为 0。

后果与异方差类似而不同:

  • OLS 系数在常见外生条件下仍可一致;
  • 但普通 SE 低估(正自相关时尤甚),t 检验过于乐观;
  • 预测区间也会失真。

建模中必须先问:数据是不是按时间/顺序排列的?若是,回归后一定检查残差自相关。

二、适用场景与优缺点​

类型说明
适用场景时间序列回归;按年份/月份排列的宏观与传感器数据;残差 ACF 可疑时;需要 HAC 标准误或 GLS/ARIMA 误差。
核心优点DW、BP、LB 等检验经典;图诊断直观;Newey–West 等 HAC 可直接修正推断。
局限与缺点DW 对严格外生、含滞后因变量等情形有局限;仅检验一阶时不够;把自相关当唯一问题可能掩盖设定错误(漏趋势、漏季节)。

三、核心原理​

1. 一阶自相关模型​

εt=ρεt−1+ut,∣ρ∣<1\varepsilon_t=\rho\varepsilon_{t-1}+u_t,\quad |\rho|<1

ρ>0\rho>0 为常见正自相关。

2. Durbin–Watson 统计量​

DW=∑t=2n(ε^t−ε^t−1)2∑t=1nε^t2≈2(1−ρ^)\mathrm{DW}=\frac{\sum_{t=2}^{n}(\hat\varepsilon_t-\hat\varepsilon_{t-1})^2}{\sum_{t=1}^{n}\hat\varepsilon_t^2}\approx 2(1-\hat\rho)
  • DW≈2:无明显一阶自相关;
  • DW≈0:强正自相关;
  • DW≈4:强负自相关。

精确临界值依赖设计矩阵,需查表或用 dwtest。

3. Ljung–Box / Breusch–Godfrey​

  • Ljung–Box:对残差多个滞后的自相关做组合检验;
  • BG 检验:把残差对原回归元及滞后残差再回归,适合含滞后因变量的情形,往往比 DW 更适用。

4. 处理​

  1. 检查是否漏掉趋势、季节、重要变量;
  2. Newey–West HAC SE(修正推断);
  3. Cochrane–Orcutt / Prais–Winsten 等 FGLS;
  4. 显式建立 ARIMA 误差或动态回归;
  5. 差分平稳后再回归(需经济含义支持)。

四、关键决策​

1. 先设定均值再谈相关​

残差自相关经常是“模型太瘦”(漏变量)的症状,不是一上来就 GLS。

2. DW 还是 BG?​

有滞后 y 作回归元时避免只依赖 DW,改用 BG 或 HAC。

3. 要有效率还是要稳健推断?​

  • 快速稳健:OLS + Newey–West;
  • 结构清楚:把动力学写进模型。

五、MATLAB 示例​

rng(12);
n = 120;
t = (1:n)';
x = randn(n,1);
% 构造 AR(1) 误差
e = zeros(n,1);
for i = 2:n
e(i) = 0.7*e(i-1) + randn;
end
y = 1 + 0.8*x + e;
T = table(t, x, y);
mdl = fitlm(T, "y ~ x");
disp(mdl);

% Durbin-Watson
[p_dw, dw] = dwtest(mdl);
fprintf("DW = %.3f, p = %.4g\n", dw, p_dw);

% 残差 ACF
ehat = mdl.Residuals.Raw;
figure;
subplot(2,1,1); plot(t, ehat, "-o"); yline(0); title("残差时间图");
subplot(2,1,2); autocorr(ehat); title("残差 ACF");

% Ljung-Box(若干滞后)
[h, p_lb, stat, cval] = lbqtest(ehat, "Lags", 10);
fprintf("Ljung-Box lag10: h=%d, p=%.4g, stat=%.3f\n", h, p_lb, stat);

% Newey-West HAC 协方差(手写示意,滞后 q)
X = [ones(n,1) x];
b = mdl.Coefficients.Estimate;
u = ehat;
q = floor(n^(1/4));
S = zeros(2);
for i = 1:n
xi = X(i,:)';
S = S + (u(i)^2) * (xi' * xi);
end
for l = 1:q
w = 1 - l/(q+1); % Bartlett
Gamma = zeros(2);
for t2 = l+1:n
Gamma = Gamma + u(t2)*u(t2-l) * (X(t2,:)' * X(t2-l,:));
end
S = S + w*(Gamma + Gamma');
end
bread = inv(X' * X);
V_nw = bread * S * bread;
se_nw = sqrt(diag(V_nw));
fprintf("OLS SE: %.4f %.4f\n", mdl.Coefficients.SE(1), mdl.Coefficients.SE(2));
fprintf("NW SE: %.4f %.4f\n", se_nw(1), se_nw(2));

六、如何解释结果​

  1. 数据的时间粒度与排序;
  2. DW / BG / LB 结果与 ACF 图;
  3. 可能的设定原因(漏趋势等);
  4. 最终采用的修正(HAC 或动态模型);
  5. 修正前后推断是否改变。

七、常见误区​

1. 横截面数据无故做 DW​

若无自然顺序,DW 无意义;不要按错误排序“制造”自相关。

2. DW≈2 就宣布完全独立​

还可能有高阶自相关或条件异方差(GARCH)。

3. 一见自相关就盲目差分​

可能过度差分,损失水平信息。

4. 含滞后 y 仍只报 DW​

应改用 BG/HAC 并讨论动态解释。

八、小结​

自相关检验的核心是:

检查回归残差是否随时间(或顺序)系统相关,从而判断普通 SE 是否可信。

时间序列回归中,残差时间图 + ACF + DW/BG/LB 应成为标准流程;修正手段在“改设定、HAC SE、动态/GLS 模型”之间按目标选择。