倾向得分匹配法(PSM)量化评估效果分析

article/2025/6/30 10:44:44


1. 因果推断介绍

如今量化策略实施的效果评估变得越来越重要,数据驱动产品和运营、业务等各方的理念越来越受到重视。如今这方面流行的方法除了实验方法AB testing外,就是因果推断中的各种观察研究方法。

“统计相关性并不意味着因果关系”,数据分析工作经常遇到归因分析问题,又因为种种原因而无法进行AB testing直接随机分组实验比较结果。举一些例子:

  • 在 feeds 流里刷到一个新推荐策略的内容的用户留存更高,他们的高留存是因为这个推荐策略导致的吗,这个策略究竟对留存的提升有多大效果?

  • 上周投放了某游戏广告的用户登录率更高,他们的高登录率有多大程度是由广告带来的,有多大程度是由于他们本身就是高潜力用户?

在以上这类案例中,我们需要分析某个策略(干预treatment)对结果的影响情况,从而探究其因果效应。那么可以利用已有的用户行为数据来进行观察研究分析。而观察研究中最重要的一个理念是:反事实框架,即和我们能够观测到的现实情况相反的一种状态。在于反事实框架下进行因果推断的原理是这样的:变量 X 对变量 Y 变化的因果效应可以表达为,当 X 成立时 Y 的结果与 X 不成立时 Y 的反事实结果之间的差异,如果这种差异存在且在统计上显著,则称变量 X 对变量 Y 是有因果效应的,否则二者之间就不存在因果关系。因此因果推断的难点在于我们无法对每个用户同时观测到两个状态下的结果。

一个粗暴的思路是将实验组和对照组的样本做一下 “匹配”。例如,对于实验组的每一个样本,我们都去对照组里找一个一模一样的样本。当样本属性全部都是离散的,并且属性的维度(个数)很小的时候,这么做也许是可以的。当样本属性里有一些连续变量或者当样本属性的维度很高时,这么做太粗暴了,大部分人是找不到匹配对象的。因此“倾向得分匹配”可以用来解决寻找匹配对象的难点问题。

倾向得分匹配PSM是因果推断中的一种统计学方法,用于处理观察研究的数据。在观察研究中,由于种种原因,数据偏差和混杂变量较多。倾向评分匹配的方法正是为了减少这些偏差和混杂变量的影响,以便对实验组和对照组进行更合理的比较。PSM是处理观察性研究(observational study)的经典方法。

2. PSM原理

“倾向性得分” 的定义很直观,是一个用户属于实验组的 “倾向性”:e(x)=Pr[T=1|X]=Pr[T=1]。具有不同特征(Corvariates)的用户被干预(treatment)的概率应该相等。直观来说,对于倾向性得分相同的一群用户,treatment 和特征是独立的,treatment 和潜在结果也是独立的,即做到实验中的随机性要求。理论上,如果我们对每一个实验组用户都在对照组里匹配一个得分相等(要求有点严苛)的用户,我们就能得到同质的实验组和对照组,就可以假装我们做了一个 A/B Test 了,接着就可以随意地进行组间比较了。倾向得分法(PS)主要有分层、匹配和加权三种方法。这里倾向得分匹配法属于匹配方法。

上面这段话具体实施起来,可以分为以下几个步骤。

1、倾向性得分估算:倾向性得分怎么估算?

2、倾向性得分匹配:怎么用得分完成匹配?

3、平衡性检查:怎么知道匹配效果?

4、因果效应估算:匹配后,怎么从匹配后的两组用户中得到因果效应?

5、敏感度分析:混淆变量的选择等主观的一些分析是否会得到一致的分析结论?

Step 1: 倾向性得分估算

这一步直接就是建模问题,因变量为是否被干预Treatment,自变量为用户特征变量。套用LR或者其他更复杂的模型,如LR + LightGBM等模型估算倾向性得分。

Step 2: 倾向性得分匹配

有了每个用户的倾向性得分,针对目前的实验组用户,匹配得到一个接近相同的对照组。

1、匹配用的得分:可选原始倾向性得分 e(x) 或者得分的 logit,ln(e(x)/(1−e(x)))。

2、修剪(trimming):先筛选掉倾向性得分比较 “极端” 的用户。常见的做法是保留得分在 [a,b]这个区间的用户,关于区间选择,实验组和对照组用户得分区间的交集,只保留区间中部 90% 或者 95%,如取原始得分在 [0.05,0.95]的用户。

3、匹配(matching):实验组对对照组根据得分进行匹配的时候,比较常见的有以下两种方法。nearest neighbors: 进行 1 对 K 有放回或无放回匹配。

radius: 对每个实验组用户,匹配上所有得分差异小于指定 radius 的用户。

4、得分差异上限:当我们匹配用户的时候,我们要求每一对用户的得分差异不超过指定的上限。

Step 3: 平衡性检查

怎么衡量 “配平效果 “呢?比较直观的是看倾向性得分在匹配前后的分布、以及特征在匹配前后的 QQ-Plot。匹配后的实验组和对照组的倾向性得分分布更加接近,变量分布也更接近。量化指标 Standarized Mean Difference (SMD)。SMD 的一种计算方式为:(实验组均值 - 对照组均值)/ 实验组标准差。一般如果一个变量的 SMD 不超过 0.2,一般就可以认为这个变量的配平质量可以接受。当一个变量的 SMD 超过 0.2 的时候,需要凭经验确认一下那个变量是不是没有那么重要。

Step 4: 因果效应推断

我们的目标是推断实验组的平均干预效应 ATT (Average Treatment Effect on the Treated)。ATT 的定义为 ATT=E[Y1−Y0|T=1]。现在我们已经有一对接近同质的实验组和对照组了,有很多方法可以用来估算 ATT 。可以直接比较匹配后的实验组和对照组,也可拟合一个由干预和用户特征预测观察结果的线形模型,看看干预 T 的系数是多少。

Step 5: 敏感性检查

敏感性分析主要的目标是衡量当混淆变量(特征)不满足非混淆假设(unconfoundedness )时,分析结论是不是稳健的。简单的做法是去掉一个或者多个混淆变量重复上面的过程。

3. PSM方法使用实例,附R代码

产品经理在会上展示新加了某功能后的用户复购数据。其中使用新功能的用户群复购率比未使用的用户群高20%。于是认为该功能提高了用户复购率,想在产品上全面推广该功能。作为数据分析师如何去评估分析该效果?

数据描述:

数据主要包括三方面:用户的特征变量、是否使用功能,是否发生复购。(这里不直接把数据给到大家,可以尝试用自己工作的数据。)

结果展示:

匹配数量
1116
处理组(使用功能)复购率
0.24
对照组(未使用功能)复购率0.13
均值差异
0.11***

结果描述:

按照1:1的匹配比例,最终匹配上1116对用户数据。其中处理组中的用户复购率为24%,对照组为13%,两组的差距显著。因此从数据角度证明该功能确实能提高复购率。但是归因为功能提高的复购率应该为11%,而不是20%。

R语言参考代码链接:

https://github.com/Serena-TT/PSM/blob/master/PSM/propensity_score_matching.R

4. 学习资料

一般在工作中应用场景比较复杂,涉及多分组情况,倾向得分法主要有分层、匹配和加权三种方法。而加权方法中的逆概率加权处理方法(IPTW)更适用于多分组的情况。以下为学习中用到的参考资料。

PSM和IPTW的教学视频:

《A Crash Course in Causality: Inferring Causal Effects from Observational Data》链接地址:https://www.coursera.org/learn/crash-course-in-causality

论文:

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3710547/

R分析包:

https://cran.r-project.org/web/packages/twang/vignettes/mnps.pdf

 

7964a4f75230d84e9341c6f4e966abdc.gif

 
●昨天熬夜整了一波,值了!
●品牌知名度分析实例

http://chatgpt.dhexx.cn/article/hx5MFoxs.shtml

相关文章

PSM倾向得分匹配法【python实操篇】

前言 大家好,我是顾先生,PSM倾向性得分匹配法的Python代码实操终于来啦! ​ 对于PSM原理不太熟悉的同学可以看看前一篇文章:PSM倾向得分匹配法【上篇:理论篇】 目前网上PSM实操的相关文章都是R语言、SPSS和STATA实现…

数据分析36计(九):倾向得分匹配法(PSM)量化评估效果分析

1. 因果推断介绍 如今量化策略实施的效果评估变得越来越重要,数据驱动产品和运营、业务等各方的理念越来越受到重视。如今这方面流行的方法除了实验方法AB testing外,就是因果推断中的各种观察研究方法。 “统计相关性并不意味着因果关系”,数…

PSM倾向得分匹配

1. 简要介绍 我们以 是否上大学 () 对 收入 () 的影响为例来说明这个问题。这里,先讲二者的关系设定为如下线性模型: 显然,在模型 (1) 的设定中,我们可能忽略了一些同时影响「解释变量」—— 是否上大学 () 和「被解释变量」——…

stata 倾向得分匹配操作

倾向得分匹配法是一种研究方法,它在研究某项治疗、政策、或者其他事件的影响因素上很常见。对于经济、金融学领域来说,比如需要研究某个劳动者接受某种高等教育对其收入的影响,或者比如研究某个企业运用了某项管理层激励措施以后对企业业绩的…

倾向得分匹配(PSM)的原理以及应用

该文章主要介绍倾向得分匹配(PSM, Propensity Score Matching)方法的原理以及实现。这是一种理论稍微复杂、但实现较为容易的分析方法,适合非算法同学的使用。可用于(基于观察数据的)AB实验、增量模型搭建等领域。 文章…

倾向得分匹配只看这篇就够了

一、倾向得分匹配法说明 倾向得分匹配模型是由Rosenbaum和Rubin在1983年提出的,首次运用在生物医药领域,后来被广泛运用在药物治疗、计量研究、政策实施评价等领域。倾向得分匹配模型主要用来解决非处理因素(干扰因素)的偏差。 …

Android设置图标背景透明

这里写自定义目录标题 Android 设置图标背景透明速览引言调整背景色 Android 设置图标背景透明 速览 设置 android:background"#00ffffff" 引言 适用于 Vector Assets 和 透明背景的图片 想要在Android中使用透明背景的图片 首先得保证图片本身是透明背景的 不然也没…

如何设置背景透明度

设置背景透明度分为两种:一种背景为颜色设置的纯色背景;另一种是图片做背景。 【情况一】纯色背景 关键代码:background:rgba(R,G,B,A) RGB--------三原色(red,green,bule)A-------透明度 关于三原色最终成型的颜色…

html悬浮背景透明视频教程,在html中使用背景透明的video视频

由于对效果的要求,需要加入透明背景的video。经过了解,现代浏览器(新版 Chrome、Firefox、Safari 等)已经全面支持 webM 格式的视频了,因此可以使用带 alpha 通道的 webM 格式视频满足要求。 要得到透明 webM 格式视频,则需要来源…

Android BottomSheetDialog设置背景透明无效?(解决)

BottomSheetDialog修改背景圆角 解决方法 这里记录一个实际开发过程中遇到的问题,在日常开发中遇到底部弹窗的时候我会第一时间用到BottomSheetDialog,常规的使用就是有一个默认从底部出现的弹窗,但是为了美观,通常会使用圆角&…

dialog设置背景透明

默认dialog是一个白底方形的,如果在xml设置中设置了一种边角是弧形的背景图片,那么显现的dialog角落就会留白 ,解决办法: dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); 效果:只…

Flutter bottomNavigationBar背景透明

Scaffold(extendBody: true,//加这句背景就透明 ..... ) 效果图

html+页面的背景透明,css设置背景透明 元素不透明

css设置背景透明 元素不透明 在做前端页面的时候,我们会遇到这样的情况,需要背景为半透明状态,但是层里面的内容不需要为透明的状态。有时候我们设置的时候会出现不管内容还是背景同时都成透明了,如何实现背景色透明但内容不透明这…

qt实现窗口背景透明

方法一: MainWindow w;//方法一:主界面透明,界面里面的控件不透明w.setWindowFlags(Qt::FramelessWindowHint);//设置无窗口框架边界w.setAttribute(Qt::WA_TranslucentBackground);//设置背景透明w.show(); 编辑界面: 运行效果&…

android fragment 设置透明,DialogFragment背景透明设置

一 、背景 使用自定义DialogFragment实现弹窗效果时,边缘透明图片作为背景图片,依然存在不透明背景; QQ截图20180428154111.png 修复后: QQ截图20180428153910.png 二、实现 因为项目中多个地方使用到DialogFragment,所以稍作了一下封装: import android.app.Dialog; imp…

winform label背景透明

开发时要把label的背景,透明。 在网上找到资料。原文How to Use Transparent Images and Labels in Windows Forms - CodeProject 主要是在用web的 Transparent。(我在代码中来设置Color.Transparent没有效果。这个在wpf中设置是可以的,在wi…

9.CSS 背景(background)

CSS 背景(background) CSS 可以添加背景颜色和背景图片,以及来进行图片设置。 background-color背景颜色background-image背景图片地址background-repeat是否平铺background-position背景位置background-attachment背景固定还是滚动背景的合写(复合属性&…

将图片背景设置为透明的方法介绍

本文主要介绍使用 Windows 系统自带的“画图 3D”应用程序将图片背景设置为透明的具体方法。 1 需要的应用程序 Windows10 操作系统自带的“画图 3D”应用程序,如下图所示: 2 方法介绍 现有一张背景图为蓝色的 png 格式图片,如下图所示&am…

将图片背景处理为透明的方法步骤

将图片背景处理为透明的方法步骤 1 简单处理图片2 将背景设置为统一颜色3 将背景设置为统一颜色4 保存图片5 一些说明 将一张图片的背景处理成透明,是在工作生活中经常碰到的问题,这个问题的解决可以通过PS这个图像处理神器完成。对于这样的图片处理&…

面对996,程序员如何利用“碎片时间”涨薪?

图片来源|视觉中国 作为一个程序员,需要不断学习更新知识技能来提升自己。但爆炸式的信息量,总使人抓不到学习重点。 所以,笔者为大家筛选了几个程序员会阅读的小众公众号,覆盖全面,囊括了不同的技术类别。小道消息&am…