倾向得分匹配PSM | 双重差分DID | AB Test对比
2026/7/4 3:31:00 网站建设 项目流程

倾向得分匹配(PSM)

PSM能解决什么问题?

在一场促销活动后,业务发现领券的的人均下单金额120元,没有领券的人均下单金额80元。是因为发放消费券使得下单金额提升的吗?—— 不一定,因为领券的人群本来就更爱买东西,可能没有券一样会买。这就是选择偏差。两组人群起点不一样,不能直接比较。

我们希望比较的是 “和领券人群差不多的人,如果没领券会怎样?”,也就是需要找历史消费、活跃度、年龄都相似,但刚好没领券的人,再比两人花了多少钱,这个方法就叫 匹配(Matching)。

那“倾向得分”起到什么作用?现实影响领不领券的因素很多:比如历史消费金额、所在城市级别、活跃天数、是否容易被push触达等,如果按这么多特征一一匹配,结果就是几乎找不到完全相同的人。

原理的核心是:只要两个人在「领券概率」上一样,就说明他们“各方面综合相似”。

所以PSM起到的作用是:第一步:用历史特征算每个人“看起来有多像会领券的人”(倾向得分);第二步:给每个领券的人,找一个得分最接近、但没领券的人;第三步:对比两组的结果 —— 这就可以证明下单金额的提升是消费券的作用。

本质就是:把多维匹配问题,压缩成一维(得分)再匹配

PSM是基于什么原理?

PSM 基于两个核心理论支柱:潜在结果框架(Rubin Causal Model, RCM)、条件独立假设(Conditional Ignorability / Unconfoundedness)

通俗地说:先算一个人“有多像会接受干预的人”,再只比较得分相近、但一个干预一个没干预的两人,从而近似随机实验的效果。

举个例子

平台发了 10 万张“满 50 减 10”优惠券,用户可以自己领。

月底一看:领券的人平均花了 120 元,没领券的人平均花了 80 元。

能不能说:领券让人多花了 40 元? 不能!因为愿意领券的人,本来就更爱买东西。如果不处理这个“选择偏差”,效果会被严重高估。

这时候用 PSM(倾向得分匹配):给每个领券的人,找一个“长得像他、但没领券”的人,再比较。

消费层级

领券人数

领券GMV

未领券人数

未领券GMV

PSM效应

low

500

60

5000

55

+5

medium

1500

130

8000

120

+10

high

800

180

3000

170

+10

结果解读:

在 low(低消费)人群里,效应只有 +5

在 medium/high(中高消费)人群里,效应是 +10

优惠券对中高消费人群效果更好,对低消费人群拉动有限。以后发券可以减少给低频用户的投放,集中资源给中高频用户。

双重差分(DID)

双重差分DID是基于什么理论?

潜在结果模型(Rubin Causal Model, RCM)+ 平行趋势假设(Parallel Trends)

DID 基于潜在结果框架,通过在面板数据中引入个体固定效应和时间固定效应,利用处理组与对照组在干预前后双重差分识别平均处理效应(ATT),它的因果识别依赖于平行趋势假设,也就是若无干预两组结果变量的时间趋势是相同的。

平行趋势假设:若无干预,处理组和对照组的 outcome 随时间的变化趋势相同

为什么不直接用AB Test,而要用DID?

之所以用 DID 而不是 A/B,是因为很多业务和政策干预无法随机分配;之所以用 DID 而不是简单前后或组间对比,是因为 DID 能同时消除不随时间变的个体异质性和共同时间冲击,从而避免严重的混淆偏误。

AB Test 不适用的场景:

限制

说明

不能随机化

政策、法规、全量上线、线下门店、城市级干预

伦理/商业不允许

不能故意不给某些用户核心权益

历史数据复盘

功能已上线,无法回滚重做实验

网络效应/溢出

同一城市随机会污染(如补贴、推荐)。

溢出的概念:处理组的干预“漏”到了对照组,使对照组不再代表"无干预状态"。破坏了AB测试的核心假设:无相互干扰SUTVA被破坏。
比如给A组的用户发券,B组的用户没有,那么A组的区域订单变多,司机/骑手就去A组区域接单,导致B组的订单更难被满足了,B组的转化率因此被A组影响。
或者:A组用户把优惠发给B组朋友(拼单等),B组也受益了,压低AB组直接的差距。

因为 A/B 要求"组间互不干扰",而上面场景做不到,而采用DID 能用地理/时间隔离代替用户级随机,规避同一城市内的溢出污染。

举个例子

平台1月在北京上线优惠活动,想测算活动能不能对GMV带来提升。

上海没有这个活动,作为对照组。问题是北京消费比上海高,1月有元旦春节等节假日,大家本来就会多花钱。而DID可以消除这两个干扰的影响。

city

month

total_amount

beijing

2023-11

1000

beijing

2023-12

1100

beijing

2024-01

1300

beijing

2024-02

1400

shanghai

2023-11

900

shanghai

2023-12

950

shanghai

2024-01

1000

shanghai

2024-02

1050

组别

政策前(11–12月)

政策后(1–2月)

变化

北京(处理组)

(1000+1100)/2 =1050

(1300+1400)/2 =1350

+300

上海(对照组)

(900+950)/2 =925

(1000+1050)/2 =1025

+100

DID = (北京变化)−(上海变化) = (+300)−(+100) = +200

业务意义:优惠活动让北京用户每个月多贡献了 200 元业绩。

拆解:

上海涨了 100 → 这是元旦/春节的自然增长

北京多涨了 200 → 这是免配送费的真实效果

PSM与DID区别与联系

PSM 是横向对比,只关心组内特征是否平衡。目的是让两组静态可比。

DID 纵向+横向对比,先算各自前后变化(消个体差异),再比变化量的差(消时间冲击)。目的是让两组变化趋势可比。

维度

PSM

DID

解决偏误来源

选择偏差(组间特征不同)

组间固有差 + 时间共同冲击

数据要求

丰富协变量 X

前后面板 + 对照组

关键假设

条件独立(已观测全)

平行趋势

匹配维度

横截面(特征相似)

时间 + 组别(趋势相似)

能消未观测固定异质?

✅(不随时间那部分)

一句话总结

“找和他差不多的人”

“看他和对照组变化差多少”

什么时候要用 PSM‑DID 而不是单独 PSM?

当既有"自选",又有"前后"时,可以采用PSM‑DID

PSM能做的事:① 让处理组和对照组在基期“特征相似”,② 控制可以观测的选择偏差。

PSM做不到的:① 不能消除时间周期的影响,比如节假日、大盘增长。② 如果平行趋势边际不满足,PSM 样本仍可能残存趋势差。也即PSM 只能消“静态差异”,消不掉“趋势差异”。(DID能做到)③ 不能处理 不随时间而变动的观测不到的(比如用户天生特质、潜在付费意愿)对趋势的解释。

以下场景要用PSM-DID:

#

条件

说明

1

非随机干预(用户/城市自选或运营指定)

需 PSM 平衡协变量

2

有前后面板(同批单位有干预前 + 干预后)

能做 DID

3

处理 / 对照组基线存在显著差异​ 或平行趋势边缘可疑

单独 DID 也可能偏;先做 PSM 改善平行趋势条件

4

你想报告因果效应而非描述差异

需双重差分消除时间×固定效应

PSM 补 DID 的短板(组间不可比)

DID 补 PSM 的短板(时间趋势、未观测固定效应)

以下场景不能用PSM-DID:

情况

建议

可随机分流(A/B)

直接 RCT(随机对照试验)

只有横截面,无前后期

只能 PSM(承认局限)

有面板,但随机分配城市(真自然实验)且平行趋势 OK

单独 DID 足够

处理组 = 全量用户(整个总体都受了干预,无对照组)

需合成控制 / 中断时间序列

合成控制法:造一个对照组——用多个“未受干预的相似单元”加权组合,拼成一个“虚拟对照组”,模拟如果该地/产品没被干预会怎样。

中断时间序列:用干预前后的自身时间趋势——不靠横向对照(别人),而是用自己干预前的时间序列做对照,看干预点前后趋势是否发生突变。

DID 、 PSM 与 AB Test

A/B 是理想 → DID / PSM 是在观测数据里“尽量像随机实验”。

都是为逼近 随机对照试验RCT 的因果识别:

RCT(A/B):直接随机 → 无混杂;

DID:用时间和组别双重差分 模拟 RCT 的控制逻辑;

PSM:用匹配 模拟随机分组下的“可比对照组”。

三种方法如何选择?

A/B Test 通过随机化无偏识别因果,是黄金标准;DID 在无法随机但拥有处理组/对照组前后面板数据时,利用双重差分消除不随时间变异质性与共同时间冲击,依赖平行趋势假设;PSM 在干预非随机且有丰富协变量时,通过倾向得分匹配构造可比对照组,仅能控制已观测混杂。三者目标相同——估计因果效应,适用条件不同,常据数据与研究设计选择或联用(PSM‑DID)。

Q1: 能对干预随机分配吗? ├─ YES → ★ A/B Test(首选) └─ NO → Q2: 有处理组/对照组【前后面板数据】? ├─ YES → 优先考虑 DID │ └─ 若组间基线差异大 → PSM‑DID └─ NO → 用 PSM(确认已观测协变量充分)

方法

能否消未观测偏差

说明

PSM

❌ 只能消可观测

观测数据匹配——用已观测特征构造“假随机”对照组

DID

✅ 消不随时间变未观测(需平行趋势)

准实验 + 面板——用“前后差分 × 组间差分”模拟控制组

AB Test​ ✅✅

直接消所有未观测偏差

RCT是因果推断的“黄金标准“

3种方法核心对比:

维度

A/B Test (RCT)

DID (双重差分)

PSM (倾向得分匹配)

是否随机

✅ 是

❌ 否(自然/运营分组)

❌ 否

数据要求

可随机分流 + 记录结果

面板数据(同一样本前后 ≥2 期)+ 对照组

横截面或面板 +丰富协变量 X

控制未观测固定异质

✅ 随机化消去

✅ 消去不随时间变部分(需平行趋势)

❌ 只控制已观测 X

控制时间冲击

✅(同期随机)

✅(通过对照组时间差分)

核心假设

随机化、SUTVA

平行趋势​ + 无溢出

条件独立(CIA)​ + 共同支撑

典型场景

UI改版、算法上线、发券随机

政策试点、城市分批上线、历史复盘

用户自选领券/买会员/参加活动

主要风险

实操不可行(伦理/全量/历史)

平行趋势不成立 → 偏误

遗漏关键未观测变量 → 仍有偏差

因果可信度

⭐⭐⭐⭐⭐

⭐⭐⭐⭐(假设成立)

⭐⭐⭐(仅已观测)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询