Announcement

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

  • Multiple matches returned when attempting 1:1 matching with -teffects psmatch-

    I am estimating average treatment effects using a propensity scoring model with -teffects psmatch- in Stata 15.1. I have specified that I would like a 1:1 nearest neighbor match within a specified caliper, expecting that the number of matched observations in the control group should match the number of treatment observations for which there is common support. Instead, I am getting FAR more observations than the [number of treated observations on support] x 2.

    Here's some more background. Per methodology recommended by Garrido et al., in "Methods for Constructing and Assessing Propensity Scores," I generated my scores, then ran -psmatch2-, as shown below:

    Code:
     psmatch2 $treatment if insample==1, outcome(clength1) pscore(mypscore) caliper (.4212) ///
        common neighbor(1)
    
    ----------------------------------------------------------------------------------------
            Variable     Sample |    Treated     Controls   Difference         S.E.   T-stat
    ----------------------------+-----------------------------------------------------------
            clength1  Unmatched | 293.470839   164.227703   129.243136   11.4177235    11.32
                            ATT | 293.470839   463.809388  -170.338549   36.9635433    -4.61
    ----------------------------+-----------------------------------------------------------
    Note: S.E. does not take into account that the propensity score is estimated.
    
               | psmatch2:
     psmatch2: |   Common
     Treatment |  support
    assignment | On suppor |     Total
    -----------+-----------+----------
     Untreated |    44,031 |    44,031 
       Treated |       703 |       703 
    -----------+-----------+----------
         Total |    44,734 |    44,734
    As you'll see, 703 treated observations are on support, leading me to believe there should be 703 matched untreated observations.

    When I subsequently conduct -teffects psmatch-, I get the same number of observations in total. This suggests to me that all 44,734 observations were used, rather than the 1,406 I would expect (703 x 2). My code and ouput are below.

    Code:
     
    teffects psmatch (clength1) ($treatment $xlist) if insample==1, atet ///
          caliper(.4212) nneighbor(1) gen(match)
    
    Treatment-effects estimation                   Number of obs      =     44,734
    Estimator      : propensity-score matching     Matches: requested =          1
    Outcome model  : matching                                     min =          1
    Treatment model: logit                                        max =        137
    ------------------------------------------------------------------------------
                 |              AI Robust
        clength1 |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
    -------------+----------------------------------------------------------------
    ATET         |
    t_ccreceipt1 |
       (1 vs 0)  |   58.84786   10.56207     5.57   0.000     38.14658    79.54914
    ------------------------------------------------------------------------------
    This indicates that some observations were matched up to 137 times. Does that mean that all 44,734 observations were used in the analysis? If so, how can I get the maximum number of requested matches down to 1? And if not--if in fact 1:1 matching was conducted--how can I identify which observations were used in the analysis and which were not? I will need to run descriptive statistics on the equivalent treated and untreated groups to show that the matching yielded sufficient balance.

    Thank you very much in advance.

  • #2
    Welcome to Statalist.

    Disclaimer: I'm not a user of teffects psmatch, but I do have some experience interpreting unfamiliar results and documentation.

    I believe you have misinterpreted Stata's output. It is telling you that the entire population has 44,734 observations, that 1 match per treated observation was requested, and that the available number of matches for each treated observation ranged from a 1 to 74. But it does not indicate that for some observations, 74 matches were actually used.

    I draw this conclusion from a comparison of examples 1 and 3 in the documentation for teffects psmatch found in the Stata Treatment Effects Reference Manual PDF included in the Stata installation and accessible from Stata's Help menu. The generate option should allow you to confirm that only one observation was matched to each of your treated cases. There are other options that may be helpful, and the entire section of the manual is worth reading.

    I could have misinterpreted what I read, so you should confirm these assertions empirically, presumably using the generate option.
    Last edited by William Lisowski; 28 Jun 2018, 17:23.

    Comment

    Working...
    X