Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: Panel with negative Hausman


From   sam sampton <sam_sampton@yahoo.com>
To   statalist@hsphsun2.harvard.edu
Subject   st: Panel with negative Hausman
Date   Wed, 20 Apr 2011 12:02:29 -0700 (PDT)

Dear Stata Users,
Dealing with negative Hausman in panel est. I'm trying to run a version of this 
test (retrieved from the archive) under STATA 11 but got error:


---------------------------------- BEGIN --- foreric.do --- CUT HERE ------- 
local id myid local depvar lnuncs local varlist lngdp ecrise ecfall urban 
lnhouse femalepa male1544        /* 	*/ lndiscr lnfree lnpts latin ssa deathp 
rulelaw protest cathol  /* 	*/ muslim transiti lnethv oecd war year89 year92 
year95  xtreg `depvar' `varlist', re hausman, save xthaus  xtreg `depvar' 
`varlist', fe hausman, less  tokenize `varlist' local i 1 while "``i''" != "" { 
	qui by `id':  gen double mean`i' = sum(``i'') / _n 	qui by `id':  replace 
mean`i' = mean`i'[_n] 	qui by `id':  gen double diff`i' = ``i'' - mean`i' 	local 
newlist `newlist' mean`i' diff`i'  	local i = `i' + 1 }  xtreg `depvar' 
`newlist' , re  qui test mean1 = mean1 , notest		/* clear test */ local i 2 
while "``i''" != "" { 	if `b'[1,colnumb(`b', "mean`i'")] != 0 & 	/* 	*/ 
`b'[1,colnumb(`b', "diff`i'")]  != 0 { 		qui test mean`i' = diff`i' , accum 
notest 	} 	local i = `i' + 1 } test  ----------------------------------   END 
--- foreric.do --- CUT HERE ------- 

Resulting in (with my own varlist)

> /* Perform suest test rather than Husman test (negative CHI2!)   */
> local id id;

. local `depvar' y1;

. local `varlist' x1 x2 x3 x4 x5;

> 
> tokenize `varlist';

. local i 1
> while "``i''" != "" {
>         qui by `id':  gen double mean`i' = sum(``i'') / _n
>         qui by `id':  replace mean`i' = mean`i'[_N]
>         qui by `id':  gen double diff`i' = ``i'' - mean`i'
>         local newlist `newlist' mean`i' diff`i'
> 
>         local i = `i' + 1
> }
> ;

. xtreg `depvar' `newlist' ;

Random-effects GLS regression                   Number of obs      =       477
Group variable: id                              Number of groups   =         9

R-sq:  within  = 0.6599                         Obs per group:  min =        53
       between = 0.9421                                        avg =      53.0
       overall = 0.8080                                        max =        53

Random effects u_i ~ Gaussian                   Wald chi2(5)       =    884.81
corr(u_i, X)       = 0 (assumed)                Prob > chi2        =    0.0000

------------------------------------------------------------------------------
y1          |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
          x1 |   .7123138   .0892791     7.98   0.000       .53733    .8872977
          x2 |   .0226081   .0054684     4.13   0.000     .0118903     .033326
          x3 |  -.0399303   .0638208    -0.63   0.532    -.1650167    .0851561
          x4 |  -.3278316   .0913511    -3.59   0.000    -.5068766   -.1487867
          x5 |   .0297908    .0152927     1.95   0.051    -.0001824     .059764
       _cons |     3.4797   .7820005     4.45   0.000     1.947008    5.012393
-------------+----------------------------------------------------------------
     sigma_u |  .13777146
     sigma_e |  .16628839
         rho |  .40703053   (fraction of variance due to u_i)
------------------------------------------------------------------------------

. tempname b
> matrix `b' = e(b)
> 
> qui test mean1 = diff1 , notest         /* clear test */
> local i 2
> while "``i''" != "" {
>         if `b'[1,colnumb(`b', "mean`i'")] != 0 &        
>            `b'[1,colnumb(`b', "diff`i'")]  != 0 {
>                 qui test mean`i' = diff`i' , accum notest
>         }
>         local i = `i' + 1
> }
> ;
_= invalid name
r(198);

end of do-file

r(198);

Thanks for your help understanding  what's going on,
Sam

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index