如何在Stata中为匹配观测生成匹配标识虚拟变量
在Stata中完成临床数据的匹配与后续回归分析
1. 前期准备
先确认你的数据里有明确的处理组标识变量(比如treat,1代表处理组,0代表对照组),以及需要用来匹配的协变量(比如年龄、性别、疾病分期这类临床特征)。
2. 执行匹配操作(以常用的倾向得分匹配为例)
第一步:估计倾向得分
用logit模型计算每个观测的倾向得分,也就是进入处理组的概率:
pscore treat age gender disease_stage, logit
把后面的协变量换成你实际要用的变量即可。
第二步:完成1:k匹配(k≥1,可按需调整)
比如给每个处理组匹配2个对照组,同时设置卡尺范围保证匹配质量:
psmatch2 treat, neighbor(2) caliper(0.05) common
参数说明:
neighbor(2):指定每个处理组匹配2个对照组,改成3就是1:3匹配caliper(0.05):限制匹配的倾向得分差异不超过0.05,可选但能提升匹配平衡性common:只保留倾向得分在共同支持域内的观测,避免极端值干扰
3. 生成匹配标记变量
psmatch2会自动生成_match变量——同一个数字代表一组匹配样本,未匹配的观测_match值为.。基于这个生成标记变量:
gen matched = (_match != .)
这样matched=1就是已匹配的观测,matched=0是未匹配的。
4. 用匹配样本做回归
直接筛选已匹配的观测执行回归:
reg outcome_var treat age gender disease_stage if matched == 1
如果要用匹配权重做加权回归,用这个命令:
reg outcome_var treat age gender disease_stage [pw=_weight] if matched == 1
备选:马氏匹配(直接基于协变量匹配)
如果不想用倾向得分,也可以直接基于协变量做马氏匹配:
matchit treat, mahalanobis(age gender disease_stage) neighbor(2) gen matched = (_match != .)
额外提示
匹配后建议用pstest, both检查协变量的平衡性,确保匹配效果符合要求。
内容的提问来源于stack exchange,提问作者Greenhill
相关产品推荐
相关产品推荐

