Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: RE: RE: psmatch2-identifying matched pairs

From   "Garth Rauscher" <>
To   <>
Subject   st: RE: RE: psmatch2-identifying matched pairs
Date   Sun, 4 Apr 2010 23:43:32 -0500

Thanks to Ariel for the explanation. To estimate the average treatment
effect in the population (ATE) it makes sense that the 1:1 matching would
not be used. However, with the ATE option in PSMATCH2, the output also
includes estimates of ATT and ATU along with ATE, therefore it would seem
that the program would still need to know the matched pairs in order to
estimate ATT. Therefore I don't understand why the identified pairs change
and some appear to be "broken".

Garth Rauscher
Associate Professor of Epidemiology
Division of Epid/Bios (M/C 923)
UIC School of Public Health
1603 West Taylor Street
Chicago, IL 60612
ph: (312)413-4317
fx:  (312)996-0064

-----Original Message-----
[] On Behalf Of Ariel Linden,
Sent: Saturday, April 03, 2010 10:04 AM
Subject: st: RE: psmatch2-identifying matched pairs


Per your question about ATE and dropped matches: That makes intuitive sense
since the ATE represents the average treatment effect in the population.
Therefore, you would need to have the outcome values of the entire
population, not just the subset of matched controls. As a result, you would
no longer have 1:1 matches.


Date: Fri, 2 Apr 2010 13:57:53 -0500
From: "Garth Rauscher" <>
Subject: st: RE: RE: psmatch2-identifying matched pairs

I managed to figure out how to identify and subset my data to include only
the matched pairs created by psmatch2. What was (and still is) confusing me
was that if I included the ate option, some of the matched pairs were
"broken" and a member of the pair was no longer identified as such. I don't
understand why this happened, but, nonetheless for my purposes, leaving off
the ate option allowed the following code to work: 

- ---------------------------------------------------------------------
psmatch2 path2, pscore(p_prodterms) outcome(binarystage) caliper(.001)
noreplace neighbor(1)

gen pair = _id if _treated==0 
replace pair = _n1 if _treated==1
bysort pair: egen paircount = count(pair)
drop if paircount !=2
- ---------------------------------------------------------------------

This code creates the variable pair that identifies the matched pairs.

I forgot to mention- Hat tip to the authors of psmatch2 for providing this
partial solution...

- ------------------------------------------------------------------------
The following code:

gen pair = _id if _treated==0 
replace pair = _n1 if _treated==1

creates a variable that identifies the matched pairs but also includes those
within the region of support who are not included in a matched pair. I
cannot figure out how to drop those observations that are not part of a
matched pair. Any help would be appreciated.

*   For searches and help try:

*   For searches and help try:

© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index