因果推断-PSM的原理及python实现

这篇具有很好参考价值的文章主要介绍了因果推断-PSM的原理及python实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、背景:员工技能培训真的是浪费时间吗

二、PSM的原理及python实现

1、PSM的原理

1.1 计算倾向性得分

1.2 匹配对照组样本

1.3 平衡性检查

1.4 敏感度分析

2、PSM的python实现


一、背景:员工技能培训真的是浪费时间吗

假设你是一家大企业的老板,你希望知道员工技能培训对员工生产率的提升有多大帮助。已知参加培训的员工有500人,于是你又随机抽取了500个未参加培训的员工,观察两组之间生产率的差值(ATE),并打算以此作为培训对生产率提升的因果效应。结果发现,两组员工的生产率相差不大,于是你得出“员工培训都是浪费时间”的结论。

试问,这个老板得到的结论正确吗?我们且不说结论本身是否正确,但是可以确定老板得到结论的过程缺乏科学性(不满足CIA假设)。因为我们知道这两组员工本身生产能力可能就有差别,参加培训的员工往往都是技能水平不足想要提升的,而技能优秀的员工一般都不会参加培训。直接将两组生产率作差值忽略了两组员工本身技能水平的差异,这样计算得到的因果效应会偏小。那该怎么做才能得到正确的结论呢?

最理想的做法是说,让参加了培训的张三再倒退回参加培训前的时间点(回溯),然后不参加培训再过一遍人生,看看这两个人生的张三生产率有什么差异(ATT)。很明显,时光无法倒流,最真实的因果效应只停留在理论层面。但是可以退而求其次,尽最大努力去寻找一个没有参加培训的李四,他在各方面都和张三是一样的(替身),简直是张三的翻版。于是我们通过比较张三和李四生产率的差异,也能够得出比较准确的因果效应(ATT估计值)。那么该如何寻找李四呢?

二、PSM的原理及python实现

1、PSM的原理

这里倾向得分匹配(PSM,Propensity Score Matching)就要登场了。PSM通俗理解是说,首先计算每个人参加培训的倾向性,然后根据倾向性最相似的原则,为每个参加培训的人匹配未参加培训的人,最后计算两组人群的均值差异作为ATT的估计值(因果效应)。下面是PSM的详细步骤:

1.1 计算倾向性得分

关于PSM倾向性得分的计算方式,不能用简单的欧氏距离来计算是因为欧氏距离对每个协变量的权重是一样的,当协变量维度很高时会影响得分的计算效果。一般用LR来计算倾向性得分,因为LR能够赋予协变量不同的权重。还有很多方法比如用Propensity Tree来计算得分等等。

1.2 匹配对照组样本

倾向性得分计算完成后,还需要为实验组的每个样本,从对照组中采集合适的样本去做匹配。PSM匹配环节有以下几个要点:
1)采样方式,有放回or无放回采样:从对照组抽取样本去匹配实验组样本时,被抽到的对照组样本是否允许放回。
2)匹配方式,局部最优or全局最优:应当追求为实验组每个样本找到的替身都是最匹配的(局部最优),还是整体来看实验组找到的替身是最匹配的(全局最优)。
3)匹配数量,一对一or一对多:一个实验组样本匹配一个对照组样本(一对一,偏差小,方差大),还是一个实验组用户匹配多个对照组用户(一对多,偏差大,方差小)。
4)匹配质量,有卡尺or无卡尺:实验组和对照组做匹配时,他们之间相似度是否需要限制在一定范围内(有卡尺),还是只要当前对照组样本是最匹配的即可(无卡尺)。

1.3 平衡性检查

如何衡量PSM的匹配效果?或者说怎么判断PSM后实验组和对照组是否是同质的呢?下面介绍3种评估平衡性的方法:
1)观察法:直接做协变量分布的直方图或QQ-Plot,观察实验组和对照组的协变量是否符合同一分布。
2)量化法:计算每个混淆变量的标准化差值(stddiff),stddiff越小说明混淆变量在实验组和对照组间越均衡,因果效应的估计值也就越可靠。
psm python,因果推断,算法,数据分析,数据挖掘,python

3)卡方检验:每个协变量和treatment做卡方检验,若检验通过(p>0.05)则说明协变量和treatment是相互独立的,检验未通过(p<0.05)说明协变量对treatment是有影响的,因果效应中来自协变量的影响没有剔除干净。

目前为止,我们已经有一对接近同质的实验组和对照组了,接下来就可以估算实验的ATT了,最简单的做法是计算实验组和对照组均值的差值。

如果平衡性检查都通过了,说明已经得到了同质的实验组和对照组,下面就可以放心估计因果效应了。最简单的方法,是将两组样本均值直接做差,将差值作为因果效应的估计值。

1.4 敏感度分析

如何衡量我们估计的因果效应是不是可靠的呢?具体地说,混淆变量的主观选择会得到不一样的结论吗?当干预变量T不存在时,因果效应还会存在吗?下面介绍常用的评估方法,即反驳测试:
1)安慰剂数据法:随机生成一列数据替代真实的treatment列,每个个体接收处理的事实已经不存在了,因此如果反驳测试中的因果效果大幅下降且接近0,说明了treatment对target具有一定的因果效应。

2)添加随机混淆变量法:添加一列随机生成的混淆变量,若反驳测试的因果效应较真实因果效应估计值变化不大,则说明其因果效应的估计值是可靠的。

2、PSM的python实现

下面介绍一个用Python实现PSM的案例,即新建诊所是否能降低新生儿死亡率。
数据样例:

OPTUM_LAB_ID CASE infant_mortality poverty_rate per_capita_doctors
1 1 10 0.5 0.01
2 1 15 0.6 0.02
3 1 22 0.7 0.01
4 1 19 0.6 0.02
5 0 25 0.6 0.01
6 0 19 0.5 0.02
7 0 4 0.1 0.04
8 0 8 0.3 0.05
9 0 6 0.2 0.04

其中OPTUM_LAB_ID表示样本序号,CASE(T)表示“是否有诊所”,infant_mortality(Y)表示新生儿死亡率(百分比)。两个混淆变量,poverty_rate贫穷率和per_capita_doctors人均医生数量。

下面直接上完整的PSM代码,包括详细的注释:

import psmatching.match as psm
import numpy as np

# 数据集的地址,默认数据文件是csv格式,其他格式可能会报错
path=r'infant mortality.csv' 
# 计算倾向性得分的模型格式,格式:Y~X1+X2+...+Xn,其中Y为treatment列,X为协变量列
model = "CASE ~ poverty_rate + per_capita_doctors" 
# k每个实验组样本所匹配的对照组样本的数量
k = "1"

# 初始化PSMatch实例
m = psm.PSMatch(path, model, k)

# 计算倾向得分,为接下来的匹配准备数据
m.prepare_data()

# 根据倾向性得分做匹配,其中caliper代表是否有卡尺,replace代表是否是有放回采样
m.match(caliper = None, replace = True)

# 混淆变量与treatment做卡方检验,检验混淆变量和treatment是不是独立的
m.evaluate()

# 获取匹配后的样本
mdt = m.matched_data

# 计算实验的因果效应(ATT)
y_1=np.average(mdt[mdt.CASE==1]['infant_mortality'])
y_0=np.average(mdt[mdt.CASE==0]['infant_mortality'])
ATT=y_0-y_1

print(ATT)

最后计算得到的ATT为5.5,说明新建诊所能够降低约5.5%的新生儿死亡率。文章来源地址https://www.toymoban.com/news/detail-614221.html

到了这里,关于因果推断-PSM的原理及python实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 生态经济学领域里的R语言机器学(数据的收集与清洗、综合建模评价、数据的分析与可视化、数据的空间效应、因果推断等)

    近年来,人工智能领域已经取得突破性进展,对经济社会各个领域都产生了重大影响,结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一,目前也在飞快的融入计量经济学研究。表面上机器学习通常使用大数据,而计量经济学则通常使用较小样本,

    2024年02月11日
    浏览(55)
  • 【生态经济学】利用R语言进行经济学研究技术——从数据的收集与清洗、综合建模评价、数据的分析与可视化、因果推断等方面入手

    查看原文 如何快速掌握利用R语言进行经济学研究技术——从数据的收集与清洗、综合建模评价、数据的分析与可视化、因果推断等方面入手 近年来,人工智能领域已经取得突破性进展,对经济社会各个领域都产生了重大影响,结合了统计学、数据科学和计算机科学的机器学

    2024年02月12日
    浏览(52)
  • DCDC的工作模式:CCM,DCM,BCM;DCDC的调制模式:PWM,PFM,PSM

    DCDC的工作模式:CCM,DCM,BCM CCM(Continuous Conduction Mode),连续导通模式:在一个开关周期内,电感电流从不会到0。或者说电感从不“复位”,意味着在开关周期内电感磁通从不回到0,功率管闭合时,线圈中还有电流流过。 CCM降压变化器的特点: (1)D限定在小于1,降压变换器

    2024年01月25日
    浏览(41)
  • 因果推断(六)基于微软框架dowhy的因果推断

    DoWhy 基于因果推断的两大框架构建: 「图模型」 与 「潜在结果模型」 。具体来说,其使用基于图的准则与 do-积分来对假设进行建模并识别出非参数化的因果效应;而在估计阶段则主要基于潜在结果框架中的方法进行估计。DoWhy 的整个因果推断过程可以划分为四大步骤: 「

    2024年02月10日
    浏览(31)
  • 因果推断阶段系列19[阶段2-1]-机器学习预测模型与因果推断

    因果推断的第一部分已经完成。该部分涵盖了因果推断的核心内容,相关的技术非常著名和成熟。第一部分为我们构建了可靠的基础。具体来说,第一部分重点介绍了因果推断的定义,以及避免将相关误认为因果的偏差、调整这些偏差的多种方法(如回归、匹配和倾向得分)

    2024年02月06日
    浏览(34)
  • 因果推断(五)基于谷歌框架Causal Impact的因果推断

    除了传统的因果推断外,还有一些机器学习框架可以使用,本文介绍来自谷歌框架的Causal Impact。该方法基于合成控制法的原理,利用多个对照组数据来构建贝叶斯结构时间序列模型,并调整对照组和实验组之间的大小差异后构建综合时间序列基线,最终预测反事实结果。 C

    2024年02月11日
    浏览(38)
  • 因果推断阶段系列21[阶段2-3]----因果模型评估

    大部分关于因果性的资料中,研究人员使用模拟数据来检查他们的方法是否有效。就像我们在一章中所做的那样,模拟生成关于 Y 0 i Y_{0i}

    2024年02月08日
    浏览(35)
  • 因果推断(四)断点回归(RD)

    在传统的因果推断方法中,有一种方法可以控制观察到的混杂因素和未观察到的混杂因素,这就是断点回归,因为它只需要观察干预两侧的数据,是否存在明显的断点。 ⚠️注意:当然这个方法只能做到局部随机,因此很难依据该结论推向全局。 本文参考自rdd官方示例,通

    2024年02月13日
    浏览(43)
  • 果推断16--基于反事实因果推断的度小满额度模型学习笔记

    目录 一、原文地址 二、一些问题 2.1如何从RCT随机样本过渡到观测样本因果建模? 2.2反事实学习的核心思想 2.3度小满的连续反事实额度模型 Mono-CFR 2.4Mono-CFR代码实现(待补充) 2.5CFR学习 2.5.1TarNet 2.5.2CFR 2.5.3DR-CFR 参考   基于反事实因果推断的度小满额度模型 对于RCT样本的情

    2024年02月07日
    浏览(40)
  • 因果推断系列16-面板数据与固定效应

    加载第三方包

    2024年02月05日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包