倾向得分匹配案例分析
一、倾向得分匹配法说明
倾向得分匹配模型是由Rosenbaum和Rubin在1983年提出的,首次运用在生物医药领域,后来被广泛运用在药物治疗、计量研究、政策实施评价等领域。倾向得分匹配模型主要用来解决非处理因素(干扰因素)的偏差。
1、基本原理——反事实推断
基本原理是:根据处理组的特征,找出与处理组特征尽可能类似的控制组进行匹配,从而消除非处理因素的干扰。
例如:研究“是否读研”对于“收入”的帮助时,我们只能得到已经读研的处理组的收入情况,但是无法得到处理组的人没有读研的收入情况(反事实)。同时,是否读研和收入本身还受到其他非处理因素(干扰因素)的影响(比如学习成绩、家庭背景、学校差异等),此时,为了明确没有读研的反事实情况,进行反事实推断,校正非处理因素的影响就可以使用倾向得分匹配法,找到与读研的处理组学习成绩、家庭背景、学校差异等非处理因素类似的但是没有读研的控制组进行匹配,然后进行“是否读研”对于“收入”的帮助研究。
2、算法步骤
倾向得分匹配算法步骤如下:
- 计算倾向得分Pscore值
构建一个是否接受培训的二分类变量作为因变量,以干扰因素作为自变量X进行二元logit回归模型构建,然后根据logit模型计算倾向得分Pscore值。Pscore值代表了干扰因素的整体水平情况,Pscore值越接近,说明两个研究对象(员工)的特征(初始工资等)越接近,第二步进行match匹配时,直接针对Pscore值进行。 - 进行匹配
根据计算的倾向得分Pscore值进行处理组和控制组的样本进行匹配。SPSSAU会默认对样本进行编号(id),进行匹配时,针对研究因素Y= 1(处理组)的样本,去找对应Y=0(控制组)的匹配对象。 - PSM效果分析
匹配完成后,需要对匹配效果进行分析,包括分析PSM匹配基本信息、匹配后标准差偏差的变化、平行趋势检验、共同支撑检验等,后续将进行重点说明。
二、案例及SPSSAU实现
1、案例介绍
当前有一个公司,想要研究 “ 是否培训 ” 对于 “ 当前工资 ” 的影响。在公司内部,共收集到78个员工的相关信息,其中有17名员工接受过培训,61名员工未接受培训。已知当前工资会受到 “ 初始工资 ”、“ 工作经验 ”、“ 岗位 ”这3个基本特征的影响。因此,使用倾向得分匹配法找到除 “ 是否培训 ” 这一处理因素不同外,其他基本特征一致的两类人进行研究。
2、SPSSAU匹配操作
SPSSAU进行倾向得分匹配操作如下:将 “ 是否培训 ” 放到研究变量分析框中; “ 初始工资、工作经验、岗位 ” 这三个干扰因素放到特征项分析框中;“ 当前工资 ” 放在结果变量分析框中。同时勾选【保存信息】按钮,SPSSAU会默认输出id、matchid、weight、Pscore四项信息,id和matchid用于展示员工之间的匹配关系;weight用于标识匹配成功的次数;Pscore为二元logit回归模型估计值。SPSSAU操作如下图:
进行匹配时,SPSSAU需要选择匹配方法和抽样方法。
(1)匹配方法选择
SPSSAU提供 “ 最近临法 ”(默认)和 “ 半径匹配法 ” 。“ 最近临法 ” 指找到PScore最接近的意思,“ 半径匹配 ” 找到PScore在可接受范围(阀值,卡钳值)内,阀值越小匹配越精确。本案例选择半径匹配法(0.05)进行匹配,如下图:
(2)抽样方法选择
SPSSAU提供 “ 放回抽样 ”默认和 “ 不放回抽样 ” 两种抽样方式。放回抽样是指某个样本会被重复匹配多次,不放回抽样是指样本最多被匹配1次就截止了。放回抽样的算法运行效率较低,当数据量非常大时可能不合适,本例数据较少,用两种抽样方法都可以,选择使用不放回抽样进行匹配,如下图:
以上操作完成之后,点击【开始分析】按钮,SPSSAU即输出匹配结果,接下来进行匹配效果分析。
3、匹配效果分析
倾向得分匹配效果分析包括分析匹配基本信息、匹配后标准化偏差、PSM平行假设检验、共同支撑检验四个方面。接下来,将逐个进行分析。
(1)匹配基本信息
SPSSAU输出PSM基本信息汇总表如下:
从上表可知,本次匹配使用半径匹配法并且精确匹配优先(精确匹配是指两个样本的Pscore值完全相等),匹配半径值为0.05,使用不放回抽样的方法。需要匹配个数(接受培训人数)为17,最终有16人匹配成功,匹配成功率94.118%。
(2)匹配后标准化偏差
标准化偏差对比图直观展示匹配前和匹配后标准化偏差的变化情况,如果标准化偏差变化明显(或者匹配后标准化偏差<20%),则说明匹配效果较好。
SPSSAU输出标准化偏差变化对比如下:
从上图来看,在匹配后,标准化偏差均小于20%,说明匹配之后,“初始工资”、“工作经验”、“岗位”这3项干扰因素,处理组与控制组特征基本保持一致。说明匹配效果较好。
(3)PSM平行假设检验
倾向得分匹配模型的一个假设是平行假设,即参与匹配的员工必须要各个维度上与处理组员工相似,这样才能保证估计结果的可靠性。
SPSSAU输出PSM平行假设检验如下表:
从上表可以得到:在匹配前,处理组和控制组(是否培训的两类员工),他们的特征项包括“初始工资”、“工作时间”、“岗位”均有显著性差异(p值均小于0.05),说明这3个特征项均属于干扰因素。
匹配后,处理组和控制组的3个特征项之间没有呈现出显著性差异(p值均大于0.05),说明经过匹配,处理组与控制组在这3个特征项上具有一致性。
针对标准化偏差来看,匹配后,特征项的标准化偏差全部低于20%,说明经过匹配处理组与控制组的3个特征项基本一致。标准化偏差减少幅度用于衡量标准化偏差的减少幅度情况,如果该值大于0,说明匹配效果好,该值小于0,说明匹配效果不好。该值越大越好,没有固定标准。从上表来看,3个特征项的标准化偏差减少幅度均大于0,说明匹配效果好。
综上所述,在匹配前,处理组和控制组的3个特征项均存在显著性差异,但经过匹配后,处理组与控制组在3个特征项上无显著性差异,具有一致性。所以PSM模型通过平行假设检验。
(4)共同支撑检验
倾向得分匹配的另一个假设就是共同支撑假设,即处理组与控制组是否具有相同的倾向得分值。共同支撑检验可以通过SPSSAU的核密度图进行检验,检验原理在于对比匹配前与匹配后的倾向得分值的分布情况。
①针对匹配前的Pscore值绘制核密度图,将“是否培训”放入X分析框中,“初始工资”和“工作经验”放入Y分析框中(核密度图Y只针对定量数据,故不分析岗位),SPSSAU操作如下:
得到匹配前初始工资与工作经验的核密度图如下:
从匹配前核密度图来看,处理组与控制组的Pscore值分布存在很大差异。如果忽略这种差异的存在(不进行匹配,直接进行差异分析),很可能导致研究结论偏误。同时看到处理组和控制组存在重叠部分,表明处理组和控制组具备了使用倾向得分匹配模型的条件。
②针对匹配后Pscore值绘制核密度图,筛选出匹配次数weight>0(不放回抽样也可以选择weight=1)的数据后再进行核密度图绘制。SPSSAU操作如下:
再次进行分析,得到匹配后核密度图如下:
从匹配后的核密度图看,经过匹配,处理组和控制组之间出现了显著的靠近与覆盖,存在较大的共同取值区间,表明两组样本在各方面特征已经非常接近,匹配效果较好,即说明通过共同支撑检验。
4、研究结论分析
经过匹配后,研究 “ 是否培训 ” 是否会对 “ 当前工资 ” 产生显著影响可以使用t检验进行分析,但是SPSSAU在倾向得分匹配中可以做到 “ 一步到位 ” ,无需单独进行t检验,在此前将 “ 当前工资 ” 放入【结果变量】中,就是为了直接获得分析结果。SPSSAU输出结果为ATT效应分析,结果如下表:
ATT效应分析的目的在于分析匹配后结果变量在处理组和控制组之间是否有显著性差异。在本例中,即分析匹配后 “ 是否培训 ” 的两类人“当前工资”是否有显著差异。 “ Unmatched匹配前 ” 即第1行数据是指在匹配之前 , “ 研究变量 ” 与 “ 结果变量 ” 之间是否存在着差异性,其意义较小;主要看第二行数据ATT效应。
从上表可以看出,在匹配前,是否培训与当前工资之间呈现性差异(p<0.05)。以及在匹配之后,ATT效应值呈现出显著性(p<0.05),即说明进行PSM分析后显示是否培训与当前工资之间呈现出显著性差异,ATT效应值为17554.412,即意味着是否培训与当前工资起到正向作用。
总结与拓展
倾向得分匹配法是通过对样本建模(logit模型)得到Pscore值,通过Pscore值为处理组在控制组中找到最接近的样本,从而进行研究的。
PSM的优点在于可以控制干扰因素的影响、提高研究的证明力度;但其缺点也不可忽视,例如PSM需要样本量大、可能并非所有样本都能匹配成功,所以导致匹配后引起的样本量的损失问题不能忽视,甚至无法确定匹配后的样本是否能代表原有研究样本。
PSM有优点也有其局限性,但是尽管如此,PSM也是现代研究中一个不可或缺的统计方法,关键在于能够辨别自己的研究问题与PSM的适用性是否匹配,欢迎讨论~
相关文章:
倾向得分匹配案例分析
一、倾向得分匹配法说明 倾向得分匹配模型是由Rosenbaum和Rubin在1983年提出的,首次运用在生物医药领域,后来被广泛运用在药物治疗、计量研究、政策实施评价等领域。倾向得分匹配模型主要用来解决非处理因素(干扰因素)的偏差。 …...
基于SpringCloud的可靠消息最终一致性04:项目基础代码
上一节给出了项目需求和骨架代码,这一节来接着看基础代码。骨架代码和基础代码最主要的区别是:骨架代码都是数据库脚本、POM依赖文件、配置文件内容、运维脚本等,而基础代码则是和业务有关联,但并非关键代码的部分。 这些代码不用一个个地看,主要是看看结构就行。 图二十五…...
操作系统权限提升(十八)之Linux提权-内核提权
Linux 内核提权 Linux 内核提权原理 内核提权是利用Linux内核的漏洞进行提权的,内核漏洞进行提权一般包括三个环节: 1、对目标系统进行信息收集,获取到系统内核信息及版本信息; 2、根据内核版本获取其对应的漏洞以及EXP 3、使…...
华为OD机试真题Java实现【快递运输】真题+解题思路+代码(20222023
快递运输 题目 一辆运送快递的货车,运送的快递均放在大小不等的长方体快递盒中,为了能够装载更多的快递,同时不能让货车超载,需要计算最多能装多少个快递。 注:快递的体积不受限制,快递数最多1000个,货车载重最大50000。 🔥🔥🔥🔥🔥👉👉👉👉👉�…...
java面试题-JVM问题排查
1.常见的Linux定位问题的工具?常见的 Linux 定位问题的命令可以分为以下几类:系统状态命令:包括 top、uptime、vmstat、sar 等命令,用于查看系统整体的状态,如 CPU 使用率、内存使用率、磁盘 I/O 等。进程状态命令&…...
市场上有很多低代码开发平台,不懂编程的人可以用哪些?
市场上有很多低代码开发平台,不懂编程的人可以用哪些?这个问题一看就是外行问的啦,低代码平台主打的就是一个“全民开发”,而且现在很多低代码平台都发展为零代码了,不懂编程也完全可以使用! 所谓低代码开…...
Tina_Linux打包流程说明指南_new
OpenRemoved_Tina_Linux_打包流程_说明指南_new 1 概述 1.1 编写目的 介绍Allwinner 平台上打包流程。 1.2 适用范围 Allwinner 软件平台Tina v3.0 版本以上。 1.3 相关人员 适用Tina 平台的广大客户,想了解Tina 打包流程的开发人员。 2 固件打包简介 固件…...
JVM面试题
JVM 1.jvm的组成部分 类加载器:将javac编译的class文件加载到内存中 运行时数据区:将内存划分成若干个不同的区域。 执行引擎:负责解析命令,提交操作系统执行。 本地接口:融合不同的语言为java所用 2.运行时数据区 方法区&…...
@FeignClient注解
1.在启动类上开启Feign功能 不开会提示找不到所需要的bean Consider defining a bean of type in your configuration SpringBootApplication EnableFeignClients public class AuthApplication {public static void main(String[] args) {SpringApplication.run(AuthApplic…...
一文搞懂如何在 React 中使用 防抖(Debounce)和 节流(Throttle)
在前端的日常开发中,经常会使用到两个函数防抖(Debounce)和节流(Throttle),防抖函数可以有效控制在一段时间内只执行最后一次请求,例如搜索框输入时,只在输入完成后才进行请求接口。…...
Airbyte API
Airbyte API涵盖了Airbyte功能的方方面面,主要分类:Source_definition:来源定义,实现了来源的增删改查功能。Destination_definition:目标定义,实现了目标的增删改查功能。Workspace:工作区管理…...
vue项目使用Electron开发桌面应用
添加npm配置避免安装Electron错误 请确保您的 node 版本大于等于 18. cmd运行: npm config edit 该命令会打开npm的配置文件,请在空白处添加: electron_builder_binaries_mirrorhttps://npmmirror.com/mirrors/electron-builder-binaries/ e…...
std::chrono笔记
文章目录1. radio原型作用示例2. duration原型:作用示例3. time_point原型作用示例4. clockssystem_clock示例steady_clock示例high_resolution_clock先说感觉,这个库真恶心,刚接触感觉跟shi一样,特别是那个命名空间,太…...
接收arp请求并发送回应的实例
本文简单介绍了arp协议,用一个实例查看收到的ARP请求,并对该请求发出ARP回应,实例有完整的源代码,使用C语言在Linux下实现,代码中有详细的注释。 1. ARP协议 ARP(Address Resolution Protocol),地址解析协议;在局域网上通过IP地址获取物理地址MAC的协议,该协议工作在数…...
【高性能计算】TVM使用TE手动优化矩阵乘法算法解析与代码解读
引言 注:本文主要介绍、解释TVM的矩阵优化思想、代码,需要配合代码注释一起阅读。 矩阵乘法是计算密集型运算。为了获得良好的 CPU 性能,有两个重要的优化措施: 提高内存访问的高速缓存命中率。复杂的数值计算和热点内存&#x…...
消息中间件的概念
中间件(middleware)是基础软件的一大类,属于可复用的软件范畴。中间件在操作系统软件,网络和数据库之上,应用软件之下,总的作用是为处于自己上层的应用软件提供运行于开发的环境,帮助用户灵活、高效的开发和集成复杂的…...
窃密恶意软件Raccoon最新样本Stealer v2分析
Raccoon 是一个恶意软件家族,2019 年来一直在地下犯罪论坛中以恶意软件即服务的身份进行售卖。2022 年 7 月,该恶意软件家族发布了 C 语言编写的新版本 Raccoon Stealer v2,打破了以往使用 C 开发的传统。 Raccoon 是一个信息窃密恶意软件&a…...
足球俱乐部管理系统
技术:Java、JSP等摘要:网站是一种主要的渠道。人们通过互联网快速、准确的发布信息、获取信息。而足球俱乐部是足球职业化、专业化的一个标志,是足球运动员以足球谋生时,所被聘用的机构,应运时代发展,规模、…...
2023上半年数学建模竞赛汇总(比赛时间、难易程度、含金量、竞赛官网)
1、美国大学生数学建模竞赛等级:国家级是否可跨校:否竞赛开始时间:2月17日~2月21日综合难度:⭐⭐⭐⭐ 竞赛含金量:⭐⭐⭐⭐⭐竞赛官网:https://www.comap.com/2、MathorCup高校数学建模挑战赛---大数据竞赛…...
【python学习笔记】:PHP7 Null合并运算符
在PHP7,一个新的功能,空合并运算符(??)已被引入。它被用来代替三元运算并与 isset()函数功能结合一起使用。如果它存在并且它不是空的,空合并运算符返回它的第一个操作数;否则返回第二个操作数。 示例 <?php// fetch the value of $_…...
数据结构与算法——3.时间复杂度分析1(概述)
前面我们已经介绍了,研究算法的最终目的是如何花费更少的时间,如何占用更少的内存去完成相同的需求,并且也通过案例演示了不同算法之间时间耗费和空间耗费上的差异,但我们并不能将时间占用和空间占用量化。因此,接下来…...
FPGA学习之日常工作复位电路
最近一个多月没有写博客了,然后最近工作中也遇到一个复位信号的问题。问题是这样的,关于外部复位信号,之前我们的处理方式都是通过PLL产生的Lock信号作为内部的复位信号。但是由于换到A54上面没有IP核,所以只有不用PLL,…...
【洛谷 P1177】【模板】快速排序 题解(快速排序+指针)
【模板】快速排序 题目描述 利用快速排序算法将读入的 NNN 个数从小到大排序后输出。 快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C 选手请不要试图使用 STL,虽然你可以…...
Pthon--自动化实用技巧篇--文件目录处理
为什么要讲这一篇,主要是因为这个在自动化测试框架或者脚本的编写的时候会用到,还是比较方便的。看上述两个函数。getcwd()、chdir()。使用 os.getcwd() 函数获得当前工作目录。使用 os.chdir()函数改变当前工作目录。所以在用chdir()函数的时候别忘记指…...
想招到实干派程序员?你需要这种面试法
技术招聘中最痛的点其实是不精准。技术面试官或CTO们常常会向我们吐槽: “我经常在想,能不能把我们项目中的代码打印出来,作为候选人的面试题的一部分?” “能不能把一个Bug带上环境,让候选人来试试怎么解决…...
cesium常见操作:鼠标点击获取对象
目录 一、viewer.scene.pick(获取Cartesian2) 二、 viewer.scene.pickPosition(获取Cartesian3) 三、viewer.scene.drillPick(穿透拾取,获取所有对象) 四、viewer.scene.globe.pick…...
【玩转c++】git的安装和使用以及可视化处理
本期主题:git的安装和使用(windows环境)博客主页:小峰同学分享小编的在Linux中学习到的知识和遇到的问题 小编的能力有限,出现错误希望大家不吝赐1.两个工具介绍第一个工具git,链接gitee或者github等代码托…...
第三阶段02-Mybatis框架
Mybatis框架 Mybatis框架是目前最流行的数据持久层框架, 使用Mybatis框架可以帮助程序员自动生成JDBC代码, 程序员只需要通过注解或xml配置文件提供需要执行的SQL语句,以及对象和表的映射关系, Mybatis框架会根据此映射关系和SQL自动生成出JDBC代码,从而提高开发效率 Mybatis框…...
基于超像素的多视觉特征图像分割算法研究
0.引言 背景: 经典聚类算法:Kmeans、FCM 现有问题: 1)现有算法大都是基于单一的视觉特征而设计的,eg:基于颜色特征的分割。 2)没有考虑像素周围的空间信息;分割结果:多噪…...
mysql的三大日志
摘自https://blog.csdn.net/chuige2013/article/details/123027580 一. 初步认识 binlog二进制日志 redolog undolog 二. binlog binlog记录写入行操作 作用 1)、主从复制:在Master端开启binlog,然后将binlog发送到各个Slave端,S…...
网站建设 会议主持稿/今日新闻国际最新消息
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过。如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/1…...
怎么来自己做网站优化/百度手机app
DRM实例教程DRM是一个显示驱动框架,也就是把功能封装成 open/close/ioctl 等标准接口,应用程序调用这些接口来驱动设备,显示数据。我们这里将从使用的角度来看看,怎么验证和使用DRM驱动。DRM设备节点DRM驱动会在/dev/dri下创建3个…...
做旅游网站的目的与意义/能让网络非常流畅的软件
近日,特斯拉或将在其HW4.0硬件系统配置一枚高精度4D毫米波雷达的消息在外网刷屏。据分析,“纯视觉”信仰者马斯克之所以做出这样的决定,一方面是减配了雷达的特斯拉自动驾驶,表现不尽如人意;另一方面也跟毫米波雷达的技…...
广州网站建设技术/淘宝热搜关键词排行榜
服务端的实现:import SimpleXMLRPCServer,osrunningTruefuns[add,minus,exit,getCurrentList,linuxCmd]#new code解决rpc调用速度慢#每次返回的时候BaseHTTPRequestHandler 都会调用log_message 方法记录一些日志信息,而log_message方法需要知道请求的ho…...
政府网站建设调研/渠道网官网
剪花布条 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 7 Accepted Submission(s) : 4 Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些…...
wordpress cms社交/线上营销活动案例
收取邮件有两种协议,POP3和IMAP,POP3相对于IMAP功能较少无法对邮件进行更深层次的操作,因此本文使用IMAP协议收取邮件。python提供了很多收邮件的模块,本文使用imaplib来接收邮件。 前提 需要在邮件箱的设置中打开允许IMAP&#x…...