Hausman 检验
一、直观理解:FE 和 RE 打架吗?
Hausman 检验用于比较两种估计量:
- 在原假设下都一致,但 RE(或有效估计)更有效;
- 在备择假设下,只有 FE(稳健估计)一致,RE 不一致。
在面板 FE vs RE 的经典应用中:
- 个体效应与回归元不相关(RE 可用);
- 相关(应使用 FE)。
若两种估计的 差异大到不能用抽样噪声解释,就拒绝 ,倾向 FE。
一句话:Hausman 是在问——图有效率的 RE,会不会牺牲一致性?
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 面板 FE/RE 选择;更一般的“有效估计 vs 稳健估计”比较(IV 等);报告模型选择依据。 |
| 核心优点 | 形式标准、直觉清楚;把选择从纯口说变成可检验。 |
| 局限与缺点 | 有限样本可能怪异(差矩阵非正定);依赖同方差等经典条件,与聚类稳健世界不完全匹配;显著与否不能代替对识别的专业判断;不拒绝不等于 为真(功效问题)。 |
三、核心原理
设 为在 下有效且一致的估计(RE), 为始终一致但 下较不有效的估计(FE)。统计量:
在 下渐近 , 为被比较的系数维数。
面板操作要点:
- 只比较两种方法都能估计的系数(时不变变量不在 FE 中);
- 使用可比较的样本与同一套 ;
- 若 不正定,需用广义逆或改用辅助回归形式(Mundlak/Wooldridge)。
现代实践更推荐:
- Mundlak 装置:把 加入 RE,检验 系数是否为 0;
- 或直接基于稳健 SE 的 FE,以识别目标为准,而不是“唯 Hausman p 值”。
四、关键决策
1. p 小怎么办
选 FE(或相关随机效应模型),并报告差异大的系数。
2. p 大怎么办
RE 未被拒绝,但仍需实质论证外生;可把 RE 作效率对照,关键结论用 FE 做稳健性。
3. 与聚类稳健冲突
经典 Hausman 假设与聚类世界不一致时,优先稳健 FE + 理论,辅以 Mundlak 检验。
4. 不要机械
政策处理很可能与地区固定特质相关——即使 Hausman 临界,也常先验选 FE/DID。
五、MATLAB 示例
rng(22);
N = 80; T = 5;
id = repelem((1:N)', T);
a = repelem(randn(N,1), T);
% 情形A:x 与 a 相关 -> 应拒绝 RE
xA = 0.7*a + randn(N*T,1);
yA = a + 1.0*xA + 0.7*randn(N*T,1);
% 情形B:x 与 a 不相关 -> 不应拒绝
xB = randn(N*T,1);
yB = a + 1.0*xB + 0.7*randn(N*T,1);
function [bFE, bRE, H, p] = hausman_panel(id, x, y)
N = max(id); T = numel(y)/N;
% FE within
yw = y; xw = x;
ybar = zeros(N,1); xbar = zeros(N,1);
for i = 1:N
idx = id==i;
ybar(i) = mean(y(idx)); xbar(i) = mean(x(idx));
yw(idx) = y(idx)-ybar(i);
xw(idx) = x(idx)-xbar(i);
end
bFE = xw\yw;
e = yw - xw*bFE; sig_e2 = var(e,1);
% 简化 RE:方差分量 + 准去均值(单变量)
% between 回归残差方差
b_between = [ones(N,1) xbar]\ybar;
ub = ybar - [ones(N,1) xbar]*b_between;
sig_a2 = max(var(ub,1) - sig_e2/T, 0);
theta = 1 - sqrt(sig_e2/(sig_e2 + T*sig_a2));
ys = y; xs = x;
for i = 1:N
idx = id==i;
ys(idx) = y(idx) - theta*ybar(i);
xs(idx) = x(idx) - theta*xbar(i);
end
% 含截距
Z = [ones(numel(ys),1) xs];
b_all = Z\ys; bRE = b_all(2);
% 粗糙方差(仅示意,非严谨聚类)
seFE2 = sig_e2 / (xw'*xw);
eRE = ys - Z*b_all; sig2 = var(eRE,1);
V = sig2*inv(Z'*Z); seRE2 = V(2,2);
d = bFE - bRE;
vdiff = seFE2 - seRE2;
if vdiff <= 0
H = NaN; p = NaN;
else
H = d^2 / vdiff;
p = 1 - chi2cdf(H, 1);
end
end
[bFEA, bREA, HA, pA] = hausman_panel(id, xA, yA);
[bFEB, bREB, HB, pB] = hausman_panel(id, xB, yB);
fprintf("相关情形: FE=%.3f RE=%.3f H=%.3f p=%.4g\n", bFEA, bREA, HA, pA);
fprintf("外生情形: FE=%.3f RE=%.3f H=%.3f p=%.4g\n", bFEB, bREB, HB, pB);
% Mundlak 辅助:回归 y ~ x + xbar(i)
xbar_full = repelem(accumarray(id, xA, [], @mean), T);
mdl_m = fitlm([xA xbar_full], yA);
fprintf("Mundlak xbar 系数 p = %.4g(相关情形应显著)\n", ...
mdl_m.Coefficients.pValue(3));
注意:上面的方差与 Hausman 统计量为教学简化。正式报告应使用工具箱/自编的严谨协方差,或直接报告 Mundlak 检验与 FE 结果。
六、如何解释结果
- 比较的估计量与样本;
- 各系数 FE/RE 对照表;
- H 统计量、自由度、p;
- 选择结论与稳健性;
- 若用 Mundlak,报告 联合检验;
- 强调:模型选择服务识别目标,而非只追 p 值。
七、常见误区
1. p>0.05 就宣称“证明了随机效应外生”
只是未拒绝,可能是功效不足。
2. 比较了不同样本或不同变量集
Hausman 变得无意义。
3. 差矩阵负定仍强行解释
应改用稳健程序。
4. 忽视实质:处理分配与固定特质相关
检验再漂亮也不能拯救错误故事。
八、小结
Hausman 检验的核心是:
比较“始终一致”的 FE 与“ 下更有效”的 RE,若差异系统性显著,则放弃 RE。
它是面板模型选择的经典工具,但应与 Mundlak 装置、聚类稳健 FE 以及问题中的识别逻辑一起使用,而不是唯一的自动开关。