stata采用psmatch2后保留匹配好的样本,1:3为例
命令感谢师弟运臻
匹配分为有放回和无放回,下面的例子是有放回的,如果采用无放回的方法values(2)就可以了,且不需要最后一步(expandcl。。。)
ssc install psmatch2
安装外部命令psmatch2
sysuse auto
使用系统自带数据集auto
psmatch2 foreign headroom, out (price) neighbor(3) logit
匹配
查看数据
gen pair1=_id if _treated==0
保留对照组的_id
replace pair1=_n1 if _treated==1
保留实验组的_id
在pair1中_n1和_id相同的值就是匹配了的记录
例如:第1行pair1为36,54、55、58、59、60等均是36,说明treat组中的这些记录都和untreat中的
第1行数据匹配
gen pair2=_id if _treated==0
replace pair2=_n2 if _treated==1
gen pair3=_id if _treated==0
replace pair3=_n3 if _treated==1
bysort pair1: egen paircount1=count(pair1)
bysort pair2: egen paircount2=count(pair2)
bysort pair3: egen paircount3=count(pair3)
egen byte paircount_z=anycount(paircount1 paircount2 paircount3), values(2/11)
找到最多的匹配数,这里是11次
drop if paircount_z==0
这样有放回的匹配好的数据集就全部得到了