Skip to main content

因果效应 🌟

现在,将进入我个人觉得因果推断最核心的部分 「因果效应」,也就是会在各种教程中出现的类似 ATE/ATT 等指标。后面很多有关因果推断的各种方法,例如 PSM/IPW/UPLIFT 等,也都是围绕如何对这些指标进行合理的预估,所以对这些指标进行深入的理解至关重要!

因果推断用的最多的模型有两个。一个是著名的统计学家 Donald Rubin 教授在 1978 年提出的 “潜在结果模型”(potential outcome framework),也称为 Rubin Causal Model(RCM)。另一个是 Judea Pearl 教授在 1995 年提出的因果图模型(Causal Diagram)。

下面使用潜在结果模型来给出因果推断的定义,首先,我们需要定义一些符号。

符号定义

干预

干预 (treatment) TT ,一般我们考虑二值干预,用 Di0,1D_i \in 0,1 来指示用户是否受到了某种干预,例如是否被投放了某广告、是否被灰度了某功能。

潜在结果

潜在结果(potential outcome){Y1i,Y0i}\{Y_{1i},Y_{0i}\} ,对每个用户 ii ,他们对于是否受到干预分别有两个潜在结果 Y1iY_{1i}Y0iY_{0i}

例如Y0iY_{0i}Y1iY_{1i} 分别表示假如一个用户没有被投放游戏广告和被投放时是否会登录游戏。

观测结果

观测结果(observed outcome)YY,但是,一个用户要么在干预组(Di=1D_i=1),要么在实验组(Di=0D_i=0),所以对于每一个用户,我们只能观测到他们的一个潜在结果。

当一个用户没有受到干预时,我们将会观察到 YY = Y0iY_{0i},当一个用户受到干预时,我们将会观察到Y=Y1iY = Y_{1i},这是将观测结果 YiY_i 进行如下定义

Yi={Y1iDi=1Y0iDi=0Y_i=\begin{cases} Y_{1i} & D_i = 1 \\ Y_{0i} & D_i = 0 \end{cases}

反事实

其他(未观察到的)结果就是因果推断中常说的反事实结果(Counterfactual

  • 对于实验组的用户来说,他们的反事实结果就是( Y0iDi=1Y_{\textcolor{red}{0}i} \, |\, D_i = 1 )
  • 对于对照组的用户来说,他们的反事实结果就是( Y1iDi=0Y_{\textcolor{red}{1}i} \, |\, D_i = 0 )

注意,这里的 E[Y0iDi=1]E[Y_{\textcolor{red}{0}i}\,|\,D_i = 1] 就是如果受到干预的人没有受到干预,他们的平均结果会是什么?

是想要却无法直接找到的另一个「平行宇宙」——假如 E[Y1iDi=1]E[Y_{\textcolor{red}{1}i}\,|\,D_i = 1] 部分群体,在平行世界没有没有接受处理,结果会是怎样的!

核心指标

ITE - Individual Treatment Effect

首先说 ITE(Individual Treatment Effect) ,也是最好理解的,就是对于某一个样本,处置和不处置的效应之差,也就是精确到了个人层面上的treatment effect评价

ITEi=Y1iY0i\begin{equation} ITE_i = Y_{1i} - Y_{0i} \end{equation}

举个例子,我们想知道对早起而言,写代码对早起的收入有什么影响,那么我们需要知道写代码之前早起收入,和不写代码的话早起的收入是多少,两者相减就可以得到ITE。

当然早起不能既是程序员又不是程序员,所以我们说ITE是不可观测的。

并且更多情况下,大家不会问「写代码会不会让早起收入变高」,而是会问「程序员群体的收入相较其他职业会不会更高」,更关心的是群体的因果效应,这时候 ATE 就出来了!

ATE - Average Treatment Effect

ATE 就是「平均处理效应(Average Treatment Effect)」,为干预对所有人的平均因果效应,比如实验组上线了新的推荐策略,实验组与对照组之间平均效果的差别就是ATE。

ATE是可以通过随机对照试验(RCT: Randomlized Controlled Trial)获得的

ATE=E[Y1iY0i]=E[Y1iDi=1]E[Y0iDi=0]\begin{equation} \begin{aligned} ATE &= E[Y_{1i} - Y_{0i}] \\ &= E\left[Y_{1 i} \mid D_i=1\right]-E\left[Y_{0 i} \mid D_i=0\right]\\ \end{aligned} \end{equation}

回到刚刚的例子,我们只需要将所有程序员的收入和不是程序员的收入一做差,就得到 ATE 了,但是这里经常会出现问题,就是程序员和非程序员,可能本身条件就有很大的差异!

所以如果将所有程序员揪出来,研究这些人要是没有写代码,他们的收入会是什么水平呢?

那么我们可以在不是程序员的群体里面找到各方面条件都跟他们十分匹配的样本(也就是 PSM 的主要思想),然后两者的收入差异就是 ATT 啦!

ATT - Average Treatment Effects on Treated

现在,让我先不加解释的给出 ATT(干预组的而平均因果效应(Average Treatment Effects on Treated)」) 的定义

ATT=E[Y1iDi=1]E[Y0iDi=1]\begin{equation} A T T=E\left[Y_{1 i} \mid D_i=1\right]-E\left[Y_{0 i} \mid D_i=1\right] \end{equation}

其实就是干预对受到干预的人的平均因果效应。比如实验组受处理的这群人如果不受处理,会是怎样的(这群人受处理与不受处理之间效果的差异)。

为了进一步加深对 ATE 与 ATT 的理解,我们对 ATE 的公式进行改写,如果我们对 (2) 式加减一个 E[Y0iDi=1]\textcolor{#1570C0}{E\left[Y_{\textcolor{red}{0} i} \mid D_i=1\right]} (详见反事实

ATE=E[Y1iY0i]=E[Y1iDi=1]E[Y0iDi=0]Expected difference in group means=E[Y1iDi=1]E[Y0iDi=1] 处理组的平均处理效应 (ATT)+E[Y0iDi=1]E[Y0iDi=0]选择偏差(SelectionBias)\begin{equation} \begin{aligned} ATE &= E\left[Y_{1 i}-Y_{0 i}\right] \\ &= \underbrace{E\left[Y_{1 i} \mid D_i=1\right]-E\left[Y_{0 i} \mid D_i=0\right]}_{\text {Expected difference in group means}}\\ &= \underbrace{E\left[Y_{1 i} \mid D_i=1\right]\textcolor{red}{-}\textcolor{#1570C0}{E\left[Y_{\textcolor{red}{0} i} \mid D_i=1\right]}}_{\begin{array}{c} \text { 处理组的平均处理效应 }(A T T) \end{array}}\textcolor{red}{+}\underbrace{\textcolor{#1570C0}{E\left[Y_{\textcolor{red}{0} i} \mid D_i=1\right]}-E\left[Y_{0 i} \mid D_i=0\right]}_ {\begin{array}{c} \text {选择偏差}(Selection Bias) \end{array}} \end{aligned} \end{equation}

所以 ATE=ATT+SB ATE =A T T+S B ! 那么这里的选择偏差是个啥?

Selection Bias - 选择偏差

选择偏差的意思就是即使没有干预,实验组和对照组的结果也会有所不同。

简单的理解就是平行世界分裂出的这部分群体 E[Y0iDi=1]\mathbf{E}\left[Y_{0 i} \mid D_i=1\right] 和现实一开始就没有接受过处理的群体 E[Y0iDi=0]\mathrm{E}\left[Y_{0 i} \mid D_i=0\right] 相减,如果不为0,就产生了选择性偏差。

举一个积极的选择偏差例子,若 E[Y0iDi=1]>E[Y0iDi=0]E\left[Y_{0 i} \mid D_i=1\right]>E\left[Y_{0 i} \mid D_i=0\right] 即没有接受干预,干预组的个体也会比对照组的个体有更好的结果

那么为什么会产生选择偏差?

  • 原因可能是样本选择偏差:例如我们做健身相关的调查,但只去健身馆收集数据,肯定不能实现有效对比;例如美军著名的飞机幸存者偏差,飞回来的飞机是活下来的飞机,通过他们身上的损伤估计需要加强的部位也是不可靠的;
  • 也可能是自选择偏差:例如入学性别比不均不代表歧视,因为这种分析忽略了性别比的申请倾向,某种性别的人更倾向于申请难度更高的,淘汰率也就更高;警察执法更关注某个种族也不代表就是歧视,看看那个种族犯罪频率是不是相对就高一些。
  • 其他例如遗漏变量、模型错误、测量错误、样本不足都可能导致。

因此,由于选择偏差的存在,错误地得出结论认为实验组和对照组之间的差异是由于干预引起的是不正确的。

那要怎么解决选择偏差呢?其实最好的办法就是随机试验[Randomized controlled trial]

此时样本是随机分布的,即干预在统计上独立于所有潜在的结果,进而使得 DiD_iY0iY_{0 i} 独立 也就是{Y0i,Y1i}Di\left\{Y_{0 i}, Y_{1 i}\right\} \perp D_i,现在

ATT=E[Y1iY0iDi=1]=E[Y1iY0i]=ATEA T T=E\left[Y_{1 i}-Y_{0 i} \mid D_i=1\right]=E\left[Y_{1 i}-Y_{0 i}\right]=A T E

并且

SB=E[Y1i]E[Y0i]=0SB = E\left[Y_{1 i}\right]-E\left[Y_{0 i}\right]=0

当然,并不是所有情况下都可以进行完美的随机试验,所以这时候就有一大波因果推断的方法(PSM、IPW、DID 等)来对 ATE/ATT 进行预估了,这将在后面的内容进行介绍。

深入 ATE 与 ATT

最后,让我们再来梳理一下,我们想要估计的是我们感兴趣的人群中的平均干预效果(ATE)。然而,我们在数据中观察到的是对照组和实验组之间的组均值差异 (YˉD=1YˉD=0)\left(\bar{Y}_{D=1}-\bar{Y}_{D=0}\right) 等于

(YˉD=1YˉD=0)=ATT+SB+ Sampling Error (SE)\begin{equation} \left(\bar{Y}_{D=1}-\bar{Y}_{D=0}\right)=A T T+S B+\text { Sampling Error }(S E) \end{equation}

假设我们有一个足够大的样本,抽样误差接近于零。因此,我们将 (5) 式改写为

(YˉD=1YˉD=0)=ATT+SB\begin{equation} \left(\bar{Y}_{D=1}-\bar{Y}_{D=0}\right)=A T T+S B \end{equation}

将我们观察到的与真实ATE进行比较(加减ATE):

(YˉD=1YˉD=0)Difference in group means=ATEAverage Treatment Effect+(ATTATE)Selection on the returns to treatment +SBSelection Bias\underbrace{\left(\bar{Y}_{D=1}-\bar{Y}_{D=0}\right)}_{\text {Difference in group means}}=\underbrace{A T E}_{\text {Average Treatment Effect}}+\underbrace{(A T T-A T E)}_{\text {Selection on the returns to treatment } }+\underbrace{S B}_{\text {Selection Bias}}

换句话说:

两件事情的关联性=因果关系+外部因素+选择偏差+样本偏差\text{两件事情的关联性} = \text{因果关系} + \text{外部因素} + \text{选择偏差} + \text{样本偏差}

注意:ATTATE\mathrm{ATT} \neq \mathrm{ATE} ,这里的 Selection on the returns" 意味着接受处理的群体对干预的反应与总体群体不同。接受干预可能本身就对人群做了一层筛选,例如上大学这个因素,可能对于能上大学和不能上大学的群体,天然就有差异

所以在样本量足够大的时候,我们可以解决样本偏差,那么因果推断要解决的就是如何在不进行 AB 试验的情况下,消除 Selection Bias 和 Selection on the returns to treatment 来对两件事情的因果关系进行合理的预估!

CATE:Conditional Average Treatment Effect

CATE就是「条件平均治疗效应」,意为在不同条件下取treatment,所产生的效果,也就是关注总体中某一个组别内的平均处置效应:

CATE=E[Yi(1)Yi(0)X=x]CATE = E[Y_i(1) - Y_i(0)|X=x]
举个例子

比如我们想知道投放广告对转化率的影响有多大。这个时候,可能会首先根据用户画像,将所有用户分成不同的组别,然后在各个组别内部,去计算广告投放对这个组别内人群的转化的提升效果,这就是所谓的 CATE

那 CATE 怎么用,举一个增长领域的例子,我们考虑到投入和产出,要把钱花在刀刃上。人群中有些人是无论你推广了还是不推广,它都不会转化。我们应该要把钱投入到那些”如果不推广他们就不会转化,但是推广了就会转化的“人群身上,这就是subgroup,我们就要计算给他们投放广告,能带来多少的效果提升(uplift)。

tip

可以看到CATE和ATT上有一点点相似,一个是对『动作』做了分组后计算的处置效应,一个是对『对象』分组后做的处置效应