PSMATCH with 2 conditions

PSMATCH with 2 conditions

PSMATCH only IF

Dear Statalist users,
I am writing a study on the performance of Private Equity (PE) vs.
Non-Private Equity (NPE) backed IPOs. In order to eliminate the endogenity
of being PE-backed, I want to perform propensity score matching by applying
both local linear regression and k-nearest neighbors methods.

My depvar is PE_backed
My [indepvars] are balance sheet and income statement figures like sales,
total assets, operating income, etc.
My outcome is the buy-and-hold-return 4 years after the IPO

In my dataset I created a variable which takes values from 1 to 15, each
number corresponding to the industry the PE- or NPE-backed firm belongs to.
I also have a variable which indicates the year when the IPO occurred.

Now my question: I want to match firms with each other, ONLY if they belong
to the same industry and if the IPO occurred in the same YEAR. In other
words, match firm A (PE-backed) with the firm B (NPE-backed) for which the
distance between their propensity scores is the smallest AND they belong to
the same industry and their IPOs occurred in the same year.
How can I compute this with psmatch2?

re: PSMATCH with 2 conditions

I would suggest another path to take here. cem (Coarsened Exact Matching)is
user written program by Gary King (http://gking.harvard.edu/cem/) that
allows you to force a match on a specific level of a variable (for example,
force gender to be exact). In this case, I would match some variables within
calipers and require exact matches where necessary on other variables.

AW: st: PSMATCH with 2 conditions

thanks for the great tip & sorry for the late reply but I've been pretty
busy lately.

One thing though:
My industry is only 2 digit, so if I only want to match by industry, I just
multiply industry by 10 and then add the pscore, as follows:
gen pscore2=3-digit-industry*10+pscore
And then psmatch2 as indicated by you in the link.
THE PROBLEM occurred when I used 1000 instead of 10, and then 100000 instead
of 1000; ALL 3 yielded different results (T & Z-scores when bootstrapping
SEs)

I get the same results in both of the psmatch2 calls. The issue may be with the bootstrapping procedure rather than with the call to psmatch2, itself.

Regards,

Judson

----------------------------------

Hi Judson,

thanks for the great tip & sorry for the late reply but I've been pretty
busy lately.

One thing though:
My industry is only 2 digit, so if I only want to match by industry, I just
multiply industry by 10 and then add the pscore, as follows:
gen pscore2=3-digit-industry*10+pscore
And then psmatch2 as indicated by you in the link.
THE PROBLEM occurred when I used 1000 instead of 10, and then 100000 instead
of 1000; ALL 3 yielded different results (T & Z-scores when bootstrapping
SEs)

AW: AW: st: PSMATCH with 2 conditions

Dear Judson,

Just tried out the multiplication with 10 and 1000 on the nlswork dataset,
and again, the T-values are different (without bootstrapping). When I use
pscore2 (multiplication with 10) I get a T of 9.16, Difference is .102809747
and SE is .011229545. Using pscore3 (*1000) yields a T of 4.02, a Difference
of .092227641 and a SE of .02294341.

The only explanation I came up with is that (my) Stata "looses" decimals
with each multiplication or performs a "mysterious" round-up. I.e. if my
initial pscore is 0.28732124 (like row 3 in the dataset), then the pscore2
is 720.28729 and the pscore3 is 72000.287. IF my theory holds, then by
multiplying with a huge number, all decimals should disappear. I generated a
pscore4 (*1000000) and now I only see 72000000, but T is still 4.72,
Difference is .263281083 and SE .055774089, hence this doesn't make sense
either.

I'm using Stata 11.1..I really don't know what else can be wrong..:(((((

PS: I exported the data to excel, and only the "short" numbers get exported
(i.e. 72000.287, and NOT 72*1000+0.287321424)

I get the same results in both of the psmatch2 calls. The issue may be with
the bootstrapping procedure rather than with the call to psmatch2, itself.

Regards,

Judson

----------------------------------

Hi Judson,

thanks for the great tip & sorry for the late reply but I've been pretty
busy lately.

One thing though:
My industry is only 2 digit, so if I only want to match by industry, I just
multiply industry by 10 and then add the pscore, as follows:
gen pscore2=3-digit-industry*10+pscore
And then psmatch2 as indicated by you in the link.
THE PROBLEM occurred when I used 1000 instead of 10, and then 100000 instead
of 1000; ALL 3 yielded different results (T & Z-scores when bootstrapping
SEs)