发布网友 发布时间:2022-09-14 15:05
共1个回答
热心网友 时间:2024-08-04 19:52
本文参考自 Propensity Score Matching, Zolzaya Luvsandorj
Propensity Score Matching 是观察性因果研究中最常用的一种 Matching Sample 的手段, 本文通过一个例子来介绍这种方法。
在开始之前, 我们先介绍三个术语
为了研究因果关系, 我们一般都会通过随机实验来控制干预变量, 随机实验中的随机分组可以排除一切混淆变量, 从而保证实验的有效性。 但是有些时候,我们无法进行实验, 可供研究的只有已经生成的数据。 由于没有经过随机分组, 没有排除混淆变量, 这时 Treatment variable 是不可用的。
倾向得分匹配是一种非实验性的因果推理技术。它试图在混淆变量上平衡干预组合对照组,使它们具有可比性,以便我们可以使用观察数据得出干预变量的因果效用的结论, 它一般分为5个步骤
在进行 Propensity score matching, 最重要的一步就是收集数据。 在收集数据的时候, 一定要把所有可能的Confounding variable 都囊括进来。 如果有重要的Confounding variable 没有被纳入到数据集中, 那么最后的匹配就很可能是无效的。
本例采用 泰坦尼克号数据 , 为了简洁, 我们只使用少量的变量作为 混淆变量。
这里, 我们试图调查:购买三等舱, 是否会影响到最后的生存率。 而我们认为年纪,性别可能会同时影响到是否购买三等舱(年纪,性别也会影响经济水平) 和是否获救(老人,妇女,儿童被优待)。
首先,我们先直接看一下三等舱与生存率的关系:
三等舱生存率是 24%, 非三等舱生存率为 57%。
接下来,我们看一下,在不同的混淆变量下, 干预组(三等舱) 与对照组(其他舱)获救率的分布。
可以看到,买三等舱票的人中, 年轻人居多。
接下来, 我们看看性别:
很明显, 两组中性别组成成分不一致。
从上面的分析可以看出, 干预组与控制组的 年龄,性别组成成分差异比较大, 因此我们不能不考虑这些因素,直接得出三等舱影响生存率的结论。
Propensity Scores 其实就是用混淆变量(age, is_female)来回归是否进入干预组(is_pclass3), 因为 “是否进入干预组” 是一个二分类变量(0或者1表示), 我们可以用 Logistic Regression。
proba就是 Propensity Scores, 他代表该条记录被分配到 干预组中的概率。
接着我们看一下得到的模型的性能:
我们看一下 prob 和对应的 logit 在 control 和 treatment 组上的分布:
我们可以看到, 干预组和控制组有重叠部分, 这对接下来的匹配来说, 是个好消息。
我们依据 Propensity Score , 把干预组和对照组中的得分最接近样本进行一对一匹配, 注意, 在匹配中会重复使用样本, 因此有些样本会在结果中出现多次。
我们重新创建一个 data frame
可以看到, 匹配后的干预组和对照组非常接近了。 我们在看一下在年龄上的分布
可以看大, matching 以后的数据集平衡性好了很多。 我们在看一下性别:
接着,我们评估一下 ATT 和 ATE。 关于这些指标的意义,请参考[因果推断常用评估指标]。( https://www.jianshu.com/p/5ebb3b2a8f55 )
通过ATT, 我们可以得出三等舱确实会影响生存率的结论(降低)。 虽然和我们一开始得出的结论相同, 但是由于排除了混淆因素,现在的结论更加有效。