样本选择偏差:为什么按结果变量筛选样本会让 OLS 有偏?
温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。
作者:孙晓艺 (厦门大学)
邮箱:sunnalzu202107@163.com
- 分类:因果推断
- Title: 样本选择偏差:为什么按结果变量筛选样本会让 OLS 有偏?
- Keywords: Heckman模型, 样本选择偏误, 逆米尔斯比率, IMR, Mills Ratio, selection bias, sample selection bias
- 提要:本文通过蒙特卡洛模拟表明,样本选择偏差不是简单由「删掉一部分观测」造成的,而是由样本进入规则是否改变误差项与解释变量的关系决定。文章提供 Stata 复现代码,并进一步介绍 Heckman 两步法、逆 Mills 比率和 mroz.dta 实例。
Source:本文参考 Ben Davies 的博客文章 Understanding selection bias 改写,并补充 Stata 复现代码。特此致谢。
1. 问题:删样本为什么可能让回归有偏?
实证研究中,删样本很常见。我们可能只保留有工资收入的个体来估计教育回报,只保留上市公司来研究企业绩效,也可能只分析销售额、利润或出口额为正的企业。很多时候,研究者会担心这种样本筛选会带来「样本选择偏差」(sample selection bias)。
但需要说明的是,删样本本身并不必然导致 OLS 有偏。真正关键的是:进入样本的规则是否与回归方程中的不可观测误差项有关。
本文用一个最小模拟例子说明这个问题。假设真实模型为:
yi=βxi+uiyi=βxi+ui
其中,β=1β=1,xixi 与 uiui 相互独立。现在比较两种样本限制:
- 只保留 xi≥0xi≥0 的观测;
- 只保留 yi≥0yi≥0 的观测。
结果会看到,第一种限制基本不会破坏 OLS 的无偏性,而第二种限制会使 OLS 估计值明显低于真实参数。这个差异揭示了样本选择偏差的核心机制:样本进入规则是否把误差项 uiui 带进了选择过程。
2. 一个最小模拟例子
设数据生成过程为:
yi=βxi+ui,β=1yi=βxi+ui,β=1
其中,xixi 和 uiui 均服从标准正态分布,且二者相互独立:
xi∼N(0,1),ui∼N(0,1),xi⊥uixi∼N(0,1),ui∼N(0,1),xi⊥ui
在这个设定下,OLS 估计量可以写为:
β^=Cov(x,y)Var(x)β^=Var(x)Cov(x,y)
由于真实模型为 yi=xi+uiyi=xi+ui,且 xixi 与 uiui 独立,因此在完整样本中:
Cov(x,y)=Cov(x,x+u)=Var(x)+Cov(x,u)=Var(x)Cov(x,y)=Cov(x,x+u)=Var(x)+Cov(x,u)=Var(x)
所以总体意义上有:
β=Cov(x,y)Var(x)=1β=Var(x)Cov(x,y)=1
需要区分的是,β=1β=1 是真实参数;在一次有限样本模拟中得到的 β^β^ 可能不等于 1。例如,原文使用 n=100n=100 的随机模拟得到:
β^=1.138795β^=1.138795
这个数不是新的真实参数,而只是一次模拟中的样本估计值。若重复模拟很多次,β^β^ 的平均值会接近真实参数 1。
3. 只保留 xi≥0xi≥0:为什么 OLS 仍然近似无偏?
先看第一种样本限制:只保留 xi≥0xi≥0 的观测。定义选择变量:
Six=1{xi≥0}Six=1{xi≥0}
此时,进入样本的条件只取决于解释变量 xixi。由于在原始数据生成过程中 xixi 与 uiui 独立,即使只保留 xi≥0xi≥0 的观测,也不会改变误差项相对于 xixi 的条件均值:
E(ui∣xi,Six=1)=E(ui∣xi)=0E(ui∣xi,Six=1)=E(ui∣xi)=0
这意味着,在这个特定设定下,选择 xi≥0xi≥0 的样本不会破坏 OLS 的关键外生性条件。直观地说,虽然样本变小了,xixi 的分布也变了,但误差项 uiui 并没有因为这个选择规则而系统性地变大或变小。因此,用这个子样本估计 yiyi 对 xixi 的回归,仍然可以得到接近真实值的斜率估计。
原文模拟结果显示,在只保留 xi≥0xi≥0 的样本中,OLS 估计值约为:
β^=1.02β^=1.02
它与真实参数 β=1β=1 非常接近。
4. 只保留 yi≥0yi≥0:为什么 OLS 明显有偏?
再看第二种样本限制:只保留 yi≥0yi≥0 的观测。定义选择变量:
Siy=1{yi≥0}Siy=1{yi≥0}
由于 yi=xi+uiyi=xi+ui,所以上式等价于:
Siy=1{xi+ui≥0}Siy=1{xi+ui≥0}
这时,选择规则不再只取决于解释变量 xixi,而是同时取决于误差项 uiui。这正是问题所在。
如果 xixi 很低,一个观测要进入 yi≥0yi≥0 的样本,就必须有较高的 uiui 来抵消较低的 xixi;如果 xixi 很高,那么即使 uiui 较低,该观测也可能进入样本。因此,在被选择出来的样本中,xixi 与 uiui 会被选择机制诱导出负相关关系。
换句话说,完整样本中 xixi 与 uiui 独立,但在 yi≥0yi≥0 的子样本中,二者不再独立。OLS 所需要的外生性条件被破坏:
E(ui∣xi,Siy=1)≠0E(ui∣xi,Siy=1)=0
这就是样本选择偏差的核心。不是因为样本少了,也不是因为只看了 yiyi 为正的观测本身有什么神秘之处,而是因为这个选择条件把误差项 uiui 纳入了样本进入机制。
下图用一个白板示意图概括了这三种情形的差异。左图是完整样本,中图只保留 xi≥0xi≥0,右图只保留 yi≥0yi≥0。关键区别不在于删掉了多少样本,而在于是否把误差项 uiui 带入了样本选择过程。
在 yi≥0yi≥0 的子样本中,可以把 uiui 对 xixi 做一个线性投影:
ui=ρxi+εiui=ρxi+εi
其中,ρ<0ρ<0 表示在被选择样本中 xixi 与 uiui 的负相关关系,εiεi 是与 xixi 不相关的残差项。把这个式子代入原始模型:
yi=βxi+uiyi=βxi+ui
可得:
yi=(β+ρ)xi+εiyi=(β+ρ)xi+εi
因此,在 yi≥0yi≥0 的样本中,OLS 估计到的不是 ββ,而是 β+ρβ+ρ。由于 ρ<0ρ<0,所以估计值会低于真实参数 ββ。
原文模拟结果显示,在只保留 yi≥0yi≥0 的样本中:
β^=0.356β^=0.356
同时,由于这是模拟数据,我们能观察到真实误差项 uiui,因此可以计算:
ρ^=Cov(u,x)Var(x)≈−0.644ρ^=Var(x)Cov(u,x)≈−0.644
于是:
β^−ρ^≈0.356−(−0.644)=1β^−ρ^≈0.356−(−0.644)=1
这说明 β^β^ 偏离真实参数的原因,正是选择机制诱导出的 ρ^ρ^。不过,在真实实证研究中,研究者通常观测不到 uiui,因此无法直接估计 ρ^ρ^ 并把真实参数反推出来。
5. 用 Stata 复现这个例子
下面给出一份可以直接运行的 Stata 代码。代码分为三步:生成模拟数据、比较三类样本的 OLS 斜率、画图展示选择机制。
温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。
