因果推断学习笔记一

一、因果推断

本次课程是《Introduction to Causal Inference》这门课程的第一次课程,主要介绍跟因果推断相关的一些基本知识。这门课程会涉及到一些跟统计和机器学习相关的背景知识。

因果推断是在推断一个变量( X X X)对另外一个变量( Y Y Y)的影响。它的使用场景非常广泛。比如判断某种治疗方式对于减轻疾病是否有用; 判断哪种环保政策对减少排放更有用;判断社交媒体是不是导致社会成员的心理状况恶化;判断最近的疫情对广州/深圳的影响有多大,判断整个COVID-19对网约车的影响有多大;…… 因果推断在企业里可以直接应用在与决策相关的部分。比如,判断某个新的策略是不是能够有效提升GMV;判断节假日的某个运营活动是否能够有效拉动司机的出车意愿;在日常运营中,判断给某个城市的B补/C补额度如何分配才能最大化这个城市的完单;在广告投放中,某个广告展现是否有效刺激了用户购买产品的意愿……
在这里插入图片描述

我们首先从一个例子出发,来了解下因果推断为什么不像想象中那么简单。我们会介绍辛普森悖论的一个例子,并在其中说明因果假设在我们判断因果效应时十分重要。第二部分会介绍association, correlatioin 和causation的关系, 会详细说明为什么association/correlation不能表示causation。第三部分会引入潜在结果的概念来进行因果效应的计算;最后一部分会介绍在只有观测数据,没有实验数据时,如何进行因果推断。
在这里插入图片描述

二、辛普森悖论

先从一个辛普森悖论的例子出发,假设你是制定国家防疫政策的工作人员,有一种新的疾病COVID-27,有两种治疗方法A(0)和B(1)经过了前期实验,这时你手头有一些关于疾病以及治疗方法A和B的一些数据,你需要为国家和人民找到一个适合的治疗方法。对治疗方法唯一的考量因素就是让死亡人数尽量少,或者说让尽量多的人生存下来。在这个例子里,还有一个重要的事实,Treatment B比Treatment A更稀缺。在这个实验里,每个病人在治疗开展时,都有一维二值变量来描述他当时病情的严重程度:轻微(0),严重(1)。对每个病人都有一个Outcome Y,表示病人活下来了(0)或者死亡了(1)。这个例子里的所有相关变量都采用了二值变量。但是在我们实际的使用过程中,并不仅仅只处理二值变量有关的因果效应。使用二值变量是因为二值变量理解起来更容易。 在我们实际的使用过程中,经常会碰到连续Treatment或者多Treatment的因果效应。
在这里插入图片描述

这张图就是这次试验数据的汇总。在使用了治疗A的人群中,16%的病人死亡,1500人接受治疗,其中240人死亡。在使用了治疗B的人群中,19%的病人死亡。从汇总数据上看,治疗A要比治疗B好一些,因为死亡比例减少了3% 。
在这里插入图片描述

如果我们对数据进行分情况讨论,对于症状轻微的病人而言,如果采用了治疗A,死亡率是15%,如果采用治疗B,死亡率是10%, 从这个数据上看, 治疗B的效果更好一些。对于症状严重的病人也是一样,仍然是治疗B的效果会更好。那么问题来了, 数字为何翻转了?也就是说只查看总体时,治疗A看起来更好;查看每个子组时,治疗B更好。这就是辛普森悖论。在A组计算总体死亡率0.16的这个式子中,轻症患者的死亡率的权重较大,重症患者的死亡率的权重较小。这是因为大多数接受治疗A的人群中,轻症患者的比例较大。所以总体死亡率0.16主要是因为轻症死亡率0.15在其中占的比例非常大。对于B组数据而言,重症患者的比例非常高啊,达到了500/550。所以0.19主要是因为重症死亡率0.20在其中占的比例非常大(500/550)。 辛普森悖论主要来自于这种不平等的加权(unequal weighting)。 治疗A中的大多数病人是轻症,治疗B中的大多数病人是重症。重症病人比轻症病人更容易死亡。

虽然我们知道了辛普森悖论的来源,通过对式子进行拆分知道数字为什么反转,但是我们还是不知道该采用哪种治疗方式。这个问题的答案很大程度上取决于因果结构。

场景1: Condition(病情)是Treatment(治疗)的原因,而且病情和治疗一起导致了结果。在这种情况下,选择治疗B效果更好。我们假设一种治疗方案的分配过程:当病人来找医生看病时,如果病人症状较轻,医生选择治疗A给病人,因为他想保留更稀缺的治疗方案B给重症病人。所以在患有轻症的1450人中,有1400人被分配到了治疗A组,仅有50人被分配到了治疗B组。如果重症病人来找医生看病,医生更倾向于分配治疗方案B。这就能解释为什么大多数重症病人(500/600)被分配了治疗B。 在这种情况下,我们认为Treatment B的治疗效果更好,是因为在与Treatment A比较的过程中,Treatment B被“不公平”的分配给了患有严重疾病的人。当病情被作为分配治疗方案的原因时,必须针对病情做调整。

在这里插入图片描述

场景2: 在这个场景下,治疗手段是引起病情不同的原因,此时,Treatment A是更好的治疗手段。在因果图中,Treatment是C和Y的原因,C是Y的原因,但不是T的原因。我们再假设一种治疗方案的分配过程,来说明Treatment A是更好的治疗手段。当病人来找医生看病时,医生随机的给病人分配治疗方案A或者B。由于治疗手段B更稀缺,所以在全量2050个病人中,1500个人分配了治疗方案A,仅有550个人分配了B。 然而由于B非常稀少,所以被分配到B组的人群需要等待很长时间才能够真正接受治疗B。 病人在等待的过程中导致病情更为恶化,所以B组中的重症比例更高。然而对于分配给治疗组A的病人来说,A非常充足,病人不需要等待,在病人还处于轻症时,就能够给予及时的治疗,所以A组中的轻症比例更高。在这种情况下,我们选择A,是因为Treatment B的选择会导致病情的恶化,进而影响死亡率。此时,讨论哪种治疗方案更优,需要看总人数。方案B不被选择,不是因为方案B的治疗方案本身更差,而是由于它的稀缺性会让病情恶化。
在这里插入图片描述

总结一下,当Condition是选择治疗的原因时,我们更喜欢B;当治疗是Condition的原因时,我们更喜欢A。在决策A/B哪个更好时,因果结构是关键。

这个例子给我们一个非常重要的启示:在进行因果推断时,数据很重要,数据的产生过程同样重要。这与我们做相关性学习时关注的重点不一样。

对于机器学习领域的同学们来说,换句话说就是,prediction不是causation。 Brady的课程内容中没有对correlation和causation进行区分,后面我们会引申一下correlation与causation的区别。

三、prediction与prediction

在这里插入图片描述

这里是另一个例子,在这份数据中,我们发现大多数头天晚上穿着鞋子睡觉的人,第二天早上醒来时会伴随头痛。而且大多数头天晚上没有穿鞋子睡觉的人,早上醒来时并不会头痛。于是,我们认为穿鞋子睡觉跟早上起来头痛这两件事情之间有着强相关性(association)。如果第二天早上头痛的人在看到这份数据之后可能会想“哎,那我不应该穿鞋睡觉的,那样我就不会头痛了”。 但是,这份数据背后还有一个隐藏的原因,那就是大多数晚上穿鞋子睡觉的人喝多了,同时这些人在早上起来后头疼。然后我们就知道穿鞋子睡觉和头痛之间仅仅是关联性,没有因果性,它们之间有一个共同的原因:头天晚上喝酒。
在这里插入图片描述

穿鞋子睡觉的人和不穿鞋子睡觉的人有一个非常明显的不同:晚上是否喝酒。在平均喝酒人数这个feature上,两组的表现完全不同,所以这两个组之间完全没有可比性(除了是否穿鞋睡觉不同,晚上是否喝酒也有很大的不同)。当我们在做因果推断时,我们希望实验组与对照组除了treatment不一样以外,其他协变量的分布是完全一样的。

Confounding(混淆)是Treatment和Outcome的共同的原因(喝酒是穿鞋睡觉(Treatment)和头痛(Outcome)的共同的原因),从图上表示,在穿鞋睡觉和头痛之间有一个混杂关联,这就是我们观察到的现象。 这与因果关联不同,因果关联是指从穿鞋睡觉到头痛之间有一条单向边。通常情况下,我们观察到的关联是混杂关联和因果关联的混合。

虽然我们都知道相关不等于因果,但是在日常分析时,还是不可避免得陷入相关等于因果的误区。在头疼的这个例子里,我们可以用STAR来代替穿鞋子睡觉和睡前喝酒,这个STAR可以是任何闪入我们大脑里的念头。比如,某个人正好读了一个文章,上面说咖啡因会导致头痛,然后他恰好想起来了,他昨天喝了咖啡,他就会强化这个有偏见的认知“喝咖啡会导致头痛”,即便他很久以前读过另一篇文章“喝咖啡不会导致头痛”,但他几乎不会想起来这件事情。当我们头痛的时候就会想“我为什么会头痛,以后怎么做才不会头痛”。这就是一个常见的用相关代替因果的认知偏见的动机。比如,在我的认知里,我比较怀疑打疫苗的安全性,而打疫苗后正好有点头痛,我就会怀疑打疫苗引起了头痛;再比如,在我的认知里,小朋友多参加体育运动可以提升他的专注力,于是有时候我发现他的专注力有提升,就会归因到最近领他去参加的体育活动;
在这里插入图片描述

下图是真实的例子,绿线是5.21凌晨的完单量,蓝线是5.20日凌晨的完单量,红线是5.14凌晨的完单量,我们可以看到5.21凌晨2点多有一个小高峰,那么这是什么原因造成的呢?于是,各种各样与5.20,5.21相关的事件的信息会涌入我们的大脑:情人节?下雨?《速度与激情》上映?现实世界中会有很多这样用相关性代替因果性的例子,在真正进行因果推理时,需要大胆假设,小心论证。针对这个例子,那么我们如何使用其他更多信息来证明或者证伪我们刚才所做的各种假设呢?
在这里插入图片描述

这是另一个真实的数据,黑线是Nicolas的电影数量,红线是掉进泳池淹死的人的数量,这两份数据看起来在时间上有非常好的相关性。那我们会猜测下原因:1. Nicolas的电影会鼓动人们落水溺亡?2. Nicolas发现有人落水溺亡,于是他就拍电影劝说人们远离游泳池?3. 这俩原因都不是,这只是一种巧合?
在这里插入图片描述

所以,再重复一次,大家都听说了很多次的真理:关联不代表因果。在Brady的材料里,没有严格区分Correlation和Association,但在严格的定义中,这俩是不一样的。其中Association的含义最广,与“独立”/“不相关”相关。它表征的含义是 P ( X ∣ Y ) ! = P ( X ) P(X|Y)!=P(X) P(XY)!=P(X), 也就是说在已知 Y Y Y的信息的情况下,我们对 X X X的认识是发生了变化的。而Correlation指的两个变量在趋势上有相关性

在这里插入图片描述
在这里插入图片描述

那么,到底什么代表了因果关系的存在呢? 这个问题,对于研究因果推断的同学而言,我们必须要回答这个问题。我们如何知道一件事情是另外一件事情的因,且因果效应的大小如何衡量。

四、潜在结果

为了合理的推断因果效应,我们引入了一个新的概念:潜在结果。这个概念是因果推断所特有的,在常规的统计学或者机器学习的范畴里,用不着这个概念。假设在这个例子里,我们知道如果吃药,头痛会消失。而且同时我们也知道,如果不吃药,头痛就不会消失。如果这两件事情我们都知道,那我们就说这粒药丸对于头痛的治疗是有因果效应的。但是如果在另一个假设中,如果你没有吃药,头痛也消失了,也就是说,不论是否吃药,过一段时间头痛都消失了,那么在这种情况下,就说这粒药丸对于头痛的治疗没有因果效应。这是一个潜在结果的直观的例子。
在这里插入图片描述

现在,我们对潜在结果框架中的各种notation(符号)给出更形式化的定义: d o ( T = 1 ) do(T=1) do(T=1)表示服用了药丸; d o ( T = 0 ) do(T=0) do(T=0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值