Page 1 of 1

Panel error-correction model using PMGE

Posted: Thu Sep 01, 2011 5:49 am
by Frauke
Hi,

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
It would be great if you would answer my question regarding the short-run and long-run coefficients and have a quick look at my specification.
Thank you very much in advance.

Best,
Frauke

Re: Panel error-correction model using PMGE

Posted: Thu Sep 01, 2011 10:02 am
by TomDoan
I'm a bit puzzled by your model. In the Pesaran, Shin, Smith paper, the only thing that is fixed across individuals is the cointegrating vector. The intercepts, speed of adjustment, short-run dynamics and variances are all varying by individual. What you seem to be trying to do is to fix the cointegrating vector and the short-run dynamics, while allowing the speed of adjustment (and intercept and variance) to vary. I'm not sure I see how it makes sense to have the short-run dynamics fixed while the speed of adjustment isn't. However, if that is what you want to do, the first regression inside the loop needs to be corrected for the short-run terms (subtracting them off the dependent variable).