Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, is already up and running.

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

Re: st: Combining multiple imputation with propensity score matching

From   "Ariel Linden, DrPH" <>
To   <>
Subject   Re: st: Combining multiple imputation with propensity score matching
Date   Wed, 3 Mar 2010 11:15:58 -0800

I suggest that you consider using an optimal matching procedure. It will
allow you to choose the maximum number of controls you'd like to match to
each treated unit. There will be some treated units that will be matched to
one control, and others that may be matched to the maximum you've set as the

Mark Lunt wrote a program for stata called optmatch2


    The command optmatch2 performs optimal matching using the network flow
methodology outlined
    in Rosenbaum(1989).  The variable casecontrol contains 1 for cases and 0
for controls. The
    variable(s) on which matching is to be performed are given by varlist.
If there is more than
    one variable in varlist, there are a number of ways of calculating a
distance between a case
    and a control: see the option measure below for more information.

I hope this helps


On Tue, Mar 2, 2010 at 12:24 PM, David Kantor <> wrote:
> Hi.
> As the author of mahapick, I would like to mention that, indeed, it does
> pick unique matches. (This could be an avenue for future development.)
> You can specify that it generates a multitude of match candidates, which
> virtually a queue, in order of closeness, of possible matches for each
> primary ("treated") case. You then can take this and run a loop that
> primary cases in a random order. For each such case,
>  select the best candidate for the given primary case;
>  remove that selected match as a candidate for use in later passes through
> the loop.
> I recommend that if you want more than one match (say 3) per primary case,
> that you run this loop several (3) times (maintaining the same data
> structure that disqualifies candidates from future matching) -- rather
> selecting, say, the best 3 matches for each case in one pass through the
> loop. The latter method might enable earlier cases in the loop to grab
> better matches.
> Of course, this has a random element to the process. You may or may not
> that. But you need some way of deciding who gets a given candidate if it
> matched to more than one primary case.
> I had done this selection process once, several years ago; I might be able
> to dig up the code if necessary. My co-worker also had a plan to somehow
> optimize the process by swapping matches in order to minimize the sum of
> distances. That was too complex to be done in Stata, and we abandoned it.
> understand that the task was taken up by others (in C, I suppose), but the
> result was no better than the original random process.
> --David

*   For searches and help try:

© Copyright 1996–2016 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index