Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • creating a variable that identifies all observations used in a matching process

    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

    Click image for larger version

Name:	Capture.PNG
Views:	1
Size:	81.3 KB
ID:	1705075


    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

  • #2
    Kreshna Gopal (StataCorp)

    Comment

    Working...
    X