如何提取twang包多组倾向得分匹配后的匹配数据集
twang包多组倾向得分匹配后提取匹配数据集的操作方法
场景1:使用twang默认加权PSM方案(多组处理最常用方案)
- 第一步:从已完成拟合的
mnps对象中提取样本权重,合并到原始数据集
假设你的多组PSM拟合结果对象名为mnps_fit,原始数据集名为raw_data,运行以下代码:# 提取ATE对应的平衡最优权重,若需ATT权重可自行调整stop.method参数 ps_weight <- get.weights(mnps_fit, stop.method = "es.mean") # 合并权重到原始数据集 matched_data_weighted <- cbind(raw_data, ps_weight = ps_weight) - 第二步:筛选有效匹配样本(等同于MatchIt中match.data剔除无匹配样本的逻辑)
直接保留权重大于0的样本即可排除完全未匹配的无效样本:
后续进行组间结局比较时,将matched_data_final <- matched_data_weighted[matched_data_weighted$ps_weight > 0, ]ps_weight作为分析权重带入统计模型即可,和MatchIt输出的match.data中weights字段用法完全一致。
场景2:使用twang的精确匹配模式完成多组匹配
如果你没有用加权方案,而是选择了匹配模式完成PSM,直接提取匹配组ID筛选样本即可:
- 第一步:提取匹配ID合并到原始数据集
match_id <- mnps_fit$match.id matched_data <- cbind(raw_data, match_id = match_id) - 第二步:剔除未匹配样本
# 剔除匹配ID为空的未匹配样本 matched_data_final <- matched_data[!is.na(matched_data$match_id), ]
匹配完成后可直接调用twang自带的
bal.table(mnps_fit)查看协变量平衡性,无需额外处理数据集。
内容的提问来源于stack exchange,提问作者Rackdos
相关产品推荐
相关产品推荐

