因果分析系列5--因果分析中的偏差

  • 1.混杂偏差
  • 2.选择偏差
  • 小结

在上一节中,介绍了现实中常见的三种因果图结构:
链结构(chain)A->B->C;
叉结构(fork)A<-B->C;
对撞结构(collider)A->B<-C。
不管多复杂的结构都可拆解为其中的一种或某几种。基于三种常见的结构有助于我们分别探索三种可能导致的偏差。其中链结构对应选择偏差,叉结构对应混杂偏差,对撞结构对应选择偏差。具体介绍如下所示

常见的因果分析偏差主要包含:混杂偏差和选择性偏差。我们将所有变量分为三类:处理变量T,结果变量Y,协变量X。当X同时是T和Y的原因,即叉结构时,若不控制将会产生混杂偏差,X称为混杂因子。当T和Y同时是X的原因,即对撞结构(collider)时,将会产生选择偏差。下面将分别对混杂偏差和选择偏差进行讨论。

1.混杂偏差

偏差的第一大来源和主要挑战是混杂偏差。当处理T和结果Y有共同的原因时就会西产生混杂偏差。如,处理T是教育,结果Y是收入,很难知道教育对收入的因果关系,因为两者有一个共同可观测的原因X:智力。因此,我们可以提出这样的论点:受过更多教育的人赚更多的钱仅仅是因为他们更聪明,而不是因为他们受过更多的教育。为了确定因果关系,我们需要关闭处理T和结果Y之间的所有后门。如果我们这样做,剩下的唯一影响就是T->Y的直接影响。在此例中,如果控制智力X,即比较相同智力水平但受教育程度不同的人,此时结果差异只因受教育程度不同,因为每个人的智力一样。为了纠正混杂偏差,我们需要控制处理T和结果Y的所有常见原因。

g5 = gr.Digraph()
g5.edge("X", "T")
g5.edge("X", "Y")
g5.edge("T", "Y")g5.edge("智力", "受教育程度"),
g5.edge("智力", "工资"),
g5.edge("受教育程度", "工资")
g5


但现实是,我们很可能无法控制所有T和Y的共同原因。因为这里面还有很多未知的原因以及已知但无法测量的原因。例如,此处的智力就是后者之一,尽管做处理很多努力,目前提出了很多测量智商的方法,但依然不确定如何更好地测量智力。另外,针对未测量的变量用U来表示。现在,假设智力U不能直接影响教育T。它只会影响大家在考试中的分数X,但是X决定了你的教育水平T,因为它为你打开了一个好大学的大门。即使我们不能控制不可测量的智力U,我们也可以通过控制X关闭T->Y的后门。假设除此之外,还有家庭收入X1影响你的受教育水平T。

g6 = gr.Digraph()
g6.edge("X2", "T")
g6.edge("T", "Y")
g6.edge("X1", "T")
g6.edge("X2", "Y")
g6.edge("U", "X1")
g6.edge("U", "Y")g6.edge("家庭收入X2", "受教育水平T")
g6.edge("受教育水平T", "工资Y")
g6.edge("分数X1", "受教育水平T")
g6.edge("家庭收入X2", "工资Y")
g6.edge("智力U", "分数X1")
g6.edge("智力U", "工资Y")
g6


针对上图中的分数X1和家庭收入X2进行调节,可以阻断受教育水平T和工资Y之间的所有后门。即, (Y0,Y1)⊥T∣X1,X2(Y_0, Y_1) \perp T | X1, X2(Y0​,Y1​)⊥T∣X1,X2。因此,如果我们可以测量所有常见的原因,通过控制不可直接测量变量的可测量结果变量,同样相当于调节未测量的因素对处理的影响,仍然可获得条件独立性,然后计算T->Y的直接影响。

但如果是不可测变量U直接导致治处理T和结果Y呢?在下面的例子中,智力U直接导致教育T和工资Y。因此,教育T与工资Y之间的关系存在不可观测的混杂。此时,因为它不可测,所以无法控制混杂。然而,我们有其他测量变量可以作为混杂因素的代理。这些变量不在后门路径中,但对它们的控制也一定程度上能够降低混杂偏差(但不会消除)。这些变量有时被称为替代混杂因素。

g7 = gr.Digraph()
g7.edge("X", "U")
g7.edge("U", "T")
g7.edge("T", "Y")
g7.edge("U", "Y")g7.edge("智力U", "IQ X2")
g7.edge("智力U", "分数X1")
g7.edge("父亲受教育程度X3", "智力U")
g7.edge("母亲受教育程度X4", "智力U")
g7.edge("智力U", "受教育程度T")
g7.edge("受教育程度T", "工资Y")
g7.edge("智力U", "工资Y")
g7


上例中,虽然我们不能测量智力U,但可测量智力U的一些原因,如父亲受教育程度X3和母亲受教育程度X4,以及一些被智力U影响的变量,比如智商X2或分数X1。虽然控制这些替代变量不足以完全消除偏差,但确实能够一定程度降低偏差。

2.选择偏差

通过上面的分析,很容易使人产生误解,即尽可能把所有你能测量的东西都添加到模型中更有可能消除或降低混杂偏差。仔细想想,真的是这样吗?

下面来介绍因果分析中偏差产生的第二大来源:选择偏差。如果我们不控制T和Y的共同原因,将产生混杂偏差。但控制过多将产生选择偏差。这里需要提醒的是,经济学家倾向于将各种偏见都称为选择性偏差。在这里,我认为区分选择性偏差和混杂偏差是非常有益的。

通常,当我们控制很多我们应该控制的变量时,选择性偏差就会出现。可能的情况是,处理和潜在的结果在某种程度上是独立的,但一旦我们在对撞结构上进行处理,就变得依赖了。

想象一下,在God的帮助下,你终于能够随机分配教育,以衡量其对工资的影响。但为了尽可能减少混杂,你控制了很多变量。其中,你控制投资。但投资并不是教育和工资的共同原因。相反,投资是两者的结果。受过更多教育的人赚得更多,投资也更多。而且,那些赚得更多的人投资也更多。由于投资与教育和工资是一个对撞结构,通过控制它,你在处理和结果之间开辟了第二条道路,这将使直接效应得度量变得更加困难。思考这个问题的一种方法是,通过控制投资,你可以观察投资相同的小群体,然后找出教育对这些群体的影响。但这样做,你也在间接或无意中让工资不会有太大变化。因此,你将无法度量教育对工资得影响,因为你不允许工资按应有的方式改变。

g8 = gr.Digraph()
g8.edge("T", "X")
g8.edge("T", "Y")
g8.edge("Y", "X")
g8.node("X", "X", color="red")g8.edge("受教育程度T", "投资X")
g8.edge("受教育程度T", "工资Y")
g8.edge("工资Y", "投资X")
g8


为进一步解释原因,假设投资X和受教育程度T均为二值变量,如:投资和不投资,受教育和没受教育。最初,当我们不控制投资时,偏差项为E[Y0∣T=1]−E[Y0∣T=0]=0E[Y_0|T=1] - E[Y_0|T=0] = 0E[Y0​∣T=1]−E[Y0​∣T=0]=0,因为教育是随机的。这意味着,人们接受或不接受教育,他们的工资Y0Y_0Y0​是相同的。但如果我们以投资为条件,即控制投资会发生什么呢?

看看那些投资的人,可能有这样的情况E[Y0∣T=0,X=1]>E[Y0∣T=1,X=1]E[Y_0|T=0,X=1] > E[Y_0|T=1, X=1]E[Y0​∣T=0,X=1]>E[Y0​∣T=1,X=1]。换句话说,在那些投资的人中,那些即使没有受过教育也能做到的人更独立于教育以获得高收益。因此,这些人的工资Y0∣T=0Y_0|T=0Y0​∣T=0可能高于受过教育的群体在没有受过教育的情况下的工资Y0∣T=1Y_0|T=1Y0​∣T=1。类似的推理也适用于那些不投资的人,我们可能还有 E[Y0∣T=0,X=0]>E[Y0∣T=1,X=0]E[Y_0|T=0, X=0] > E[Y_0|T=1,X=0]E[Y0​∣T=0,X=0]>E[Y0​∣T=1,X=0]。那些受教育投资的人,如果没有接受教育,他们的工资可能会比那些没有投资但也没有接受教育的人低。

用一个纯粹的图解论证,如果有人投资,知道他们受过高等教育,就能解释第二个原因,那就是工资。以投资为条件,受教育程度与工资负相关,将产生一个负偏差E[Y0∣T=0,X=i]>E[Y0∣T=1,X=i]E[Y_0|T=0, X=i] > E[Y_0|T=1,X=i]E[Y0​∣T=0,X=i]>E[Y0​∣T=1,X=i].

顺便说一句,如果以共同效应的任何后代为条件,如下图所示,那么我们讨论的这些都是正确的。

g9 = gr.Digraph()
g9.edge("T", "X")
g9.edge("T", "Y")
g9.edge("Y", "X")
g9.edge("X", "S")
g9.node("S", "S", color="red")
g9


类似的事情也会发生,当我们以处理变量T的中介变量X为条件。中介变量是处理变量和结果变量之间的一个变量。中介的因果关系,再次假设你能够随机教育。但需要确定的是,你决定控制这个人是否有白领工作。同样,这种条件作用会使因果效应的估计产生偏差。这一次,不是因为它用对撞结构打开了一条前门路径,而是因为它关闭了处理所通过的一条通道。在我们的例子中,得到一份白领工作是一种方式,更多的教育导致更高的工资。通过控制它,我们关闭了这个渠道,只开放教育对工资的直接影响。如下图所示:

g0 = gr.Digraph()
g0.edge("T", "X")
g0.edge("T", "Y")
g0.edge("X", "Y")
g0.node("X", "X", color="red")g0.edge("受教育程度T", "是否白领X")
g0.edge("受教育程度T", "工资Y")
g0.edge("是否白领X", "工资Y")
g0


为了给出潜在结果,由于随机性,可知偏差为E[Y0∣T=0]−E[Y0∣T=1]=0E[Y_0|T=0] - E[Y_0|T=1] = 0E[Y0​∣T=0]−E[Y0​∣T=1]=0。但若以白领为条件,可得E[Y0∣T=0,X=1]>E[Y0∣T=1,X=1]E[Y_0|T=0, X=1] > E[Y_0|T=1, X=1]E[Y0​∣T=0,X=1]>E[Y0​∣T=1,X=1]。这是因为那些即使没有受过教育也能找到白领工作的人可能比那些需要教育帮助才能找到同样工作的人更努力。同样的道理,E[Y0∣T=0,X=0]>E[Y0∣T=1,X=0]E[Y_0|T=0, X=0] > E[Y_0|T=1, X=0]E[Y0​∣T=0,X=0]>E[Y0​∣T=1,X=0] 因为那些没有受过教育但也没有找到白领工作的人可能比那些即使受过教育也没有找到白领工作的人更努力。

上例中,如果教育与工资是正向因果关系,那么控制中介变量会导致负向偏差,因为它使教育的效果比实际低。但如果教育与工资是负向因果关系,那么控制中介变量将产生正向偏差。即所有情况下,控制中介都会使因果效应比实际看起来更弱。

更直白的理解是,假设你必须在两个应聘者中选择一个职位。两人都有同样令人印象深刻的专业成就,但其中一人未接受高等教育。你应该选哪一个?现实中,未受过高等教育,但与另一个具有相同成就的人被录取的概率更大。

小结

上一节研究了图模型作为一种语言,以更好地理解和表达因果关系的想法。我们对图的条件独立性规则做了一个简短的总结。本节主要探索了三种结构可能导致的结构偏差:

  • 一是叉结构对应的混杂偏差,当处理变量和结果变量有一个共同的原因,我们无法解释或控制时,就会产生混杂偏差。
  • 二是对撞结构对应的选择偏差,当处理变量和结果变量是某变量的共同原因时,即使处理是随机分配的,这种过度控制也会导致偏差。
  • 三是链结构对应的也是一种选择偏差,这是由于过度控制中介变量导致的选择偏差。

通常选择偏差可以通过什么都不做来解决,因为我们偏向于行动,所以更容易导致选择偏差。我们倾向于认为控制的变量越多越好,但实际上很可能弊大于利。
下一节对前面的一个小结:相关、回归与因果

因果分析系列5--因果分析中的偏差相关推荐

  1. [循证理论与实践] meta分析系列之一: meta分析的类型

    证据是循证医学( Evidence-based medcine,EBM) 的核心,基于随机对照试验( RCT) 的系统评价/meta分析是当前 公认的最高级别证据. meta分析在医学领域应用最为广泛 ...

  2. mybatis源码分析系列(开胃菜)-mybatis中的执行器架构体系

    我们知道mybatis通过门面模式给我们提供了一个统一的增删改查的会话SqlSession.但是呢它就像服务员一样只负责点菜并不负责做菜,真正做菜的是执行器.那mybatis中有哪些执行器呢? myb ...

  3. 病毒分析系列 _ 病毒分析环境搭建

    前言 通常进行病毒分析,需要有一个配置好的病毒分析环境,fireeye之前也出过配置好的虚拟机,但是虚拟机安装过程很慢,不如我们自己配置一个,下边对虚拟机的配置和病毒分析的基本原则进行展开说明,打好病 ...

  4. python股票分析系列_Python股票分析系列——基础股票数据操作(一)

    该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第3部分.在本教程中,我们将使用我们的股票数据进一步分解一些基本的数据操作和可视化.我们将要使用 ...

  5. python股票分析系列_Python股票分析系列——基础股票数据操作(一).p3

    该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第3部分.在本教程中,我们将使用我们的股票数据进一步分解一些基本的数据操作和可视化.我们将要使用 ...

  6. python股票分析系列_Python股票分析系列——基础股票数据操作(二).p4

    该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第4部分.在本教程中,我们将基于Adj Close列创建烛台/ OHLC图,这将允许我介绍重新采 ...

  7. 因果分析系列2--随机试验

    因果分析系列2--随机试验 黄金准则 案例分析 背景介绍 数据分析 小结 理想实验 分配机制 小结 黄金准则 在因果分析系列1–入门我们了解了相关与因果的不同之处.我们也看到了使相关成为因果关系的必要 ...

  8. 因果分析系列1--入门

    因果分析系列1--入门 因果分析系列1--入门 因果简介 相关不是因果 基本符号定义 数值分析 偏差 图解偏差 因果分析系列1–入门 因果简介 目前机器学习非常擅长回答预测问题.新的人工智能浪潮并未给 ...

  9. 因果分析系列6--相关,回归与因果

    因果分析系列6--相关,回归与因果 相关与因果 相关与回归 回归与因果 回归理论 非随机数据的回归分析 相关,回归和因果这些是统计和机器学习中经常提到的一些术语,它们均可通过观测数据定义定义不同变量之 ...

  10. 因果分析系列7--分组和虚拟变量回归

    因果分析系列7--分组和虚拟变量回归 1. 分组数据回归 2.虚拟变量回归 小结 在本文中,我们将介绍如何使用线性回归来处理分组数据和虚拟变量回归.这两种技术都是因果推断中非常有用的工具.我们将首先介 ...

最新文章

  1. ASP.NET将原始图片按照指定尺寸等比例缩放显示图片
  2. 全球Top5互联网巨头崛起秘诀,真相竟然是?
  3. SQL中常用的日期计算
  4. MXNet设计和实现简介
  5. Linux学习笔记(四)|软件安装指令
  6. 图文详解CDC技术,看这一篇就够了!
  7. 使用自定义断言丰富测试代码
  8. C语言:一种通用的程序设计语言
  9. 深入css布局 (1) — 盒模型 元素分类
  10. android--多线程,android多线程
  11. hp-ux mysql_HP-UX 安装MySQL
  12. atomiclong 初始化_Java并发编程【1.2时代】
  13. Dubbo集成Spring与Zookeeper实例
  14. elasticsearch修改配置文件后启动报错:Caused by: expected 'document start‘', but found BlockMappingStart
  15. 计算机程序阶乘怎么写,N的阶乘的程序怎么写啊?VB啊
  16. Linux 内存子系统常见参数以及调优
  17. Error writing to process file pid.nbf问题
  18. Bootstrap-02 (前台开发框架)
  19. kotlin java 知乎_GitHub - luciferldy/ZhihuDailyKotlin: 这是是一个使用 Kotlin 开发的知乎日报客户端...
  20. 10M/100M自适应以太网接口

热门文章

  1. 一个大一学生学习C语言的心得
  2. apple tv 开发_如何在新的Apple TV上重新排列,配置和删除应用程序和游戏
  3. win10 +ubuntu20.04双系统安装:双硬盘+nvidia独立显卡
  4. Excel如何批量生成条形码
  5. MICCAI 2022 | 深圳大学医学部智能超声实验室6篇论文分享!
  6. 服务器引导盘装系统怎么选择u盘,小编教你怎么设置u盘为启动盘
  7. 计算机专业技能考核方案,巩义市计算机专业技能课教学考核方案.doc
  8. python爬取微博恶评_用python写网络爬虫-爬取新浪微博评论
  9. (2021年)iOS面试题及答案,以及添加Flutter 面试问题,Swift面试题
  10. 所谓数据结构,对python来说不过如此