Dear all,
I have exhausted most propensity score matching resources, I have finally found a course which was recommended in one of David Radwin post, luckily to be held April 20.
However, I came up with a solution to one of my problems, but need help with code.
After performing psmatch2, using 1:3 matching. The psmatch2 generates
_id - Eevery observation gets a unique id
_n1 _n2 _n3 - This is the Id with which the treated is matched with a control therefore having _nn = 3
I would like to create a new variable which will have the triplet controls under each other for each treatment.
So in my example (print screen)
For treated ID 11 = beside it has _n1 _n2 _n3 corresponding ID numbers
I would like
ID 11 observation first followed by its triplets matches underneath which would be those in green triangles
Array
Dataset:
This follows the same concept but with 1:1, where there is only one _n1. In my case as I have _n1 _n2 _n3 it's more challenging
generate pair = _id if _treated == 0
replace pair = _n1 if _treated==1
bysort pair: egen paircount = count(pair)
drop if paircount !=2
I have exhausted most propensity score matching resources, I have finally found a course which was recommended in one of David Radwin post, luckily to be held April 20.
However, I came up with a solution to one of my problems, but need help with code.
After performing psmatch2, using 1:3 matching. The psmatch2 generates
_id - Eevery observation gets a unique id
_n1 _n2 _n3 - This is the Id with which the treated is matched with a control therefore having _nn = 3
I would like to create a new variable which will have the triplet controls under each other for each treatment.
So in my example (print screen)
For treated ID 11 = beside it has _n1 _n2 _n3 corresponding ID numbers
I would like
ID 11 observation first followed by its triplets matches underneath which would be those in green triangles
Array
Dataset:
Code:
* Example generated by -dataex-. For more info, type help dataex clear input float(gender smoking infection socialdeprivation ethnicity) double _pscore byte(_treated _support) double(_weight _infection) byte(_id _n1 _n2 _n3) float _nn double _pdif float match byte dup2 float(pair paircount) 1 0 0 7 4 .14629124373657137 0 1 .3333333333333333 . 1 . . . 0 . 1 0 1 1 1 1 1 5 1 .17480944488523578 1 1 1 0 11 2 1 3 3 .008726538480995832 2 1 2 2 0 0 0 7 1 .18353598336623161 0 1 .3333333333333333 . 2 . . . 0 . 2 1 2 2 1 0 0 6 4 .23642515629258887 0 1 .6666666666666666 . 3 . . . 0 . 3 0 3 1 1 0 1 4 1 .27681680297995453 0 1 .3333333333333333 . 4 . . . 0 . 4 0 4 1 1 1 1 5 3 .2881297448796828 1 1 1 .3333333333333333 12 5 4 3 3 .0007233261974433081 5 1 5 2 0 0 0 6 1 .2888530710771261 0 1 .3333333333333333 . 5 . . . 0 . 5 1 5 2 0 0 0 6 2 .3595669083790513 0 1 .3333333333333333 . 6 . . . 0 . 6 0 6 1 1 0 0 3 1 .4088562831270797 0 1 .6666666666666666 . 7 . . . 0 . 7 0 7 1 1 1 1 2 1 .5554993045631528 1 1 1 .3333333333333333 14 8 9 7 3 0 8 2 8 3 0 1 1 5 2 .5035916419173779 1 1 1 0 13 8 7 6 3 .051907662645774844 8 2 8 3 1 0 0 2 1 .5554993045631528 0 1 1.6666666666666665 . 8 . . . 0 . 8 2 8 3 1 1 0 2 2 .6333538983172218 1 1 1 .3333333333333333 15 9 10 8 3 .05971942761857574 9 3 9 4 1 1 1 1 1 .6930733259357975 1 1 1 .3333333333333333 17 9 10 8 3 0 9 3 9 4 1 0 1 1 1 .6930733259357975 0 1 1.3333333333333333 . 9 . . . 0 . 9 3 9 4 1 1 0 2 2 .6333538983172218 1 1 1 .3333333333333333 16 9 10 8 3 .05971942761857574 9 3 9 4 1 0 0 2 3 .7048182691423677 0 1 1 . 10 . . . 0 . 10 0 10 1 0 1 1 1 3 .9372933094185172 1 0 . . 20 . . . . . 20 0 . 0 0 1 1 1 4 .9538339376992043 1 0 . . 21 . . . . . 21 0 . 0 0 1 1 1 1 .8866625742391517 1 0 . . 18 . . . . . 18 0 . 0 0 1 1 1 1 .8866625742391517 1 0 . . 19 . . . . . 19 0 . 0 0 1 0 . 4 . . . . . 22 . . . . . 22 0 . 0 end label values gender Gender label def Gender 0 "Female", modify label def Gender 1 "Male", modify label values smoking Smoking label def Smoking 0 "Nonsmoker", modify label def Smoking 1 "Smoker", modify label values socialdeprivation social label def social 1 "Most deprived", modify label def social 7 "Least deprived", modify label values ethnicity Ethnicity label def Ethnicity 1 "White", modify label def Ethnicity 2 "Asian", modify label def Ethnicity 3 "Black African", modify label def Ethnicity 4 "Mixed", modify label values _treated _treated label def _treated 0 "Untreated", modify label def _treated 1 "Treated", modify label values _support _support label def _support 0 "Off support", modify label def _support 1 "On support", modify
This follows the same concept but with 1:1, where there is only one _n1. In my case as I have _n1 _n2 _n3 it's more challenging
generate pair = _id if _treated == 0
replace pair = _n1 if _treated==1
bysort pair: egen paircount = count(pair)
drop if paircount !=2