I would like to ask whether and how it is possible to use the RATS program oecd.prg (in the file pesaranshinsmithjasa.zip) for the pooled mean group estimator proposed by Pesaran, M.H.,Shin,Y.,Smith,R.,1999.Pooled mean group estimation of dynamic heterogeneous panels. Journal of the American Statistical Association 94, 621–634. to estimate a panel error-correction model.
If I understand the program code correctly, it will provide only the long-run coefficients but not the short-run dynamics or the adjustment coefficient. The output includes "Speed of Adjustment" but this value complies with the long-run elasticity representing theta rather than phi in Pesaran et al. (1999).
I am interested in the (joint) significance of the short-run dynamics and the adjustment coefficients and, hence, need the corresponding coefficients. How can I get these?
Is the following specification correct when estimating the error-correction model:
ΔY_it = alpha_i + beta_1*ΔY_it-1 + beta_2*ΔY_it-2 + gamma_1*ΔE_it-1 + gamma_2*ΔE_it-2 + lambda*ect_t-1 + u_it?
Code: Select all
* Estimate of PMG
*
dec vect[series] uvar(3)
*
* Get residuals from projections onto the "nuisance" variables. This
* is done individual by individual. Note that the error correction
* term actually leaves out the intercept as they are allowing that
* to vary, while constraining the slope coefficients
*
sweep(group=%indiv(t),series=tvar)
# dy y{1} e de{1} de{2} dy{1} dy{2}
# constant
*
* Initial guess value for the slope coefficients in the cointegrating vector.
* It appears that the behavior of the estimation process is quite sensitive to
* good guess values for this.
*
compute [vector] theta=||1.0||
dec vect phi(23) sigmasq(23)
*
do iters=1,60
*
* Estimate the speeds of adjustment (phi's) for each individual
*
set xitilde = tvar(2)-theta(1)*tvar(3)
do i=1,23
linreg(noprint) tvar(1) i//1 i//39
# xitilde
compute phi(i)=%beta(1),sigmasq(i)=%sigmasq
end do i
*
* Filter through by the phi's to get the transformed regressors
* for re-estimating the theta's
*
set uvar(1) = ix=%indiv(t),tvar(1)-phi(ix)*tvar(2)
do j=2,3
set uvar(j) = ix=%indiv(t),-phi(ix)*tvar(j)
end do j
set spread = sigmasq(%indiv(t))
linreg(spread=spread,noscale,noprint) uvar(1)
# uvar(3) tvar(4) tvar(5) tvar(6) tvar(7) tvar(8)
compute theta=%beta
*
* This should eventually stabilize with %rss==%nobs
*
if abs(%rss/%nobs-1)<=1.e-8
break
end do iters
*
* This is the final estimate for the PMG. It looks as if there's an error in the
* log likelihood for this branch.
*
linreg(spread=spread,noscale,title="Pooled Mean Group") uvar(1)
# uvar(3) tvar(4) tvar(5) tvar(6) tvar(7) tvar(8)
*
compute loglpmg=%logl
disp "long-run Energy Elasticity" @30 %beta(1) %stderrs(1)
disp "short-run dynamic Energy(-1)" @30 %beta(2) %stderrs(2)
disp "short-run dynamic Energy(-2)" @30 %beta(3) %stderrs(3)
disp "short-run dynamic Income(-1)" @30 %beta(4) %stderrs(4)
disp "short-run dynamic Income(-2)" @30 %beta(5) %stderrs(5)
sweep(group=%indiv(t),var=hetero)
# tvar(1)
# xitilde
disp "Speed of Adjustment" @30 %beta(1) %stderrs(1)
disp "Log Likelihood" @30 loglpmg
disp "Estimated Parameters" @30 23*(7+2)+2
Thank you very much in advance.
Best,
Frauke