倾向得分匹配PSM | 双重差分DID | AB Test对比

📅 2026/7/4 3:31:10
倾向得分匹配PSM | 双重差分DID | AB Test对比
倾向得分匹配PSMPSM能解决什么问题在一场促销活动后业务发现领券的的人均下单金额120元没有领券的人均下单金额80元。是因为发放消费券使得下单金额提升的吗—— 不一定因为领券的人群本来就更爱买东西可能没有券一样会买。这就是选择偏差。两组人群起点不一样不能直接比较。我们希望比较的是 “和领券人群差不多的人如果没领券会怎样”也就是需要找历史消费、活跃度、年龄都相似但刚好没领券的人再比两人花了多少钱这个方法就叫 匹配Matching。那“倾向得分”起到什么作用现实影响领不领券的因素很多比如历史消费金额、所在城市级别、活跃天数、是否容易被push触达等如果按这么多特征一一匹配结果就是几乎找不到完全相同的人。原理的核心是只要两个人在「领券概率」上一样就说明他们“各方面综合相似”。所以PSM起到的作用是第一步用历史特征算每个人“看起来有多像会领券的人”倾向得分第二步给每个领券的人找一个得分最接近、但没领券的人第三步对比两组的结果 —— 这就可以证明下单金额的提升是消费券的作用。本质就是把多维匹配问题压缩成一维得分再匹配。PSM是基于什么原理PSM 基于两个核心理论支柱潜在结果框架Rubin Causal Model, RCM、条件独立假设Conditional Ignorability / Unconfoundedness通俗地说先算一个人“有多像会接受干预的人”再只比较得分相近、但一个干预一个没干预的两人从而近似随机实验的效果。举个例子平台发了 10 万张“满 50 减 10”优惠券用户可以自己领。月底一看领券的人平均花了 120 元没领券的人平均花了 80 元。能不能说领券让人多花了 40 元 不能因为愿意领券的人本来就更爱买东西。如果不处理这个“选择偏差”效果会被严重高估。这时候用 PSM倾向得分匹配给每个领券的人找一个“长得像他、但没领券”的人再比较。消费层级领券人数领券GMV未领券人数未领券GMVPSM效应low500605000555medium1500130800012010high800180300017010结果解读在 low低消费人群里效应只有 5在 medium/high中高消费人群里效应是 10优惠券对中高消费人群效果更好对低消费人群拉动有限。以后发券可以减少给低频用户的投放集中资源给中高频用户。双重差分DID双重差分DID是基于什么理论潜在结果模型Rubin Causal Model, RCM 平行趋势假设Parallel TrendsDID 基于潜在结果框架通过在面板数据中引入个体固定效应和时间固定效应利用处理组与对照组在干预前后双重差分识别平均处理效应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可以消除这两个干扰的影响。citymonthtotal_amountbeijing2023-111000beijing2023-121100beijing2024-011300beijing2024-021400shanghai2023-11900shanghai2023-12950shanghai2024-011000shanghai2024-021050组别政策前11–12月政策后1–2月变化北京处理组(10001100)/2 1050​(13001400)/2 1350​300上海对照组(900950)/2 925​(10001050)/2 1025​100DID (北京变化)−(上海变化) (300)−(100) 200业务意义优惠活动让北京用户每个月多贡献了 200 元业绩。拆解上海涨了 100 → 这是元旦/春节的自然增长北京多涨了 200 → 这是免配送费的真实效果PSM与DID区别与联系PSM 是横向对比只关心组内特征是否平衡。目的是让两组静态可比。DID 纵向横向对比先算各自前后变化消个体差异再比变化量的差消时间冲击。目的是让两组变化趋势可比。维度PSMDID解决偏误来源​选择偏差组间特征不同组间固有差 时间共同冲击数据要求​丰富协变量 X前后面板 对照组关键假设​条件独立已观测全平行趋势匹配维度​横截面特征相似时间 组别趋势相似能消未观测固定异质​❌✅不随时间那部分一句话总结“找和他差不多的人”“看他和对照组变化差多少”什么时候要用 PSM‑DID 而不是单独 PSM当既有自选又有前后时可以采用PSM‑DIDPSM能做的事① 让处理组和对照组在基期“特征相似”② 控制可以观测的选择偏差。PSM做不到的① 不能消除时间周期的影响比如节假日、大盘增长。② 如果平行趋势边际不满足PSM 样本仍可能残存趋势差。也即PSM 只能消“静态差异”消不掉“趋势差异”。DID能做到③ 不能处理 不随时间而变动的观测不到的比如用户天生特质、潜在付费意愿对趋势的解释。以下场景要用PSM-DID#条件说明1非随机干预用户/城市自选或运营指定需 PSM 平衡协变量2有前后面板同批单位有干预前 干预后能做 DID3处理 / 对照组基线存在显著差异​ 或平行趋势边缘可疑​单独 DID 也可能偏先做 PSM 改善平行趋势条件4你想报告因果效应而非描述差异​需双重差分消除时间×固定效应PSM 补 DID 的短板组间不可比DID 补 PSM 的短板时间趋势、未观测固定效应以下场景不能用PSM-DID情况建议可随机分流A/B直接 RCT随机对照试验只有横截面无前后期只能 PSM承认局限有面板但随机分配城市真自然实验且平行趋势 OK单独 DID 足够处理组 全量用户整个总体都受了干预无对照组需合成控制 / 中断时间序列合成控制法造一个对照组——用多个“未受干预的相似单元”加权组合拼成一个“虚拟对照组”模拟如果该地/产品没被干预会怎样。中断时间序列用干预前后的自身时间趋势——不靠横向对照别人而是用自己干预前的时间序列做对照看干预点前后趋势是否发生突变。DID 、 PSM 与 AB TestA/B 是理想 → DID / PSM 是在观测数据里“尽量像随机实验”。都是为逼近 随机对照试验RCT 的因果识别RCTA/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改版、算法上线、发券随机政策试点、城市分批上线、历史复盘用户自选领券/买会员/参加活动主要风险​实操不可行伦理/全量/历史平行趋势不成立 → 偏误遗漏关键未观测变量 → 仍有偏差因果可信度​⭐⭐⭐⭐⭐⭐⭐⭐⭐假设成立⭐⭐⭐仅已观测