高级计量与因果推断
Heckman 两步法
工资、支出这类结果只在「被选中的人」身上看得见时,先用 Probit 建模谁进入样本,再用逆米尔斯比率纠正第二阶段斜率。
这篇能回答什么
Heckman 两步法回答的是:「只观察参与者的工资(或任何结果),教育回报会被谁选择进入样本这件事污染多少」。第一阶段用 Probit 拟合二元「参与」,得到线性预测 z,再算逆米尔斯比率(IMR);第二阶段只在参与=1 的行上,把 IMR 当作额外回归元做 OLS(HC1 稳健标准误)。IMR 显著,说明选择误差与结果误差相关,应引用纠正后的斜率,而不是裸 OLS。
适合:结果变量在未选中的人身上缺失或无定义(没工作就没有工资),并且你能写出一个选择方程。教学工作表「heckman」有 240 行:参与、工资、教育、年龄、经验。本页把教育、年龄放进选择方程,把教育、年龄、经验放进工资方程——经验充当排他变量。
什么时候不该用
人人都有完整工资、没有「谁被看见」这道关,用线性回归即可。结果在 0 处大量堆积而不是整段缺失,应看Tobit 截断回归。处理组对照可观测、要用倾向得分拉平协变量,用倾向得分匹配。选择变量不是严格的 0/1,第一阶段会拒绝。
如何选择方法
先问偏倚来自「看不见的人」还是「看见的人里混杂没控制」。只对上班者做工资 OLS,等于默认参与与工资误差无关;一旦能力高的人更可能就业,教育系数就把选择效应卷进去。Heckman 把选择单独建模。若处理是人为分组、结局人人可测,用匹配或回归,而不是两步法。
Heckman 两步法:1 个二元选择 Y、1–50 个选择 X、1 个结果 Y、1–50 个结果 X;输出 Probit、IMR 与纠正后 OLS。
普通 OLS(只留参与者):默认选择可忽略;本案例 IMR p=0.022,这条路不成立。
Tobit:Y 在 0(或上限)堆积,不是整段未观测。
二元 Probit / 逻辑回归:只关心谁参与,不估计工资方程。
输入、输出与限制
输入
选择方程 Y 必须能编成 0/1。选择 X、结果 Y、结果 X 按列送入;结果 Y 在角色上允许定量或定类,本页工资是连续定量。第一阶段只要求选择 Y 与选择 X 非缺失;第二阶段再在参与=1 的行上,对结果 Y、结果 X 与 IMR 删缺失。
选择方程 Y:最少 1 个,最多 1 个,二元定类。
选择方程 X:最少 1 个,最多 50 个,定量或定类。
结果方程 Y:最少 1 个,最多 1 个。
结果方程 X:最少 1 个,最多 50 个。
输出
两张系数表。第一张是 Probit(因变量:参与),列变量、系数、标准误、统计量、P 值;表注写全样本 N(本例 240)并说明由此计算 IMR。第二张是参与者上的 OLS(因变量:工资),多出「逆米尔斯比率 (IMR)」一行;表注写第二阶段 N(本例 198)。两张系数图分别画选择方程与结果方程。洞察根据 IMR 的 p 判断是否存在选择偏差。
产品限制
选择 Y 的取值必须恰好两个水平,否则 Probit 拒绝。
第二阶段有效行少于 10 会拒绝。
结果方程使用 HC1 稳健标准误;第一阶段 Probit 用 statsmodels 默认协方差,两套标准误口径不同。
产品不强制排他约束:你可以让两套 X 完全相同,但识别会变弱。实现提示仍要求「最好有一个 X 只进选择方程」。
IMR 对未选中者也算了公式,但第二阶段只保留参与=1,未选中行不进入工资回归。
案例
研究问题。 240 人中,只有选择「参与」的人被记录了工资。直接在这 198 人上把工资对教育、年龄、经验做 OLS,可能高估或低估教育回报——因为受教育更多的人更可能参与。需要先解释谁参与,再报告纠正后的工资斜率。
教学示例来自因果推断表,工作表为「heckman」,第一阶段全样本 240。选择方程 Y = 参与,选择 X = 教育、年龄;结果 Y = 工资,结果 X = 教育、年龄、经验。下载后按同样四个角色复现 IMR = -3.8296(p = 0.022)。
在 StatsX 中操作
步骤 1 · 打开因果表
导入因果推断 xlsx,切到工作表「heckman」,不要停在 panel、psm 或 rdd。单文件不超过 20 MB。
步骤 2 · 确认 0/1 与连续列
参与应为二元;工资、教育、年龄、经验为定量。参与若被读成文字「是/否」,先在表里改成 0/1。
步骤 3 · 选择 Heckman 两步法
目录搜索「Heckman」或「两步」。四个角色都要填,缺一不可。
步骤 4 · 拆开两套方程
选择方程 Y 放参与,选择 X 放教育与年龄;结果 Y 放工资,结果 X 放教育、年龄与经验。点击运行。
步骤 5 · 先看 IMR 再看教育
第二张表找到逆米尔斯比率。p=0.022 则引用纠正后的教育 0.199,不要回头只报未纠正 OLS。




如何阅读输出
第一阶段 Probit,全样本 240。教育 0.1583(SE 0.0367,统计量 4.313,p < 0.001):受教育年限越高,参与概率越高。年龄 -0.0158(p = 0.082)未过 0.05。截距 const = -0.2464(p = 0.644)本身不必解释。
| 变量 | 系数(Coef) | 标准误 | 统计量 | P值 |
|---|---|---|---|---|
| const | -0.2464 | 0.5333 | -0.4621 | 0.644 |
| 教育 | 0.1583 | 0.0367 | 4.313 | <0.001 |
| 年龄 | -0.0158 | 0.0091 | -1.7366 | 0.082 |
左右滑动可查看完整表格
进入第一阶段的全样本量: 240。由此计算出逆米尔斯比率(IMR)并带入第二阶段。
第二阶段只留 198 名参与者。教育 0.199(SE 0.0949,p = 0.036),年龄 0.0433(p < 0.001),经验 -0.011(p = 0.066)。关键行是逆米尔斯比率 (IMR) = -3.8296(SE 1.676,统计量 -2.285,p = 0.022):选择偏差可检出,工资斜率应以本表为准。
| 变量 | 系数(Coef) | 标准误 | 统计量 | P值 |
|---|---|---|---|---|
| const | 10.842 | 1.281 | 8.4636 | <0.001 |
| 教育 | 0.199 | 0.0949 | 2.0971 | 0.036 |
| 年龄 | 0.0433 | 0.0113 | 3.8332 | <0.001 |
| 经验 | -0.011 | 0.006 | -1.8392 | 0.066 |
| 逆米尔斯比率 (IMR) | -3.8296 | 1.676 | -2.285 | 0.022 |
左右滑动可查看完整表格
第二阶段仅保留被选择观测的样本,有效样本量: 198。



【Heckman两阶段】修正样本选择偏差。 【IMR诊断】统计显著(p=0.022, α=0.05),存在选择偏差,应参考第二阶段系数。
解读顺序:选择方程里有没有至少一个显著预测(本例是教育)→ IMR 是否显著 → 再读纠正后的工资斜率。IMR 为负,表示未被观测到的「更容易参与」的特征,在参与者子样本里对应更低的工资残差方向,具体符号依赖参数化,论文里应报告点估计与 p,而不是只写「有偏误」。42 人(240−198)没有进入第二阶段,因为参与≠1 或结果列缺失。
理论与公式
记 S=1 表示结果被观测到。选择方程是潜变量 Probit:
对 S=1 的观测,逆米尔斯比率为标准正态密度比上分布函数;把它放入结果方程:
若 corr(u, e)≠0,忽略 λ 的 OLS 不一致。本实现用 `predict(..., which="linear")` 得到 z,再算 φ(z)/Φ(z)(S=1);第二阶段 `OLS.fit(cov_type="HC1")`。经验只进 X、不进 Z,提供排他识别。IMR 的 p=0.022 对应「ρ 是否为零」的可行检验。
注意事项
两步法标准误在理论上应做 Heckman 修正;本页第二阶段是把 IMR 当普通回归元的 HC1,与 Stata `heckman, twostep` 的校正方差不会逐格相同。
没有真正排他的 Z(经验这类变量)时,IMR 与 X 共线,教育系数会抖。
选择方程若几乎不能预测参与,λ 接近常数,纠正没有信息。
把工资缺失的人填 0 再 OLS,会把「没参与」和「工资为零」混在一起,那是另一套错误,不是 Heckman。
横截面两步法纠正的是选择偏差,不是政策的平行趋势或断点局部随机。
常见问题
参考文献
陈强. 高级计量经济学及 Stata 应用[M]. 高等教育出版社.
Heckman, J. J. Sample Selection Bias as a Specification Error[J]. Econometrica, 1979, 47(1): 153–161.
Wooldridge, J. M. Econometric Analysis of Cross Section and Panel Data[M]. MIT Press.
Cameron, A. C., & Trivedi, P. K. Microeconometrics[M]. Cambridge University Press.