You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:22:07