1
votes

I have a group of treated firms in a country, and for each firm I would like to find the closest match in terms of industry, size and profitability in the rest of the country. I am working on Stata. All I need is to form a control group- could anybody guide me with the code? That'd be greatly appreciated! I currently have the following, which doesn't get me what I need:

psmatch2 (logpension) (treated sector logassets logebitda), logit ate

2
This is hard since you don't have a distance metric on this data. If you have two untreated firms, one is closer on size and one is closer on profitability, how do you choose which one to use? Matching firms based on probability of treatment, which is a function of size and etc., would be much easier since it is one dimensional. Also, do you want matching with or without replacement? Other user-written matching commands in Stata to consider pscore, match, and cem as well as Stata's own teffects psmatch. I would look at cem first.dimitriy
There's also mahapick based on Mahalanobis scoring.dimitriy
Dmitriy thanks a lot for your response. Let's suppose I only want to match on size - which command would you recommend? ive been checking the helpfiles and notation is a bit confusing. thanks again!!İrem Erten
i would like to match with replacement!İrem Erten

2 Answers

2
votes

Here's how you might match on x1 and x2 using Mahalanobis distance as a metric, to get the effect on y from treatment t:

use http://ssc.wisc.edu/sscc/pubs/files/psm, clear
psmatch2 t, mahalanobis(x1 x2) outcome(y) ate

The variable _n1 stores the observation number of the matched control observation for every treatment observation.

1
votes

The following is a full set of code you can run to find your average treatment effect on the treated (your most important indicator result) and to check if the data is balanced (whether your result is valid). Before you run it, you need to make sure your treated is labeled in the following manner: 0 should be labeled as the control group and 1 should be labeled as the experimental/treatment. "neighbor(1)" means I chose the option nearest-neighbor matching. It basically pairs each treated observation with a control observation whose propensity score is closest in absolute value.

psmatch2 treated sector logassets logebitda, outcome (logpension) neighbor(1) common

After running psmatch, you need to make sure your data is balanced. So you need to run this:

pstest sector logassets logebitda, treated(treated)

if your t-test shows any significance below 0.05, it means your data is not balanced. to check the balance of your data visually, you can also run

psgraph

right after your psmatch2 command.

Good luck!