温馨提示若页面不能正常显示数学公式和代码请阅读原文获得更好的阅读体验。作者孙晓艺 (厦门大学)邮箱sunnalzu202107163.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βxiuiyiβxiui其中β1β1xixi 与 uiui 相互独立。现在比较两种样本限制只保留 xi≥0xi≥0 的观测只保留 yi≥0yi≥0 的观测。结果会看到第一种限制基本不会破坏 OLS 的无偏性而第二种限制会使 OLS 估计值明显低于真实参数。这个差异揭示了样本选择偏差的核心机制样本进入规则是否把误差项 uiui 带进了选择过程。2. 一个最小模拟例子设数据生成过程为yiβxiui,β1yiβxiui,β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)由于真实模型为 yixiuiyixiui且 xixi 与 uiui 独立因此在完整样本中Cov(x,y)Cov(x,xu)Var(x)Cov(x,u)Var(x)Cov(x,y)Cov(x,xu)Var(x)Cov(x,u)Var(x)所以总体意义上有βCov(x,y)Var(x)1βVar(x)Cov(x,y)1需要区分的是β1β1 是真实参数在一次有限样本模拟中得到的 β^β^ 可能不等于 1。例如原文使用 n100n100 的随机模拟得到β^1.138795β^1.138795这个数不是新的真实参数而只是一次模拟中的样本估计值。若重复模拟很多次β^β^ 的平均值会接近真实参数 1。3. 只保留 xi≥0xi≥0为什么 OLS 仍然近似无偏先看第一种样本限制只保留 xi≥0xi≥0 的观测。定义选择变量Six1{xi≥0}Six1{xi≥0}此时进入样本的条件只取决于解释变量 xixi。由于在原始数据生成过程中 xixi 与 uiui 独立即使只保留 xi≥0xi≥0 的观测也不会改变误差项相对于 xixi 的条件均值E(ui∣xi,Six1)E(ui∣xi)0E(ui∣xi,Six1)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 的观测。定义选择变量Siy1{yi≥0}Siy1{yi≥0}由于 yixiuiyixiui所以上式等价于Siy1{xiui≥0}Siy1{xiui≥0}这时选择规则不再只取决于解释变量 xixi而是同时取决于误差项 uiui。这正是问题所在。如果 xixi 很低一个观测要进入 yi≥0yi≥0 的样本就必须有较高的 uiui 来抵消较低的 xixi如果 xixi 很高那么即使 uiui 较低该观测也可能进入样本。因此在被选择出来的样本中xixi 与 uiui 会被选择机制诱导出负相关关系。换句话说完整样本中 xixi 与 uiui 独立但在 yi≥0yi≥0 的子样本中二者不再独立。OLS 所需要的外生性条件被破坏E(ui∣xi,Siy1)≠0E(ui∣xi,Siy1)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βxiuiyiβxiui可得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 斜率、画图展示选择机制。温馨提示若页面不能正常显示数学公式和代码请阅读原文获得更好的阅读体验。
样本选择偏差:为什么按结果变量筛选样本会让 OLS 有偏?
发布时间:2026/6/9 9:27:43
温馨提示若页面不能正常显示数学公式和代码请阅读原文获得更好的阅读体验。作者孙晓艺 (厦门大学)邮箱sunnalzu202107163.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βxiuiyiβxiui其中β1β1xixi 与 uiui 相互独立。现在比较两种样本限制只保留 xi≥0xi≥0 的观测只保留 yi≥0yi≥0 的观测。结果会看到第一种限制基本不会破坏 OLS 的无偏性而第二种限制会使 OLS 估计值明显低于真实参数。这个差异揭示了样本选择偏差的核心机制样本进入规则是否把误差项 uiui 带进了选择过程。2. 一个最小模拟例子设数据生成过程为yiβxiui,β1yiβxiui,β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)由于真实模型为 yixiuiyixiui且 xixi 与 uiui 独立因此在完整样本中Cov(x,y)Cov(x,xu)Var(x)Cov(x,u)Var(x)Cov(x,y)Cov(x,xu)Var(x)Cov(x,u)Var(x)所以总体意义上有βCov(x,y)Var(x)1βVar(x)Cov(x,y)1需要区分的是β1β1 是真实参数在一次有限样本模拟中得到的 β^β^ 可能不等于 1。例如原文使用 n100n100 的随机模拟得到β^1.138795β^1.138795这个数不是新的真实参数而只是一次模拟中的样本估计值。若重复模拟很多次β^β^ 的平均值会接近真实参数 1。3. 只保留 xi≥0xi≥0为什么 OLS 仍然近似无偏先看第一种样本限制只保留 xi≥0xi≥0 的观测。定义选择变量Six1{xi≥0}Six1{xi≥0}此时进入样本的条件只取决于解释变量 xixi。由于在原始数据生成过程中 xixi 与 uiui 独立即使只保留 xi≥0xi≥0 的观测也不会改变误差项相对于 xixi 的条件均值E(ui∣xi,Six1)E(ui∣xi)0E(ui∣xi,Six1)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 的观测。定义选择变量Siy1{yi≥0}Siy1{yi≥0}由于 yixiuiyixiui所以上式等价于Siy1{xiui≥0}Siy1{xiui≥0}这时选择规则不再只取决于解释变量 xixi而是同时取决于误差项 uiui。这正是问题所在。如果 xixi 很低一个观测要进入 yi≥0yi≥0 的样本就必须有较高的 uiui 来抵消较低的 xixi如果 xixi 很高那么即使 uiui 较低该观测也可能进入样本。因此在被选择出来的样本中xixi 与 uiui 会被选择机制诱导出负相关关系。换句话说完整样本中 xixi 与 uiui 独立但在 yi≥0yi≥0 的子样本中二者不再独立。OLS 所需要的外生性条件被破坏E(ui∣xi,Siy1)≠0E(ui∣xi,Siy1)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βxiuiyiβxiui可得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 斜率、画图展示选择机制。温馨提示若页面不能正常显示数学公式和代码请阅读原文获得更好的阅读体验。