当前位置: 首页 > news >正文

样本选择偏差:为什么按结果变量筛选样本会让 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 斜率、画图展示选择机制。

温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。

http://www.jsqmd.com/news/980312/

相关文章:

  • AI Agent如何解决传统自动化失败的三大根本问题
  • 零基础极速上手:10分钟用AI建站工具搭出你的第一个网站
  • 山西干冰厂家直销
  • 乙方验收PPT咋做才能让甲方满意?一份避坑指南
  • 机器学习落地五大不可绕行决策节点
  • RTX 4090上LLaMA 2与LLaMA 3微调实测:显存、温度与梯度流关键瓶颈解析
  • [STM32]Day9-Part2串口收发数据包
  • Codex桌面版接入Deepseek api key教程
  • LLM生产系统合规落地:分层治理架构与工程实践
  • 多维聚合本质:维度建模、粒度对齐与语义锚点
  • 通义DeepResearch:面向产业研究的可追溯深度推理引擎
  • N皇后遗传算法实战:Python手写GA求解100皇后问题
  • 终极指南:3步永久保存微信聊天记录的完整方法
  • 性价比高的绵阳酒店服务商哪个靠谱
  • 2026长沙市黄金回收铂金回收白银回收彩金回收机构实力:项链+戒指+手镯+吊坠专业鉴定上门服务及联系方式推荐 - 亦辰小黄鸭
  • 5分钟掌握华硕笔记本性能调优神器:G-Helper完全解决方案
  • 别再只接LCD了!解锁STM32 FMC的隐藏玩法:驱动AD7606、OLED等并行总线外设的完整指南
  • 告别锚框!用CenterPoint搞定自动驾驶3D检测,Waymo/NuScenes双榜第一的保姆级解读
  • [UEFI架构]必不可少的SecurityArch
  • AI技术写作规范:如何避免虚构与失实内容
  • 如何轻松掌控AMD Ryzen处理器?这款免费调试工具让你成为硬件专家!
  • 【C++初阶】析构函数超详解(误区、语法、调用时机、析构顺序)
  • Horizon UAG部署后连接服务器还是红叉?别慌,教你一步步排查(从日志分析到FQDN解析)
  • 萤石 ERTC 如何一站式解决智能家居各类通话需求?
  • SolidWorks许可回收误杀率,对比三款横评
  • 计算机毕业设计之django基于Python的bs架构的进门审批管理系统设计与开发
  • 2026长治市黄金回收铂金回收白银回收彩金回收机构实力:项链+戒指+手镯+吊坠专业鉴定上门服务及联系方式推荐 - 亦辰小黄鸭
  • Web数据供应链:从爬虫到AI可信数据资产的四层架构
  • 每日一Go-76(架构篇)|多集群部署 / 容灾 / Failover / Backup / 热迁移
  • 别再只搜Star数了!用GitHub Topics和高级搜索,5分钟找到真正适合你的开源项目