跑Stata工具变量回归,最让我头疼的不是ivregress那行命令本身,而是回归结果下方那一排让人眼花缭乱的检验数值——LM统计量、CDW检验、Hansen J值,这三个名字几乎能劝退一半的新手。我读研那会儿第一次跑IV回归,盯着输出表看了半小时,硬是没分清哪个是“检验工具变量是否相关”,哪个是“检验工具变量是否外生”,最后论文被导师批了整整三页批注。
这篇文章就是专门讲这三个统计量的。它们分别对应工具变量分析中三个完全不同的问题:能不能识别、是不是弱工具、是否外生。不论你是正在写毕业论文的本科生,还是刚开始做实证研究的硕士博士,只要你在用Stata处理内生性,这三块内容建议仔细看一遍。我会把每个统计量的原理、常见误读、Stata实操输出、以及我这些年踩过的坑全部摊开讲,看完你至少不会再犯“拿Hansen J当救命稻草”这种新手错误。
1. 工具变量分析的底层逻辑:三大检验各管哪一段
在进入统计量细节之前,先退一步看整体。工具变量这套东西的逻辑其实很简单:你模型里的解释变量和误差项有相关性,导致OLS估计有偏,这时候需要一个“工具变量”来替原始解释变量完成这个因果关系识别。但这个工具变量必须同时满足两个条件——相关性和外生性,缺一个都不行。
- 相关性:工具变量必须与内生解释变量相关(第一阶段有解释力)
- 外生性:工具变量不能与误差项相关(只能通过内生变量影响结果)
有意思的是,我们常用的三大统计量并非直接检验这两个条件,而是围绕这两个条件发展出来的三个不同角度。LM统计量检验的是“能不能识别”,本质上是检验相关性是否弱到连模型都无法识别;CDW检验进一步检验“相关性是不是足够强”,也就是弱工具变量问题;Hansen J值检验的则是“工具变量是否外生”,但它只在工具变量数量超过内生变量数量时才能用。这三个统计量其实勾画出了一条完整的验证链条:先看有没有,再看强不强,最后看干不干净。
1.1 内生性问题的来源与工具变量的思路
内生性问题通常来自三个地方:遗漏变量(比如能力会影响工资和教育年限)、反向因果(比如教育回报模型中工资高的人可能有更多资源去深造)、测量误差(解释变量本身测不准)。这些问题会让OLS估计量不再满足一致性,你得到的系数并不是真正的因果效应。
工具变量的思路是用一个外来的变量来“撬动”内生解释变量。举个例子,有人用“出生季度”作为教育年限的工具变量,因为不同季度入学的政策导致某些人教育年限略有不同,而出生季度本身不太可能直接影响成年后的工资水平。好的工具变量就像一把质量合格的钥匙,它只能通过锁芯(内生变量)打开门(影响结果变量),不能从别的通道进去。
1.2 识别、弱工具与过度识别:三个问题别混淆
很多新手把三大统计量混在一起看,这是最大的认知误区。实际上它们回答的问题完全不同:
| 检验统计量 | 回答的问题 | 原假设 | 期望结果 |
|---|---|---|---|
| LM统计量(Anderson/Kleibergen-Paap) | 模型能不能识别 | 工具变量与内生变量不相关(不可识别) | 拒绝原假设(p<0.05) |
| CDW检验(Cragg-Donald Wald F) | 工具变量是否太弱 | 存在弱工具变量 | F统计量越大越好 |
| Hansen J值 | 工具变量是否外生 | 所有工具变量外生且排除合理 | 不能拒绝原假设(p>0.1) |
注意看最后两列的差异。LM和Hansen J的期望结果方向是相反的,这是最容易搞混的地方。LM希望拒绝原假设,Hansen J希望不能拒绝原假设。如果你把这两者的解读方向搞反了,论文结论就会彻底翻车。
1.3 在Stata里一次性跑出这些检验
实际操作中,你不需要分别手工计算三个统计量。Stata内置的ivregress配合estat命令就能拿到大部分结果:
* 2SLS估计 ivregress 2sls y x1 (x2 = z1 z2), robust * 第一阶段与弱工具检验 estat firststage, all * 过度识别检验 estat overid如果你装了外部命令ivreg2,输出表更直观,三类检验会按顺序分块展示:
* 安装ivreg2(只需一次) ssc install ivreg2 * 估计并展示三大检验 ivreg2 y x1 (x2 = z1 z2), robustivreg2的输出中,第一块是Underidentification test,第二块是Weak identification test,第三块是Overidentification test。这篇文章后面的内容,就按这三个块逐一来讲。
2. LM统计量:识别检验的真正含义
2.1 从Anderson LM到Kleibergen-Paap LM
LM统计量全称是Lagrange Multiplier统计量,在工具变量识别检验中,最常用的是Anderson canonical correlations LM统计量。它检验的原假设是“方程不可识别”,换句话说,原假设认为你的工具变量与内生变量之间根本没有足够的相关性来估计模型。
另一个更稳健的版本是Kleibergen-Paap rk LM统计量,它在存在异方差和聚类误差的时候依然有效。判断用哪个很简单:如果你的回归用了robust或cluster选项,那就报告Kleibergen-Paap rk LM;如果误差满足独立同分布假设,则Anderson LM即可。我在实际审稿中见过不少人在异方差情况下还报告Anderson LM,本质上是不够严谨的。
2.2 陷阱一:LM显著不代表工具变量合格
这是我见过最普遍的误读。很多同学看到LM统计量的p值小于0.05,长舒一口气,觉得“工具变量没问题了”。错。LM检验只是一个门槛检验,它只说明你的工具变量和内生变量之间存在某种相关性,足以让模型被识别出来,但完全没有回答相关性有多强。
用一个生活化的类比解释:LM检验相当于确认“门锁有没有装”,CDW检验才是检查“这把锁能不能挡住小偷”。一个门装了锁,不代表这把锁就是牢固的。同样地,LM统计量显著,完全可能是基于一个第一阶段F值只有1.5的极弱工具变量,这种情况下虽然名义上“识别了”,但2SLS估计量的偏差可能大到完全不可信。
所以正确的读表顺序是:先看LM统计量,如果p<0.05,说明通过了识别门槛;如果p>0.05,模型直接就是不可识别的,后面的CDW和Hansen J都不用看了。如果LM通过了,紧接着必须看CDW的F值,确认工具变量强度足够,这才是完整流程。
2.3 命令输出中LM值在哪个位置
在ivreg2输出中,第一块Underidentification test会直接给出:
Underidentification test (Anderson canon. corr. LM statistic): 12.345 Chi-sq(2) P-val = 0.002你只需要看P-val那一列。小于0.05说明拒绝了“不可识别”的原假设,模型可以被识别。需要补充说明一点:这个检验的p值大小并不代表工具变量解释力的强度,0.0001和0.04在意义上没有本质区别,都是“通过识别门槛”。真正的强度判断要看下面的弱识别检验。
另外,如果你的模型中有多个内生变量,LM检验的解读会稍微复杂一点。比如你有两个内生解释变量,工具变量数量也是两个或更多,此时LM检验仍然有效,但你需要意识到它检验的是整个系统的可识别性,而非某个特定内生变量。如果要考察单个内生变量是否被足够工具变量解释,需要逐个看第一阶段回归。
3. CDW检验与弱工具变量的判断
3.1 从F大于10的规则到Cragg-Donald Wald F
CDW检验的全称是Cragg-Donald Wald F检验,它在Stata输出中通常写作“Cragg-Donald Wald F statistic”。它的逻辑源于一个经典现象:当工具变量与内生变量的相关性很弱时,2SLS的估计量尽管一致,但有限样本偏误非常大,甚至比OLS还严重。
早年大家惯用一个经验规则:如果第一阶段回归的F统计量大于10,就认为不存在严重的弱工具变量问题。这个规则简单粗暴,来自Stock和Yogo的研究,但很多人忽略了一个关键前提——这个10的经验规则只适用于单个内生变量且误差满足独立同分布假设的简单情形。一旦你的模型稍微复杂一点,比如多个内生变量、聚类稳健标准误,这个10就不再是万能门槛了。
Cragg-Donald Wald F统计量的正式名称是“最小特征值统计量”(minimum eigenvalue statistic)。它本质上是考察第一阶段排除的工具变量联合显著性矩阵的最小特征值,与Stock-Yogo临界值比较。特征值越大,说明工具变量与内生解释变量的联合相关性越强;特征值越小,说明至少在某个维度上工具变量很弱。
3.2 陷阱二:单看F统计量,忽略Stock-Yogo临界值
很多初学者使用estat firststage时,只盯住第一阶段F值,看到F=12就放心了。但如果在Stata中执行estat firststage, all,你会发现输出表格的下半部分有一行行Stock-Yogo weak ID test critical values。这些临界值才是判断弱工具变量的正式标准。
举个例子,如果你的回归只有一个内生变量、三个工具变量,Stock-Yogo临界值表中5% maximal IV relative bias对应的临界值可能是13.91,10%对应的可能是8.96。此时你的CDW F值如果是12,虽然大于10,但小于5%偏误对应的13.91,按照这个临界值标准仍然可能被认定存在弱工具变量问题。换句话说,“F>10”只是一个宽松的参考线,正式审稿时对方完全可能要求你对比Stock-Yogo临界值。
另一个更关键的问题是,如果你的标准误是聚类的,那Cragg-Donald F统计量本身就不适用了。这时候就要看Kleibergen-Paap rk Wald F统计量,它允许存在异方差和聚类相关。但麻烦之处在于,Stock-Yogo临界值是在iid假设下推导出来的,对KP F严格来说不能直接套用。实操中大家还是习惯用“KP F大于10”作为粗略经验判断,但你要清楚这种做法并不完美,因此在论文中应该表述为“KP F统计量为X,大于常规经验阈值10,表明不存在严重弱工具变量问题”,而不是写“通过了Stock-Yogo检验”。
3.3 在Stata中读取CDW检验全部信息
用ivreg2时,第二块Weak identification test会显示:
Weak identification test (Cragg-Donald Wald F statistic): 16.420 Stock-Yogo weak ID test critical values: 5% maximal IV relative bias 13.91 10% maximal IV relative bias 8.96 20% maximal IV relative bias 6.28 30% maximal IV relative bias 5.01如果使用ivregress加estat firststage,输出类似:
estat firststage, all First-stage regression statistics: Adjusted Partial Variable Partial R2 R2 F(3,97) Prob > F x2 0.2862 0.2711 16.42 0.0000 ... Minimum eigenvalue statistic = 16.4206 Critical Values #1: 5% maximal IV relative bias 13.91读表的重点是找到Minimum eigenvalue statistic,也就是CDW F统计量,然后和下面的临界值对比。如果你的统计量大于5% maximal IV relative bias对应的临界值,一般就认为没有严重的弱工具变量问题。
3.4 弱工具变量最常见的处理思路
如果你的CDW检验确实不过关,比如F值远小于10,这时候不要急着换一批花哨的工具变量去凑数值。通常我给学生的建议按优先级排列:
- 检查工具变量选择是否合理:工具变量与内生变量的相关性弱,往往是经济学机制本身就弱,这时候最先应该反思工具变量是否选错了。
- 使用有限信息最大似然估计(LIML):在弱工具变量情形下,LIML的中位偏误小于2SLS,是一个值得尝试的稳健性替代。
- 使用弱工具变量稳健推断:比如Anderson-Rubin置信区间,它不依赖于工具变量强度的近似,在弱工具下依然有效。
- 合并多个工具变量的信息:在某些情况下用GMM而非2SLS,可以更有效地利用多个工具变量的信息。
最忌讳的做法是为了把F值做上去,在没有任何理论根据的情况下堆一堆伪工具变量,或者只挑第一阶段显著的观众器变量。这种做法很可能工具变量内生性质疑一来就彻底崩盘。
4. Hansen J值:过度识别检验的常见陷阱
4.1 Hansen J检验到底在检验什么
Hansen J值与Sargan检验解决的是同一个问题:工具变量的外生性。原假设是“所有工具变量都是外生的,且排除限制是合理的”。在恰好识别模型(工具变量数等于内生变量数)中,你无法检验外生性,因为没有任何多余的自由度来做这个检验。只有当你处于过度识别模型(工具变量数多于内生变量数)时,才能通过Hansen J或Sargan检验来评估工具变量的外生性。
Sargan和Hansen J的区别在于分布假设。Sargan在条件同方差下才有效;Hansen J在异方差和聚类误差情形下依然一致,因此实际应用中使用Hansen J更稳健。在Stata内置命令ivregress 2sls后用estat overid,输出的是Sargan(score)和Basmann检验;使用ivregress gmm后再用estat overid,输出的是Hansen J。如果你习惯用ivreg2,无论2SLS还是GMM,输出中都会直接给出Hansen J statistic。
4.2 陷阱三:p值大反而要警惕
这是三大陷阱中最被人低估的一个。一般经验是Hansen J的p值大于0.1,说明不能拒绝原假设,工具变量整体外生性尚可。但很多人的误区是p值越大越开心,觉得“0.9或0.99总比0.11好吧”。
事实恰恰相反。p值极端高,反而要警惕两种可能。第一种可能是检验的统计功效不足。如果你的工具变量很多、样本量不大,过度识别检验的功效会很低,J检验很难拒绝原假设,即使工具变量并不是完全外生也无法察觉。第二种更隐蔽,当一个工具变量的确内生,但其他工具变量都有效时,J统计量是全体工具变量的一个加权平均,坏工具变量的影响会被好工具变量稀释,最终J检验还是不显著。
所以我一直跟学生强调,Hansen J值是一个“保险检视”,不是“万能证明”。它只能帮你筛掉一部分明显有问题的工具变量,不能从根本上证明你的工具变量组合是干净的。真正的外生性论证要靠经济逻辑:为什么这个工具变量不会直接影响结果变量?变量选择的排他性理由要写扎实,这才是根基。
4.3 陷阱四:恰好识别模型里忘掉Hansen J
另一个频繁出现的错误是学生在恰好识别模型中还报告了Hansen J值。这种情况下模型包含一个内生变量、一个工具变量,过度识别自由度为零,Hansen J统计量根本不存在。如果你在Stata里跑这样模型再执行estat overid,软件会提示“equation not identified”或者直接返回缺失值。
有的新手不理解,以为是自己命令写错了,还有人从其他论文中“手工”仿造了一个J值填进去。这种情况在逻辑上不可能存在。记住一句话:Hansen J值存在的先决条件是“过度识别”,即工具变量数量严格大于内生变量数量。如果你的模型是恰好识别的,唯一能依靠的就是经济学理论的论证,拿不出任何统计检验替你做外生性背书。
4.4 在Stata中获取Hansen J值的标准姿势
当你使用ivreg2并且工具变量数大于内生变量数时,第三块输出如下:
Overidentification test of all instruments (Hansen J statistic): 3.214 Chi-sq(1) P-val = 0.073这里的Chi-sq括号中数字是自由度,等于工具变量数减去内生变量数。P值大于0.1视为通过过度识别检验;介于0.05到0.1之间属于边界情形,需要结合其他证据判断;小于0.05则意味着至少一个工具变量可能有问题,你要重新审视工具变量选择。
如果你用的是内置命令ivregress:
ivregress gmm y x1 (x2 = z1 z2), robust estat overid这样会直接报告Hansen J统计量及其p值。
5. 完整案例演示:三步教你读工具变量检验表
5.1 一个通俗的研究场景设定
假设我们研究教育年限对工资的影响,模型设定为lwage对educ回归,大家普遍担心能力遗漏变量会导致educ内生。我们选择母亲受教育年限(meduc)和父亲受教育年限(feduc)作为educ的工具变量,理由是一个人的教育水平受父母教育影响显著,而父母教育不太可能直接影响子女成年后的工资(除通过子女教育这条路径外)。
Stata代码如下:
use wage.dta, clear ivreg2 lwage exper (educ = meduc feduc), robust这是一个典型的过度识别模型:一个内生变量educ,两个工具变量meduc和feduc,所以模型可以同时执行识别检验、弱工具检验和Hansen J检验。
5.2 三步读表法
第一步看LM统计量。假设输出中Underidentification test显示Anderson LM统计量为42.18,Chi-sq(2) P-val=0.0000。这说明模型拒绝“不可识别”的原假设,工具变量整体上与educ存在显著相关性。
第二步看CDW F统计量。假设输出显示Cragg-Donald Wald F statistic为21.77。与Stock-Yogo临界值对比(比如5% maximal IV relative bias对应的临界值可能是13.91,10%可能是8.96),21.77大于这些常用临界值,可以认为工具变量强度不错,不存在严重的弱工具变量问题。
第三步看Hansen J值。假设Hansen J statistic为1.036,Chi-sq(1) P-val=0.309。P值大于0.1,不能拒绝原假设,说明在统计上无法拒绝两个工具变量外生性假设。再结合经济逻辑,父母教育水平对子女工资的影响路径较合理,可以接受工具变量组合。
5.3 论文汇报的标准模板
如果你需要在论文中汇报这些结果,我建议采用一段类似这样的固定表述:
模型采用2SLS估计以缓解教育年限可能存在的内生性问题。识别检验显示Anderson LM统计量为42.18(p<0.01),拒绝不可识别原假设;Cragg-Donald Wald F统计量为21.77,高于Stock-Yogo弱识别检验10%偏误对应的临界值,表明不存在严重弱工具变量问题;Hansen J过度识别检验统计量为1.036(p=0.309),无法拒绝工具变量外生性原假设,证明工具变量组合总体有效。
这段话结构清晰,也是大多数期刊都能接受的标准写法。
6. 常见问题速查表与实操避坑心得
6.1 常见问题速查表
我把这些年实际培训中遇到频率最高的问题整理成一个表格,方便你快速对照:
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| Anderson LM统计量不显著 | 工具变量与内生变量相关太弱 | 更换更合适的工具变量,重新考虑识别策略 |
| CDW F值大于10但低于Stock-Yogo临界值 | 经验规则失效 | 报告并对比Stock-Yogo临界值,必要时改用LIML |
| KP F值大于10但误差是聚类的 | Stock-Yogo临界值不适用 | 报告KP F并说明使用经验阈值判断 |
| Hansen J p值接近0.99 | 工具变量数量过多或检验功效不足 | 精简工具变量数量,检查是否存在冗余工具 |
| Hansen J p值在0.05到0.1之间 | 工具变量外生性存疑但未完全否定 | 换工具变量组合做稳健性分析,结合经济逻辑判断 |
| 恰好识别模型报estat overid失败 | 模型没有过度识别自由度 | 不报告Hansen J,用理论论证外生性 |
6.2 我自己踩过的三个坑
第一个坑发生在我做第一篇实证论文的时候。当时我习惯用estat firststage查看第一阶段的F统计量,看到F=18.6,心里觉得稳了。后来导师让我用ivreg2重新跑一遍,才发现Cragg-Donald F统计量只有8.2,因为模型有多个内生变量和工具变量,第一阶段单个方程的F值并不能代表整体识别强度。从那以后我养成了习惯:只要涉及工具变量,就一定看整体最小特征值统计量。
第二个坑是在处理聚类样本时使用了Anderson LM和CDW F统计量。当时数据是省级面板,误差项明显存在省内聚类相关,但我仍然报告了iid假设下的Anderson LM,被审稿人当场指出。后来我改用Kleibergen-Paap rk LM和KP rk Wald F统计量,同时报告了聚类稳健标准误下的结果,才算过关。
第三个坑关于Hansen J。有次我做了过度识别检验,Hansen J的p值达到0.8,我还挺高兴,认为工具变量组合很干净。后来换了一组有效工具变量重新估计,核心系数发生了大幅变化,说明原来的工具变量组合可能本身就存在某种弱外生性偏误,只是因为J检验功效不足而没有显现出来。这次经历让我明白了,Hansen J通过并不代表工具变量就真的干净,每一项排除性论证都要写到位。
6.3 工具变量分析的最少必要知识
如果把工具变量分析的检验体系压缩成三句话,我会这样总结:识别检验(LM)回答的是“有没有”,弱工具检验(CDW/KP F)回答的是“够不够强”,过度识别检验(Hansen J)回答的是“干不干净”。三者的顺序不能颠倒、解读方向不能混淆、汇报时缺一不可。
做工具变量分析本身就是一个权衡的过程,统计检验只能提供辅助证据,真正支撑因果推断的还是你的经济学逻辑和研究设计。每次看到有人拿着一个快速显著的机器变量来问我“这个工具变量能不能用”,我第一反应都是先问一句:你能不能用一句话解释它为什么不影响被解释变量?解释不了,再漂亮的统计量都白搭。
最后分享一个我实操中养成的习惯:所有需要做IV回归的研究,我都会在分析脚本开头保留一份完整的检验输出日志,包括LM统计量、CDW/KP F值、Hansen J值和各自的p值,并标注清楚对应的模型设定和标准误类型。这样做既方便自己在写作时引用数据,也方便在审稿过程被质疑时快速复盘。希望这篇内容能帮你少走几步弯路。