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]

re: st: Re: Propensity Score Matching

From   "Ariel Linden. DrPH" <>
To   <>
Subject   re: st: Re: Propensity Score Matching
Date   Mon, 18 Jun 2012 14:50:52 -0400

I didn't see a posting by Austin, so I am not sure what advice was dispensed
after my posting.

In -psmatch2- (a user written program: -findit psmatch2-) the _weight
variable is indeed a type of "frequency weight" when you are using a 1:k
matching algorithm. If you have 1:1, then every matched treated and control
will receive a weight of 1. If there are 4 controls for each 1 treated, then
each control will receive a weight of .25 and the treated will equal 1. 

You do not need to use the weight in the outcome model in an 1:1 matching
scenario, you'd simply use: regress y x if _weight==1

As you correctly noted, when you have multiple controls you will need to use
the _weight as a weight in the model: regress y x [pw=_weight], vce(robust)

Using kernel weighting will provide a different type of weight, which is not
directly comparable to the frequency weight in 1:k matching. The question is
what you are trying to achieve. 

I hope this helps


Date: Sun, 17 Jun 2012 22:49:23 -0700 (PDT)
From: niken kusumawardhani <>
Subject: st: Re: Propensity Score Matching

Thanks Austin for taking the time answering my question.. I will consider
your advice!

On the other note, I have another question on the command psmatch2.

What does _weight really contain? To my knowledge, it holds the frequency a
particular observation was used as a match (and the value will be missing if
the observation was not a control or used as a match). Does it mean that if
we run "regress y treatment variable if _weight!=." it will produce the same
result as "psmatch2 treatment, outcome(y) norepl" for every matching

I have tested it and the two commands produce the same result for 1:1
matching but not for any other algorithm... What should I do with _weight in
a regression command to replicate the result of psmatch2?

I tried for kernel and radius matching, the command that produces result
similar to psmatch2 is:

regress y treatment variable [aw=_weight] if _weight!=.

but it's not exactly the same anyway.. any suggestion?

Any help is very much appreciated.



Date: Sun, 17 Jun 2012 12:22:29 -0400
From: "Ariel Linden. DrPH" <>
Subject: re: st: Propensity Score Matching

This sounds to me like a case of mixing apples and oranges.

In its most general form, propensity score matching is intended to balance
observed baseline covariates between treated and non-treated individuals in
order to "replicate" an RCT (ie., that at least on observed characteristics
individuals are exchangeable). 

Here you are matching at the aggregate level, and then you want to make
statements about treatment effects at the individual level? In considering
my last sentence, would you argue that you can achieve balance on individual
covariates when you are matching at the aggregate cross-sectional level? If
not, why would you think that your outcomes (measured at the individual
level) would not be potentially biased?

It seems to me that you may want to consider a difference-in-differences
model using the cross-sectional data as covariates and outcome. If you want
to use a PS approach (or any "matching" approach for that matter), you'll
need to have individual level characteristics and outcomes. You could throw
in some cross-sectional covariates if they make sense, depending on your
content expertise.

Whatever you do, it needs to stand up to scientific scrutiny, and I am not
sure you can make the case as you posed it.

I hope this helps


*   For searches and help try:

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