目录
你需要的只是回归
你需要的只是回归
在处理因果推断时,我们看到每个人有两个潜在的结果: 是个体如果不接受干预的结果和 是他或她接受干预的结果。将干预变量 T 设置为 0 或 1 的行为会实现其中一个潜在结果,并使我们不可能知道另一个结果。这导致个体处理效果 是不可知的。
所以,现在,让我们专注于估计平均因果效应这个更简单的任务。考虑到这一点,我们接受这样一个事实,即有些人对干预的反应比其他人更好,但我们也接受我们无法知道他们是谁的事实。相反,我们将尝试看看,平均而言,干预是否有效。
这将为我们提供一个简化的模型,具有固定的处理效果 。如果是正的,我们会说,平均而言,干预具有积极的效果。即使有些人会对此做出不良反应,但平均而言,其影响将是积极的。
大家应该还记得,由于偏差的存在,我们不能简单地用平均值的差异 E[Y|T=1]-E[Y|T=0]来估计 。当受干预与否的两方也受到干预本身以外的因素影响时,往往会出现偏差。下面对它们在潜在结果方面的差异 的拆解可以看到偏差的影响:
之前,我们看到了如何通过随机实验,也被称为 随机对照试验 (RCT),的方法来消除偏差。 RCT 迫使接受干预的和未接受干预的人统计上一样,从而消除偏差的影响。我们还看到了如何在我们对干预效果的估计值上设置不确定性水平。也就是说,我们研究了在线教学与面对面教学的情况,其中 T=0代表面对面授课,T=1 代表在线课堂。学生被随机分配到这两种类型的讲座中的一种,然后评估他们在考试中的表现。我们已经建立了一个 A/B 测试函数,可以对两组人群进行比较,并提供平均干预效果的估计值,并为其提供一个置信区间。
现在,我们可以看看如何使用因果推理的主要工具,线性回归,来完成上述这些工作!这么想吧。如果把比较处理过和未处理过的平均值比作甜点里的苹果,那么线性回归就是甜点里的冷奶油提拉米苏。或者,如果直接比较干预和未干预对象的方法像是一条陈年老式的白麦面包,那么线性回归将是由酸面团制作,并由查德·罗伯逊本人亲自烘焙而成的外脆内软的乡村风格面包,好吃的不得了。
让我们看看这种美是如何运作的。在下面的代码中,我们希望将上述线课程与面对面课程的效能比较进行完全相同的分析。但是,与其进行获得置信区间所需的复杂数学运算,我们直接进行回归分析。更具体地说,我们估计以下模型:
请注意,online 指代干预与否的,因此是一个虚拟变量。当面对面教学时,干预变量值为 0,在线时则为 1。考虑到这一点,我们可以看到通过线性回归将得到 和 。其中 将是我们的 ATE。
import warnings
warnings.filterwarnings('ignore')
import pandas as pd
import numpy as np
import statsmodels.formula.api as smf
import graphviz as gr
%matplotlib inline
data = pd.read_csv("data/online_classroom.csv").query("format_blended==0")
result = smf.ols('falsexam ~ format_ol', data=data).fit()
result.summary().tables[1]
这个方法确实相当惊人。 我们不仅能够估计 ATE,而且还可以毫不费力地获得置信区间和 P 值! 更重要的是,我们可以看到回归方法做得正是我们希望它做得事情:比较 和。 截距正是T=0,时的样本均值,是否在线授课变量对应的系数正是均值的样本差值−。 还不相信? 没问题。 你可以亲眼看看:
(data
.groupby("format_ol")
["falsexam"]
.mean())
format_ol
0 78.547485
1 73.635263
Name: falsexam, dtype: float64
正如预期的那样。如果在截距中加入ATE,即是否在线授课变量的参数估计,则得到处理后的样本均值:
78.547485+(-4.9122)=73.635263