数据分析篇-因果推断中的局部平均实验效果

数据分析篇-因果推断中的局部平均实验效果

我们经常会遇到无法均分流的实验场景,而对于随机分配实验场景的流量有偏性,想分析一个感兴趣的实验群体或者子群体的平均实验效果(Average Treatment Effects,ATE),但是使用非参数方法来分析场景是有局限性的&导致结果的不准确性,为此需要通过LATE引入工具变量来进行解决。

什么是局部平均实验效果(Local Average Treatment Effects,LATE)

故事引入

假设你想看当兵对以后工作收入的影响,由于反事实问题的存在 ,我们只能观察一个人当兵或者不当兵的其中一种情况,因此我们只能去估计当兵前后收入的平均效果。同时这里边有内生性,所以你想找一个工具变量(instrumental variable, IV),影响当兵的选择,但不直接影响收入

在越南战争期间,美国用抽签的方式决定谁去当兵,抽签的标准是出生日期,如果你被抽中了,恭喜你,政府要求你去当兵,如果你没被抽中,政府就不会强迫你去当兵。其中Z为随机抽取的资格,D为是否参军。

由于抽签是随机的,所以并不直接影响收入,但抽签确实影响了当兵与否,所以这是一个合适的工具变量。

但是抽签只能解释当兵行为的一部分。设想世界上有四种人:

  • 爱国主义者:无论是否被抽到,都会当兵
  • 反战主义者:无论是否被抽到,都不去当兵
  • 依从者complier(正常人):抽中就当兵,没抽中就不当兵
  • 疯子:抽中了不去当兵,没抽中要去当兵
人群类型Z = 1 D(1)Z = 0 D(0)
爱国主义11
反战主义者00
依从者10
疯子01

假设当兵的收入是,不当兵的收入是,则抽中、与没抽中就可以表示如下:

人群类型抽中没抽中
爱国主义
反战主义者
依从者
疯子

简单点来看,可以看到没抽中与抽中后实验效果相减:

  • 爱国主义者、反战主义者的实验效果相抵消了;
  • 依从者的实验效果是;
  • 疯子的实验效果正好相反

那么剩下的是我们感兴趣的实验效果吗?

对于依从者来说,确实是,但是对于疯子来说,它却是。

如果我们求个加权平均的话,实验效果也可以是任何一个结果(正、负、零)。

因此我们需要做一个假设:不存在疯子(在下面的理论表达章节中是有论证的)。

也就是对于一个正的激励,这是因为人们总是在激励后比激励前更可能去做这个事儿。于是疯子这类人没有了,而依从者(正常人)这确实是我们感兴趣群体的实验效果,通过引入工具变量IV评估了当兵前后收入影响,这就是LATE的概念

LATE的理论表达

在了解LATE的时候,被其中的逻辑思想表达震慑,感觉这更像一种带有哲学的思想

0 1

因果推断识别

picture.image

在表达LATE之前先了解一些,先定义一些基本符号含义,以下的符号表达可以用上面当兵收入案例来理解:

  • 个体 ,
  • 表示有实验效果
  • 表示没有实验效果
  • 表示是否参与实验的一个指标定义

那么对于随机采样一个样本,实验效果就有如下表达:

那么个体实验效果就可以表达如下:

但是由于和对于同一个个体不能被同时观察,因此就只能去比较不同个体的平均实验效果估计:

在一个社会项目中,研究人员经常依赖工具变量(IV)评估实验效果 ,从而定义如下:

是工具变量,独立于实验结果、,并与指标相关,具有如下关系:

定义是一个随机变量,且 ,

, 如 果 个 体 未 参 与

, 如 果 个 体 参 与

很显然无法观察全部完整的用户指标集合,这里就需要像设计和一样,来设计工具变量。

对于一个个体的随机采样,其中, ,根据参与实验的状态,定义工具变量如下:

条件1: (工具有效性)

是一个随机变量,

(i) , 独立同分布于 ;

(ii) P(w)是w的一个函数,且 ;

其中(ii)在具体场景中是可测试的;本质就是参与某种实验状态的那部分群体的实验效果;(i)类似回归模型中的一些前提假设,不可测试的,必须针对具体case,具体讨论。同时需要注意的随机分配并不能保证满足(i)。

条件2:(单调性)

对于所有的、, 所有的用户 , 都有:

  • 或者

这一个条件确保了工具变量以单调的方式影响实验参与状态或者决策,从而防止实验参与状态向相反的方向转变。即如果一个人 情况下比 的情况下更有可能参与,那么任何一个人参与,也将比参与 。

类似条件1这个条件基本也是不可测试的,他的有效性在一些特定的场景下是可以论证的。

其实如果不能很好的理解这个条件,把他类比[当兵收入案例]中的那个疯子是不是就可以很好的理解了呢。由于工具变量影响的单调性,不允许存在向参与实验状态相反的方向转变,即假设了疯子这一类人是不存在的。

在基于上面的条件要求,可以得到如下的实验结论:

定理1:

如果条件1和2都满足,我们可以定义下面的平均实验效果:

基于这个理论,对于那些通过工具变量改变实验参与状态的实验效果估计,可以被定义为LATE。

其中

IV工具变量估计

02

因果性

picture.image

说了这么多似乎还是不清楚这其中的因果性在哪里。我们可以看下面这张图:

picture.image

  • 由于D和Y之间存在混杂因子U,两者之间的因果作用是不可以用线性回归相合估计的;
  • 但是工具变量Z的存在使得D到Y的因果作用的识别成为了可能。 其中
  • 即无Z到Y的直接作用
  • 相关性
  • 排除性 , 即工具变量Z要与内生性e(不可观测到的因子)无关

对下面模型两边关于取协方差

得到如下等式:

因此:

那么就可以得到如下矩估计:

当 是0-1变量时,上面式子可简化成:

场景应用

LATE在随机实验结合工具变量场景中越来越普遍,比如

  • Bloom 1997年的JTPA案例
  • Sherman 1984年的警察对家暴的随机处理案例
  • 多个随机对照试验作为IV,实验对整个人群的影响
  • 某个社会是按是否能够提高投票率

以上面场景为例[3],文章目的是研究某个社会实验是否能够提高投票率,实验是随机化的,但是并非所有的实验组的人都依从。因此这里的变量Z表示随机化的实验,D表示依从与否,Y是投票与否的示性变量。

数据集:https://dataverse.harvard.edu/dataset.xhtml?persistentId=hdl:1902.1/21729&studyListingIndex=5\_c49f1060ddaa41a23e5759168940

原始数据如下:

picture.image

根据下一个部分的函数,我们得到如下的结果:


          
            
CACE.IV(Y, D, Z)  
$CACE  
[1] 0.07914375  
  
$se.CACE  
           [,1]  
[1,] 0.02273439  
  
$p.value  
             [,1]  
[1,] 0.0004991073  
  
$prob.complier  
[1] 0.2925123  
  
$se.complier  
[1] 0.004871619  

        

由此可见,这个实验对于提高投票率,有显著的作用。


          
            
## function for complier average causal effect  
CACE.IV <- function(outcome, treatment, instrument) {  
  Y <- outcome  
  D <- treatment  
  Z <- instrument  
  N <- length(Y)  
  
  Y1 <- Y[Z == 1]  
  Y0 <- Y[Z == 0]  
  D1 <- D[Z == 1]  
  D0 <- D[Z == 0]  
  
  mean.Y1 <- mean(Y1)  
  mean.Y0 <- mean(Y0)  
  mean.D1 <- mean(D1)  
  mean.D0 <- mean(D0)  
  
  prob.complier <- mean.D1 - mean.D0  
  var.complier <- var(D1) / length(D1) + var(D0) / length(D0)  
  se.complier <- var.complier^0.5  
  
  CACE <- (mean.Y1 - mean.Y0) / (mean.D1 - mean.D0)  
  
  ## COV  
  pi1 <- mean(Z)  
  pi0 <- 1 - pi1  
  
  Omega <- c(  
    var(Y1) / pi1, cov(Y1, D1) / pi1, 0, 0,  
    cov(Y1, D1) / pi1, var(D1) / pi1, 0, 0,  
    0, 0, var(Y0) / pi0, cov(Y0, D0) / pi0,  
    0, 0, cov(Y0, D0) / pi0, var(D0) / pi0  
  )  
  Omega <- matrix(Omega, byrow = TRUE, nrow = 4)  
  
  ## Gradient  
  Grad <- c(1, -CACE, -1, CACE) / (mean.D1 - mean.D0)  
  
  COV.CACE <- t(Grad) %*% Omega %*% Grad / N  
  
  se.CACE <- COV.CACE^0.5  
  
  p.value <- 2 * pnorm(abs(CACE / se.CACE), 0, 1, lower.tail = FALSE)  
  
  ## results  
  res <- list(  
    CACE = CACE,  
    se.CACE = se.CACE,  
    p.value = p.value,  
    prob.complier = prob.complier,  
    se.complier = se.complier  
  )  
  
  return(res)  
}  

        

参考

[1]https://www.zhihu.com/question/32199571

[2]https://cosx.org/2013/08/causality6-instrumental-variable

[3]Getting Out the Vote in Local Elections: Results from Six Door-to-Door Canvassing Experiments

[4]Identification and Estimation of Local Average Treatment Effects


欢迎加入CH&数据分析SQL BOY们,扫码加群或者添加作者好友,回复关键词【数据分析】,自动拉你进群,欢迎来交流学习数据分析相关知识呀~

picture.image picture.image

0
0
0
0
评论
未登录
暂无评论