Vitor <[email protected]>:
As I have pointed out before on this list, e.g.
http://www.stata.com/statalist/archive/2007-04/msg00549.html
http://www.stata.com/statalist/archive/2006-12/msg00466.html
-tobit- is inappropriate if the zeros are not censored values
(representing a negative y* that is observed as y=0). If the zeros
are simply a point mass in the distribution of a nonnegative dep var,
then -poisson- or -glm- are better options. In your case, the fact
that many people receive no money from parents does not mean that
their parents would like to take money from them (make a negative
transfer), but are prevented by law from doing so. I would use
-poisson- to estimate the response of ln(y) including zeros of y in
the estimation, and then predict as usual. Why do you need a
prediction conditional on y>0 anyway? Just to ensure predictions are
nonnegative? Bad reason!
Though -poisson- is designed for count variables, it works well for
any model where E(y|x)=exp(xb). See Wooldridge
(http://www.stata.com/bookstore/cspd.html) p.651 and surrounding text:
"A nice property of the Poisson QMLE is that it retains some
efficiency for certain departures from the Poisson assumption."
In any case, the better way to get the predictions is to predict over
the whole estimation sample, but first replace 1) AFTER=1, TREAT=1,
TREAT*AFTER=1, then 2) AFTER=1, TREAT=0, TREAT*AFTER=0, etc. to
generate predictions *for each observation* under different
counterfactuals, then compare the means (the use of -poisson- is
illustrative--any estimation command can be used, even -tobit-):
sysuse auto, clear
replace mpg=max(0,mpg-20)
g treat=rep78>3 if !mi(rep78)
la var treat "Fake Treatment Var"
ren for after
la var after "Fake After Var"
g ta=treat*after
poisson mpg len treat after ta
predict m if e(sample)
replace treat =1
replace after=1
replace ta=treat*after
predict m11 if e(sample)
replace treat =0
replace ta=treat*after
predict m01 if e(sample)
replace after=0
replace ta=treat*after
predict m00 if e(sample)
replace treat =1
replace ta=treat*after
predict m10 if e(sample)
su m01
local m01=r(mean)
su m11
local m11=r(mean)
di "Effect of treat given after=1 is " `m11'-`m01'
su m00
local m00=r(mean)
su m10
local m10=r(mean)
di "DD of treat, after switching 0->1, is " `m11'-`m01'-`m10'+`m00'
and so on. Then you could wrap all that in a rclass -program- and
-bootstrap- it for standard errors on the estimated treatment effects,
not that the diff-in-diff will really identify any true treatment
effects.
On 7/27/07, [email protected] <[email protected]> wrote:
> Austin, thank you very much for your help.
>
> Yes, I was talking about -prvalue- from spost package.
>
> Let me try to explain my situation more clearly. I am
> estimating a classic triple-difference model. So I
> have three dummies: TREAT, AFTER and AFFECTED. I also
> have TREAT*AFTER, TREAT*AFFECTED, AFTER*AFFECTED and
> TREAT*AFTER*AFFECTED. And I also have a vector of
> variables (sex, education, etc.)
>
> My dependent variable (Y) is the amount of money
> received from parents. (many people receive zero). I
> want to have predicted values E(Y|Y>0), and respective
> Standard Errors, for every combination of the three
> dummies:
>
> 1) TREAT=1, AFTER=1, TREAT=1, TREAT*AFTER=1, ...
> 2) TRATE=0, AFTER=1, TREAT=0, TREAT*AFTER=0, ...
> 3) etc...
*
* 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/