On Fri, 18 Feb 2005, nolwenn roudaut wrote:
Dear All,
I want to estimate a treatment effect model, a two-stage model with a probit
model in the first and an OLS in the second.
I cannot use the 'treatreg' stata program as some of my hypothesis are
different
from the classical ones.
So I need to compute the two-step corrected variance-covariance matrix "by
hand".
One way to do this is to use the Murphy-Topel correction procedure. (I thank
a
statalister that provided me his program last month).
Another way (and this is the one I am interested in) is to use bootstrap
technics.
Does anyone knows how to implement this method?
Nolwenn
One alternative may be to use the -bootstrap- command along with
-treatreg, twostep-. That would provide bootstrap standard errors
for the classic two-step treatment effects model.
In the program below I do just that, using the dataset described in
[R] treatreg. Then I write my own program that illustrates how to
replicate the results from -bootstrap- and -treatreg, twostep-.
The only thing of note is that even though we are bootstrapping,
to use -ereturn post- we must provide a variance matrix; the
identity matrix is fine as long as the row and column names
match the column names of our parameter vector.
webuse labor, clear
gen wc = cond(we>12, 1, 0)
set seed 1
bootstrap "treatreg ww wa cit, treat(wc=wmed wfed) twostep" _b, reps(50)
program mytreat, eclass
// Stage 1 probit
probit wc wmed wfed
tempname b
mat `b' = e(b)
// Get the hazard ratio
tempvar xb hazard
predict double `xb', xb
generate double `hazard' = .
replace `hazard' = normden(`xb') / norm(`xb') if wc==1
replace `hazard' = -1*normden(`xb') / (1-norm(`xb')) if wc==0
// Now do the second step
regress ww wa cit wc `hazard'
tempvar used
gen byte `used' = e(sample)
mat `b' = `b', e(b) // `b' has [<probit coefs> <reg coefs>]
mat colnames `b' = pr_wmed pr_wfed pr_cons wa cit wc hazard _cons
// Need a variance matrix for -ereturn post-
// The identity matrix is fine, since we don't
// really care what is in it.
tempname V
mat `V' = I(colsof(`b'))
mat rownames `V' = pr_wmed pr_wfed pr_cons wa cit wc hazard _cons
mat colnames `V' = pr_wmed pr_wfed pr_cons wa cit wc hazard _cons
ereturn post `b' `V', esample(`used')
end
set seed 1
bootstrap "mytreat" _b, reps(50)
Hope this helps
-- Brian Poi
-- [email protected]
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/