这是我自己在EViews 5 的 example files/pool/hausman 的 基础上,针对只有一个自变量的pooled data而改编的Huasman Test 的 code。希望对大家有帮助。这只能起到抛砖引玉的作用。同时,也请那位高人把它扩展成 n 个自变量的,这样大家就可以根据自己的数据,只做相应的改动,就可以轻松进行检验了。
这个code的前提是:
1. 你有y 和 x 两个数据变量 2。 你已经按照你的数据特性建立好一个文件名叫做xxx的工作文件,它里面要有一个建立好的pool,名字是g1。 3. 这里面,对每一个cross sectional unit 来说y? 是dependent variable, x? 是 independent variable 4. sample size 是从1980的第一季度到2000的第四季度
' hausman test for fixed versus random effects ' revised for version 5.0 (6/12/2005)by BVB509
' load workfile load xxx.wf1
' set sample smpl 80:1 2000:4
' estimate fixed effects and store results g1.ls(cx=f,h) x? y? vector beta = g1.@coefs matrix covar = g1.@cov
' keep only slope coefficients vector b_fixed = @subextract(beta,2,1) matrix cov_fixed = @subextract(covar,2,2)
' estimate random effects and store results g1.ls(cx=r,h) x? y? beta = g1.@coefs covar = g1.@cov
' keep only slope coefficients vector b_gls = @subextract(beta,2,1) matrix cov_gls = @subextract(covar,2,2)
' compute Hausman test stat matrix b_diff = b_fixed - b_gls matrix var_diff = cov_fixed - cov_gls matrix qform = @transpose(b_diff)*@inverse(var_diff)*b_diff
if qform(1,1)>=0 then ' set table to store results table(4,2) result setcolwidth(result,1,20) setcell(result,1,1,"Hausman test for fixed versus random effects") setline(result,2)
!df = @rows(b_diff) setcell(result,3,1,"chi-sqr(" + @str(!df) + ") = ") setcell(result,3,2,qform(1,1)) setcell(result,4,1,"p-value = ") setcell(result,4,2,1-@cchisq(qform(1,1),!df)) setline(result,5)
show result else statusline "Quadratic form is negative" endif