倾向评分方法 Propensity Score Methods (PS)
用治疗分配的条件概率进行匹配、分层或加权,以改善观察性研究中已测量基线协变量的组间平衡。
统计原理
对基线协变量向量 ,倾向评分定义为接受目标治疗的条件概率:
Rosenbaum 与 Rubin 的核心结果是:在正确的可识别条件下,给定倾向评分后,治疗分配与用于评分的基线协变量可以达到平衡。于是可在相近 的受试者之间匹配,或用评分构造分层/权重,使治疗组与对照组在已测量且进入设计的治疗前协变量上更可比。
但倾向评分本身不是结局模型,也不会制造随机化。把匹配后的组间差解释为因果效应,还需要至少:一致性/SUTVA、条件交换性(无未测量混杂)、positivity/overlap,以及正确的时间零点、治疗和结局定义。平衡诊断应看协变量的 standardized mean difference(SMD)与分布,而不是看倾向评分模型的 c-statistic 或协变量 p 值。
随附程序按 REGION=TREATED 做 1:1、无放回、logit 倾向评分最近邻匹配,因此目标更接近 ATT:已接受 Drug A 人群中的平均治疗效应。匹配后以每个 _MatchID 内的结局差估计配对平均差。
倾向评分把多维基线协变量压缩为接受治疗的概率;处理后仍须检查标准化差异。
原始方法与实现依据:Rosenbaum & Rubin (1983), The central role of the propensity score in observational studies for causal effects;SAS PROC PSMATCH 15.1 官方文档。
什么时候用
非随机对照研究或真实世界数据中,治疗选择受基线预后因素影响,需要在结局分析前设计可比队列并明确 ATT/ATE 等 estimand 时,使用倾向评分匹配、加权或分层。它最适合处理“谁更可能接受治疗”带来的已测量基线混杂。
SAP 里长这样:
Propensity scores for receipt of Drug A will be estimated using a prespecified logistic regression model containing treatment-preceding covariates. One-to-one greedy nearest-neighbor matching without replacement will be performed on the logit of the propensity score using a prespecified caliper. Covariate balance will be assessed using standardized mean differences. The estimand is the average treatment effect in the treated population.
看到 propensity score / PSM / IPTW / common support / caliper / standardized mean difference / ATT,即可定位到本页。随机对照试验的主要分析通常不需要用倾向评分“恢复”随机化;若有未测量混杂,PS 也不能自动消除。
适用条件速查卡
| 项 | 条件 |
|---|---|
| 时间顺序 | 协变量在治疗开始前测量;不得放入受治疗影响的中介或未来信息 |
| 混杂集 | 依据因果图、临床知识和数据生成过程预先选取,不按单变量 p 值筛选 |
| Positivity | 各关键协变量组合下两种治疗均有可能发生,并检查 common support |
| 评分模型 | 允许必要的非线性和交互;重点是平衡而非预测准确率 |
| Estimand | 明确 ATT、ATE 或 overlap population,方法与权重/匹配规则一致 |
| 平衡验收 | 匹配/加权后复核 SMD、分布和极端权重;阈值只是诊断规则,不是因果证明 |
| 结局分析 | 使用匹配集/权重并采用与设计相符的方差估计,保留 outcome-free 设计边界 |
| 未测量混杂 | 做定量偏倚或负对照等敏感性分析;不能用“已平衡”替代该限制 |
核心 SAS 代码
proc import datafile="example.csv"
out=rwe_raw
dbms=csv replace;
guessingrows=max;
run;
ods graphics on;
proc psmatch data=rwe_raw region=treated;
class trt male comorb;
psmodel trt(treated='DrugA')=age male base_score comorb;
match distance=lps method=greedy(k=1) caliper=1.00
weight=none;
assess lps var=(age male base_score comorb)
/ stddev=pooled(allobs=no) plots=none;
output out(obs=match)=ps_matched lps=_Lps matchid=_MatchID;
run;
ods graphics off;
proc sort data=ps_matched;
by _MatchID trt;
run;
proc transpose data=ps_matched
out=matched_pairs(drop=_Name_)
prefix=outcome_;
by _MatchID;
id trt;
var outcome;
run;
data matched_pairs;
set matched_pairs;
if nmiss(outcome_DrugA, outcome_Control)=0;
pair_difference=outcome_DrugA - outcome_Control;
run;
proc means data=matched_pairs n mean std stderr clm maxdec=2;
var pair_difference;
run;
PSMODEL的左侧值'DrugA'定义目标治疗,右侧只能放治疗前协变量。DISTANCE=LPS在 logit propensity score 尺度上匹配;CALIPER=1.00按该尺度的 pooled SD 约束本教学数据的可接受距离。该宽阈值只为保证小型模拟数据形成完整配对;正式研究通常应评估更严格的预设阈值及其样本损失/平衡权衡。METHOD=GREEDY(K=1)是 1:1 最近邻匹配。贪婪匹配依赖处理顺序;正式方案需固定 seed/排序、是否放回及匹配比例。WEIGHT=NONE使本 1:1 匹配集每人权重为 1;OUTPUT ... MATCHID=留下成对关系。ASSESS同时比较匹配前后协变量平衡。结局分析只能在设计验收后进行,不能为获得有利结局反复改 PS 模型。- 配对差的均值适合本例连续结局和一对一完整匹配;二分类或时间-事件结局需使用与 estimand、匹配相关性和删失结构一致的模型与方差估计。
变量解释表
| 变量 | 含义 | 典型来源 |
|---|---|---|
| USUBJID | 受试者唯一标识 | RWE 分析队列 |
| TRT | DrugA 或 Control;目标治疗为 DrugA | 治疗暴露定义 |
| AGE / MALE | 治疗前人口学协变量 | 索引日前记录 |
| BASE_SCORE | 治疗前疾病严重度 | 基线窗口内测量 |
| COMORB | 治疗前合并症指标 | 历史诊断窗口 |
| OUTCOME | 随访期连续结局;本例越大越好 | 预设随访窗口 |
_PS_ / _Lps | 估计倾向评分及其 logit | PROC PSMATCH 输出 |
_MatchID | 一对一匹配集编号 | PROC PSMATCH 输出 |
_MATCHWGT_ | 匹配权重;本例一对一且 WEIGHT=NONE 时为 1 | PROC PSMATCH 输出 |
| PAIR_DIFFERENCE | 同一匹配集内 DrugA - Control 结局差 | 结局分析派生 |
输出对照
随附程序已在 SAS 9.4 TS1M8 / SAS/STAT 15.3 上完成语法和运行验证。本页只给字段定位,不把原创模拟队列的效应数值包装成真实世界证据。
| SAS 输出 | 编号 | 对应报告 / QC |
|---|---|---|
| Propensity Score Model Information | ① | 目标治疗、模型协变量和 support region |
| Matching Information / Matched Sets | ② | 匹配方法、caliper、匹配对数及未匹配人数 |
| Standardized Mean Differences / All observations | ③ | 匹配前协变量不平衡 |
| Standardized Mean Differences / Matched observations | ④ | 匹配后 SMD 与平衡验收 |
PS_MATCHED / _PS_, _MatchID, _MATCHWGT_ | ⑤ | 受试者级可追溯匹配清单 |
PROC MEANS / PAIR_DIFFERENCE Mean | ⑥ | 本例 ATT 导向的配对平均差 |
| 同表 CLM | ⑦ | 配对平均差的 t 型置信区间;正式推断按 SAP 方差方法 |
先验收 ②–④,再读取 ⑥–⑦。若匹配后仍有实质性不平衡、样本大量丢失或 overlap 不足,应报告设计失败/目标人群改变,而不是直接给“校正后因果效应”。
示例数据与程序
- example.csv — 20 名 Drug A 与 30 名 Control 的原创模拟观察性队列,含治疗前协变量和连续结局
- example.sas — 倾向评分估计、1:1 greedy matching、平衡诊断、匹配清单和配对结局分析完整程序
常见坑
常见坑
- 纳入治疗后变量:中介、随访依从性或未来实验室值会引入偏倚;PS 模型只使用时间零点之前的信息。
- 按 p 值挑混杂因素:是否混杂取决于因果结构与临床知识,不取决于样本中的显著性。
- 追求高 c-statistic:PS 是平衡工具;预测治疗越准甚至可能意味着 overlap 越差。验收重点是协变量平衡与支持域。
- 只看平均 PS 平衡:两组评分相近不保证每个协变量平衡,必须逐项看 SMD 与分布。
- 混淆 ATT 与 ATE:匹配、裁剪与权重定义会改变目标人群;报告效应必须和 estimand 一致。
- 忽略匹配相关性:把匹配后的记录当完全独立样本会给出错误标准误;本例通过配对差保留一对一结构。
- 宣称消除了所有混杂:PS 只能平衡已测量且正确建模的协变量,未测量混杂仍需敏感性分析与限制说明。
- 看到结局后反复调匹配:设计阶段应对 outcome 保持盲态,避免为有利结果选择 caliper 或模型。
相关方法
- Logistic 回归 对二分类应答概率建模,校正基线和中心等协变量,并输出治疗组调整后 OR、95% CI 与 p 值。