# Re: st: RE: Tobit coefficients

 From Vitor Felipe To statalist@hsphsun2.harvard.edu Subject Re: st: RE: Tobit coefficients Date Fri, 27 Jul 2007 13:02:06 -0300 (ART)

```Thank you very much Austin!!

This is exactly what I was looking for!! Perfect
explanation.

Sincerely,
Vitor

--- Austin Nichols wrote:

> Vitor <vfgate-demog@yahoo.com.br>:
> 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
>
> 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.