背景

都说随机是AB试验的中心,为什么随机这么重要呢?有人说由于随机所以AB组整体不存在差异,这样才能精确估量试验作用(ATE)

ATE=E(Yt(1)−Yc(0))ATE = E(Y_t(1) – Y_c(0))

那终究随机是怎样界说的呢? 依据Rubin Causal Model, 想要让上述估量无偏,随机试验需求满意以下两个条件:

  1. SUTVA
  • 试验个别间不相互影响
  • 试验个别间的treatment可比
  1. Ignorability(Unconfoundness是更强的假定) 是否遭到试验干涉和试验成果无关,从因果图的视点就是不存在同时影响treatment和outcome的其他变量 Y(1),Y(0)⊥ZY(1),Y(0) \perp Z

SUTVA在一般试验中是假定建立的,线上试验还好,很多线下试验很难确保这一点,像滴滴在部分地区投放更多车辆就会导致其他地区出现运力不足,所以个别间是隐含存在相互影响的。但这个不在本节讨论规模以内。

Ignorability在随机试验中,通过对样本随机采样得以确保。但是在观测性试验或许并未进行彻底随机的试验中Ignorability是不建立的。解决办法就是把同时影响是否试验和试验成果的那些变量(Confounding Covariate)考虑进来得到conditional Ignorability。既

Y(1),Y(0)⊥Z∣XY(1),Y(0) \perp Z | X

理论是如此,但X往往是未知且高维的。寻觅X彻底相同的样原本估量ATE并不实际,其间一个解决办法就是下面的Propensity Score Matching。名字很高端核算较简略运用需慎重~

下面我介绍一下中心办法,并用kaggle一个医学相关数据集简略比较一下各个办法。

中心办法

原理

Propensity Score的中心办法分红两步,score的核算和score的运用。score核算如下:

PropensityScore=P(Z=treatmentassignment∣X∈Rn)\text{Propensity Score} = P(Z=\text{treatment assignment}| X \in R^n)

一种了解是它通过对影响Z的X∈RNX \in R^N进行建模, 提炼所有Confounding Covariate的信息。另一种了解是把P(z∣x)P(z|x)作为一种类似度(样本间隔)的衡量。我个人倾向于把它当作一种有目标的降维(N→1N \to 1 ),或是聚类(类似样本)来了解。

然后依据score咱们对样本进行聚合或匹配或加权,使样本满意上述的conditional Ignorability

Propensity Score 估量

估量自身就是一个经典的二分类问题,依据特征咱们猜测每个样本进入试验组的概率。几篇经典的paper(2011年之前)都是用LogisticRegression来解决问题,但放在今天xgBoost和LGB等等集合树算法在特征兼容和精确率上应该会表现更好。并且树对于样本区分的办法天然确保了叶节点的样本有相同的打分和类似的特征。[当然要是你的数据太小LR还是首选]

这儿说两个建模时需求注意的点:

1. 特征选择

这儿的特征能够大体被分为三类

  • 影响treatment
  • 影响outcome
  • 同时影响treatment和outcome的confounder

毫无疑问confounder是有必要要有的,移除confounding Bias是AB试验的中心。但是是否参加只影响treatment和outcome的特征不同论文给出了不同的观念。

结合各方定论,参加对outcome有影响的特征是okay的,其实结合上一篇AB试验的高端玩法系列2 – 更灵敏的AB试验, CUPED!,能够发现参加对outcome有影响的特征近似于变相运用了CUPED,或许下降试验中心目标估量的方差。

参加只对treatment有影响的特征,或许会导致试验组和对照组样本的Propensity score终究散布重合度变低,导致部分试验样本找不到匹配的对照样本,需求慎重考虑。

2. 模型查验

只用AUC,cross-entropy来评价模型的拟合在这儿是不行的。这涉及到Propensity Score的Balancing性质:

Z⊥X∣PropensityScoreZ \perp X | PropensityScore

简略说就是Score附近的样本,X也要类似。这儿你能够直接用可视化boxplot/violinplot来查验,也能够更精确的用T-test等统计手段来查验X是否存在差异。

Score运用

Propensity Score通常有4种用法,咱们逐个简略介绍一下

matching

一句话说按Propensity给试验组对照组进行配对。

按score对每一个试验组样本进行[1/N个][有/无放回]的样本匹配。这儿的参数选择除了实际数据量的约束,相同是Bias-Variance的权衡。因此能够考虑依据样本量,在score相差小于阈值的前提下,别离核算1~N个匹配样本下的ATE,假如成果差异过大(sensitivity),则办法自身需求调整。

也有相应的trim办法旨在剔除score取值极点无法找到匹配的样本(eg. score→0score \to 0)。但在一些场景下trim办法会被质疑。( 小明:你扔掉了一些高收入的样本ROI必定打不平啊怎样能这么算呢>_<)

在数据量允许情况下,我更倾向于Nto1有放回的匹配,由于大多数场景下都是无法彻底考虑所有Covariate的,意味着Propensity score的估量必定在一些特征上是有误差的,这种时分取多个样本匹配是或许下降误差的

stratification

一句话说按类似Propensity对试验组对照组进行分组在组内核算ATE再求和。

详细怎样分组没有确认规矩,只需确保每组内有足够的试验组对照组样原本核算ATE即可。这儿相同是Bias-Variace的权衡,分组越多Bias越少方差越大。通常有两种分位数分桶办法

  • 对全样本propensity score按人数等比例分组
  • 对人数较少(通常是试验组)按人数确认分组鸿沟

这儿相同能够运用trim,但是请结合详细业务场景细心考虑。

Inverse probability of treatment weighting(IPTW)

一句话说按Propensity score的倒数对样本进行加权。

一个彻底随机的AB试验,Propensity Score应该都在0.5附近,而不彻底随机的试验在用Propensity score调整后在核算ATE时Z也会被调整为等权,如下:

e=P(Z=1∣x)w=ze+1−z1−eATE=1n∑i=1nziYiei−∑i=1n(1−zi)Yi1−eie = P(Z=1|x) \\ w = \frac{z}{e} + \frac{1-z}{1-e} \\ ATE = \frac{1}{n}\sum_{i=1}^n\frac{z_iY_i}{e_i} – \sum_{i=1}^n\frac{(1-z_i)Y_i}{1-e_i}

个人对这种办法持保留意见,原因有2: 其一上述matching和stratification尽管运用了score,但本质是运用了score给出的样本类似度的排序,而并没有运用score自身,所以对score估量的精确有必定容忍度。其二拿score做分母很容易碰到score→0/1score \to 0/1从而导致的的极点值问题,这就需求人工调整,而调整自身是否合理也会被质疑。

Covariate adjusted

一句话说我没怎样接触过这种办法,也把model-dependency使用在这儿不太感冒 >.<,有爱好的朋友自己探究吧。要是今后发现它好用再加回来

使用示例

数据来源是Kaggle的开源数据集 Heart Disease UCI[数据链接] 数据自身是依据人们的性别,年纪,是否有过心口痛等医学目标猜测人们患心脏病的概率。

数据量和特征都很少,以下仅用作办法探究,不对成果置信度做讨论

这儿咱们把数据当作一个观测性试验的样本,试验意图变成女性(sex=0)是否男性(sex=1)更易患上心脏病。数据如下:

AB实验的高端玩法系列3 - AB组不随机?观测试验?Propensity Score

AB实验的高端玩法系列3 - AB组不随机?观测试验?Propensity Score

直接从数据核算男性比女性患心脏病的概率低30%!WHAT?! 考虑到数据非常小,咱们用LR估量Propensity Score,男女的score散布如下

AB实验的高端玩法系列3 - AB组不随机?观测试验?Propensity Score

下面我别离运用了stratification,matching和IPTW来估量ATE

stratification

我别离尝试用试验组和用全样本找分位点的办法来核算ATE, 用试验组估量分位点时分3组会有一组对照组样本太少,所以改成2组。成果比较类似ATE在-0.15 ~ 0.16。比直接用全样本估量下降了一半!

这儿stratification分组数的确认,需求在确保每组有足够的treatment和control样本的基础上,确保每组的Covariate散布类似

AB实验的高端玩法系列3 - AB组不随机?观测试验?Propensity Score

AB实验的高端玩法系列3 - AB组不随机?观测试验?Propensity Score

### matching 以下成果别离是:有trim & match 1~4 + 无trim & match1~4。终究估量的ATE和上述stratification的成果类似ATE在-0.15~-0.16直接。并且相对稳健匹配数量并没有对ATE核算产生过大影响。

咱们发现随着匹配的样本上升ATE会越来越明显,所以match的N越大越好?其实并不是,由于P值是样本量的函数,随着样本量上升’细小’的变化也会变明显。所以个人觉得选择最佳的N这儿并不十分重要,比较ATE对不同的N是否稳定或许更有意义。

AB实验的高端玩法系列3 - AB组不随机?观测试验?Propensity Score
AB实验的高端玩法系列3 - AB组不随机?观测试验?Propensity Score

IPTW

。。。预料之中,这个成果是比较奇怪的。一方面数据少(100多),另一方面confonder特征也少,Score的拟合必定欠好。所以得到的竟然是正向的成果。。。


PSM差不多就说这么多,欢迎各种反馈各种谈论~下一节咱们讨论试验浸透低/作用稀释该怎样办?想看更多因果推理AB试验相关paper的小伙伴看过来 Paper_CausalInference_abtest

论文和材料

  1. Peter C. Austin1. An Introduction to Propensity Score Methods for Reducing the Effects of Confounding in Observational Studies. Multivariate Behav Res. 2011 May; 46(3): 399–424. [paper 链接]
  2. Austin PC, Stuart EA. Moving towards best practice when using inverse probability of treatment weighting (IPTW) using the propensity score to estimate causal treatment effects in observational studies. Stat Med. 2015;34: 3661–3679. [paper 链接]
  3. King, G., & Nielsen, R. (2019). Why Propensity Scores Should Not Be Used for Matching. Political Analysis, 1-20. [paper链接]
  4. Morgan, S. & Winship, C. (2015). Counterfactuals and Causal Inference: Methods and principles for social research. Cambridge: Cambridge University Press. Page 142. [材料链接]
  5. Guion, R. (2019). Causal Inference in Python. [材料链接]
  6. King, G. (2018). Matching Methods for Causal Inference. Published Presentation given at Microsoft Research, Cambridge, MA on 1/19/2018. [材料链接]