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:
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.
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.
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
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 ------------------------------------------------------------------------------
Thank you very much in advance.
Comment