如何在R的twang包中提取匹配数据框及加权后的完整数据集?
使用twang包提取加权数据集与匹配数据框
一、提取IPTW加权后的完整数据集
当你用iptw()完成倾向得分加权后,返回的模型对象(比如命名为iptw_fit)里包含了原始数据、倾向得分和各类权重,直接将原始数据与这些信息合并就能得到加权后的完整数据集:
- 先确认你已经拟合了IPTW模型:
library(twang) # 以ATE为估计量拟合模型,替换成你的变量和数据 iptw_fit <- iptw( treat = treat_var, covariates = ~ cov1 + cov2 + cov3, data = your_raw_data, estimand = "ATE" )
- 合并原始数据与权重、倾向得分:
# 把原始数据和倾向得分、对应权重绑定 weighted_full_data <- cbind( your_raw_data, ps_score = iptw_fit$ps, # 这里选ATE权重,根据你设定的estimand调整为ATT/ATC weight = iptw_fit$weights$ATE )
得到的weighted_full_data就是包含所有原始变量、倾向得分和加权权重的完整数据集,可直接用于后续加权分析。
二、提取twang中的匹配数据框
twang包的psmatch()函数专门用于倾向得分匹配,从返回的匹配对象中直接提取matched.data即可得到匹配后的数据框:
- 拟合倾向得分匹配模型:
# 以1:1匹配为例,替换成你的变量和数据 match_fit <- psmatch( treat = treat_var, covariates = ~ cov1 + cov2 + cov3, data = your_raw_data, ratio = 1 )
- 提取匹配后的数据集:
matched_data <- match_fit$matched.data
matched_data仅保留了处理组和成功匹配的对照组样本,是已经完成匹配的完整数据框。
注意:twang的核心功能是IPTW加权,
iptw()本身不生成匹配数据集,匹配是psmatch()的专属功能,不要混淆两者的使用场景。
内容的提问来源于stack exchange,提问作者YASIR AA
相关产品推荐
相关产品推荐

