PSM场景下处理组与对照组样本量相等时如何实现均衡匹配并保留最多样本
均衡样本下的PSM匹配实现方案
你的需求本质是约束协变量平衡的最大化样本留存1:1匹配,初始处理组、对照组样本量相等的场景完全可以通过调整MatchIt参数搭配自定义校验逻辑实现,无需更换工具包。
方案1:直接调整MatchIt参数实现
优先用最优匹配代替默认的贪婪匹配,配置示例代码如下:
library(MatchIt) # 替换为你的协变量列表构造匹配公式 match_formula <- treat ~ covar1 + covar2 + covar3 + covar4 match_res <- matchit( formula = match_formula, data = your_raw_data, # 替换为你的数据集名称 method = "optimal", # 最优全局匹配,优先匹配整体距离最小的配对 caliper = 0.2, # 卡钳阈值设为倾向得分标准差的0.2倍,可调整 std.caliper = TRUE, replace = FALSE # 不放回匹配,避免样本重复使用 ) # 提取匹配后数据集 matched_data <- match.data(match_res)
匹配完成后通过summary(match_res)查看协变量标准化均值差(SMD),常规接受阈值为SMD<0.1,若需要严格统计显著性校验,可对每个协变量做组间t检验/秩和检验/卡方检验,确认所有协变量组间差异p值高于你设定的显著性水平。
如果平衡性不满足,可迭代调整卡钳值:卡钳越小匹配精度越高、样本丢弃量越大,卡钳越大留存样本越多、平衡性越差,可在0.05~0.3区间逐步测试找到最优阈值。如果倾向得分匹配效果不好,可设置distance = "mahalanobis"使用马氏距离匹配,无需拟合倾向得分,更适配小样本场景。
方案2:最大化留存样本的自定义剪枝方案
如果上述方案的样本留存率达不到你的预期,可使用逐对剪枝逻辑实现最大样本留存:
- 先做无卡钳限制的1:1最优匹配,得到全部300组配对
- 计算每一组配对的匹配距离(倾向得分差/马氏距离),按距离从小到大排序
- 从距离最小的配对开始逐批纳入样本,每纳入一批就做一次全协变量平衡检验,直到刚好满足所有协变量无显著差异的要求,此时的样本量即为可保留的最大样本量
该逻辑可通过基础循环搭配cobalt包的平衡检验函数快速实现,无需重复编写检验代码。
内容的提问来源于stack exchange,提问作者Pie-ton
相关产品推荐
相关产品推荐

