Hausman 检验是什么?
Hausman 检验回答的是随机效应的关键假设是否可信:个体不变特征是否与解释变量不相关。Hausman 检验不是谁显著用谁,而是检验 RE 这把尺子能不能用。
先用一句话理解
把 FE 想成只看同一个对象自己的前后变化,把 RE 想成同时利用对象内部变化和对象之间差异。如果对象之间那些不变差异和解释变量有关,RE 就会把不该混的东西混进去。
什么时候用
| 判断项 | 教科书式判断 |
|---|---|
| 适合用在 | 面板数据中需要在固定效应和随机效应之间说明模型选择。 |
| 先不要用在 | FE 和 RE 使用的变量、样本或模型口径不一致时。 |
| 最关键的前提 | 比较对象必须是同一套系数,且经典 Hausman 的协方差条件要成立。 |
| 读表顺序 | 先确认 FE/RE 样本一致,再看 Hausman p 值和协方差诊断。 |
| 论文表述边界 | 主表若使用 cluster SE,应补充 Mundlak/CRE 或稳健替代口径。 |
把它和相近方法分清楚
| 容易混淆的对象 | 怎么区分 | 初学者记法 |
|---|---|---|
| 固定效应 FE | 允许个体效应和解释变量相关。 | 更保守,依赖组内变化。 |
| 随机效应 RE | 要求个体效应和解释变量不相关。 | 效率更高,但假设更强。 |
| Hausman | 比较 FE 和 RE 系数是否系统不同。 | 检验 RE 一致性,不是比星号。 |
核心直觉和模型公式
FE 和 RE 系数差异
经典 Hausman 统计量可以写成:
\[H=(\hat{\beta}_{FE}-\hat{\beta}_{RE})'[Var(\hat{\beta}_{FE})-Var(\hat{\beta}_{RE})]^{-1}(\hat{\beta}_{FE}-\hat{\beta}_{RE})\]
如果 FE 和 RE 系数差异系统存在,通常说明 RE 的外生性假设不可靠。
公式里的符号怎么读
| 符号 | 含义 | 在本页怎么理解 |
|---|---|---|
| β_FE | 固定效应估计系数 | 允许个体效应与解释变量相关。 |
| β_RE | 随机效应估计系数 | 要求个体效应与解释变量不相关。 |
| Var(β_FE)-Var(β_RE) | 协方差差矩阵 | 经典检验要求它适合构造统计量。 |
| H | Hausman 统计量 | 衡量 FE 与 RE 系数差异是否系统存在。 |
| p 值 | 拒绝 RE 假设的证据 | p 小通常支持采用 FE。 |
专业使用口径
专业 Hausman 写法要说明检验对象和替代证据,不要只报一个 p 值。
| 口径 | 专业写法 |
|---|---|
| 样本一致 | FE 和 RE 必须使用同一批观测和同一套变量。 |
| 主表标准误 | cluster 主表下 classic Hausman 只能作为传统口径参考。 |
| Mundlak/CRE | 可用组内均值项联合检验作为稳健替代。 |
| 结论措辞 | 写 RE 假设是否被拒绝,而不是写哪个模型更显著。 |
一步一步做:从问题到结果的五步
| 步骤 | 这一页具体做什么 | 做到什么程度才算读懂 |
|---|---|---|
| 1. 估计 FE | 用组内变化估计主关系。 | 时不变变量会被吸收。 |
| 2. 估计 RE | 在同一样本和变量下估计随机效应。 | 样本不一致则不能比较。 |
| 3. 做 Hausman | 比较两组系数差异。 | 检验对象是 RE 一致性。 |
| 4. 检查协方差问题 | 看矩阵是否正定、是否与 cluster 主表冲突。 | 异常时不能硬解释 classic 结果。 |
| 5. 补替代检验 | 必要时报告 Mundlak/CRE。 | 让模型选择证据和主表标准误一致。 |
结果怎么读:先读口径,再读数字
本页案例读表时,先记住这个口径:本案例 Hausman 统计量 Chi2(13) = 13.3383,p = 0.4220。
| 读表顺序 | 本页怎么读 | 不要这样读 |
|---|---|---|
| 先看 FE/RE 口径 | 样本、变量和固定效应是否可比。 | 不可比时 Hausman 无意义。 |
| 再看 p 值 | p 小说明 RE 假设不被支持。 | 不是 FE 星号更多。 |
| 然后看矩阵诊断 | 协方差差矩阵异常时要谨慎。 | 不要把报错当不显著。 |
| 最后看替代证据 | Mundlak/CRE 是否支持同一选择。 | 单一 classic 检验不够稳。 |
初学者最容易错在哪里
| 误读 | 为什么错 |
|---|---|
| 谁显著用谁 | 错。Hausman 不比较星号数量。 |
| FE/RE 样本不同还检验 | 错。比较对象已经变了。 |
| cluster 主表只报 classic Hausman | 不够。需要说明稳健标准误下的替代证据。 |
| p 大就证明 RE 正确 | 错。只能说没有拒绝 RE 假设。 |
先看这个案例的结论
- 本案例 Hausman 统计量 Chi2(13) = 13.3383,p = 0.4220。
- 结论行写的是:不拒绝原假设,使用随机效应模型 (RE)。这表示本次结果没有拒绝随机效应设定,而不是证明 RE 在理论上一定正确。
- 如果主表使用 cluster 标准误,仍然要在正文里说明 classic Hausman 与稳健/CRE 检验的关系。
变量要求和案例口径
| 字段 | 口径 |
|---|---|
| 数据 | CSMAR 风格 A 股企业创新面板 |
| 原始样本 | 196 家上市公司,2015-2020 年,约 1200 个公司-年观测;各方法有效样本以本页输出表 N 为准 |
| 因变量 | patent_count;回归页通常使用 ln(1 + patent_count) |
| 核心解释变量 | dfi_index,数字普惠金融指数;部分案例输出展示的是标准化后的 dfi_index |
| 控制变量 | roa、lev、size、growth、cashflow、tobinq、top1、dual、board、indep、soe、age |
| 输出文件 | hausman_test.csv |
| 角色要求 | 因变量、核心解释变量、个体 ID、时间变量 |
| 依赖包 | 无额外 Stata 社区包要求 |
实际代码
下面是本页案例里的最小 Stata 代码。它的作用是帮助你看清变量怎么进入模型、结果文件怎么生成,而不是要求你在网页里手动运行。
log using "/root/workspace/empirical-wizard/workspace/4396bde4/analysis.log", replace text
global JOB_DIR "/root/workspace/empirical-wizard/workspace/4396bde4"
set more off
adopath + "/root/ado/plus"
global DATA_PATH "/root/workspace/empirical-wizard/workspace/test_e2e/csmar_innovation.csv"
import delimited "/root/workspace/empirical-wizard/workspace/test_e2e/csmar_innovation.csv", clear case(preserve)
capture confirm global JOB_DIR
if _rc global JOB_DIR "."
quietly duplicates drop
capture confirm numeric variable stkcd
if _rc {
tempvar __hid
encode stkcd, gen(`__hid')
local idnum "`__hid'"
}
else {
local idnum "stkcd"
}
tempname fh
capture file close `fh'
file open `fh' using "$JOB_DIR/hausman_test.csv", write replace
file write `fh' "统计量,值" _n
xtset `idnum' year
capture noisily xtreg patent_count dfi_index roa lev size growth cashflow tobinq top1 dual board indep soe age, fe
if _rc {
file write `fh' "状态,skipped" _n
file write `fh' "原因,固定效应模型不可估;可能是完整样本不足、核心解释变量无组内变化或变量共线" _n
file close `fh'
di as error "Hausman skipped: FE not estimable"
exit 0
}
capture scalar __hausman_se = abs(_se[dfi_index])
if _rc {
file write `fh' "状态,skipped" _n
file write `fh' "原因,固定效应中核心解释变量被吸收或标准误不可取,Hausman 不具备解释性" _n
file close `fh'
di as error "Hausman skipped: core coefficient not available in FE"
exit 0
}
if scalar(__hausman_se) <= 1e-12 {
file write `fh' "状态,skipped" _n
file write `fh' "原因,固定效应中核心解释变量被吸收或标准误为0,Hausman 不具备解释性" _n
file close `fh'
di as error "Hausman skipped: core coefficient not estimable in FE"
exit 0
}
estimates store __fe
capture noisily xtreg patent_count dfi_index roa lev size growth cashflow tobinq top1 dual board indep soe age, re
if _rc {
file write `fh' "状态,skipped" _n
file write `fh' "原因,随机效应模型不可估;可能是完整样本不足或解释变量无有效变化" _n
file close `fh'
di as error "Hausman skipped: RE not estimable"
exit 0
}
estimates store __re
capture noisily hausman __fe __re, sigmamore
if _rc {
file write `fh' "状态,skipped" _n
file write `fh' "原因,Hausman 统计量不可计算;FE/RE 方差差矩阵不满足要求" _n
file close `fh'
di as error "Hausman skipped: statistic unavailable"
exit 0
}
scalar __chi2 = r(chi2)
scalar __df = r(df)
scalar __p = r(p)
local chi2_s : display %9.4f __chi2
local df_s : display %9.0f __df
local p_s : display %9.4f __p
* Guard against missing/negative chi2 — sigmamore should keep
* it non-negative, but FE-RE variance diffs occasionally produce
* missing values (e.g. when the FE absorbs the core regressor).
* Without the guard, missing __p would silently fall through the
* `cond(__p < 0.05, ...)` branch as "不拒绝原假设" — falsely
* recommending Random Effects.
local conclude ""
if missing(__chi2) | missing(__p) | __chi2 < 0 {
local conclude = "无法计算(chi² 缺失或负值,FE/RE 方差差矩阵退化);建议直接采用 FE 设定"
}
else if __p < 0.05 {
local conclude = "拒绝原假设,使用固定效应模型 (FE)"
}
else {
local conclude = "不拒绝原假设,使用随机效应模型 (RE)"
}
file write `fh' "Chi2,`chi2_s'" _n
file write `fh' "df,`df_s'" _n
file write `fh' "p-value,`p_s'" _n
file write `fh' "结论,`conclude'" _n
file close `fh'
di "Hausman: chi2=`chi2_s' df=`df_s' p=`p_s'"
di "结论: `conclude'"
log close
实际输出表
这张表是本方法页配套案例的输出结果,用来把前面的公式、变量口径和代码对应到实际数字。
| 统计量 | 值 |
|---|---|
| Chi2 | 13.3383 |
| df | 13 |
| p-value | 0.4220 |
| 结论 | 不拒绝原假设,使用随机效应模型 (RE) |
案例图
这是一张由同一份案例数据生成的页面内诊断图。

论文里怎么写
本文在共用企业面板样本上报告Hausman 检验,核心输出见 hausman_test.csv。结果解释时同时关注样本口径、变量构造、系数方向、标准误和适用前提,避免只凭单个 p 值完成方法选择。
检查清单
- FE 和 RE 必须使用同一组变量和同一批样本,否则 Hausman 比较没有意义。
- p 值小通常倾向 FE;p 值大只能说未拒绝 RE 假设,不能证明 RE 正确。
- 如果主表使用聚类标准误,要说明 classic Hausman 与主表推断口径的差别。