Page 1 of 1

Properly inserting the exogenous process in the model

PostPosted: Tue Aug 30, 2016 7:07 pm
by kyri82
Hi all,

This is somehow related to an older post of mine. I have a two-sector, two-country model that is calibrated. The exogenous process is the TFP in each sector and each country, hence I have four shocks and four exogenous variables.
Code: Select all
zT1 = A1T_11*zT1(-1) + A1T_12*zT2(-1) + A1T_13*zN1(-1) + A1T_14*zN2(-1) + eT1 ;
zT2 = A2T_11*zT1(-1) + A2T_12*zT2(-1) + A2T_13*zN1(-1) + A2T_14*zN2(-1) + eT2 ;
zN1 = A1N_11*zT1(-1) + A1N_12*zT2(-1) + A1N_13*zN1(-1) + A1N_14*zN2(-1) + eN1 ;
zN2 = A2N_11*zT1(-1) + A2N_12*zT2(-1) + A2N_13*zN1(-1) + A2N_14*zN2(-1) + eN2 ;


where 1 and 2 are countries and T and N are sectors. I estimate the persistence parameters and the variance-covariance matrix outside the model and then I calibrate the values when running the model in Dynare (stoch_simul). To do the estimations, I extract Solow residuals as: ln(Z_ij) = ln(Y_ij) - (1-alpha)*ln(N_ij) for each country i = {1,2} ans sector j = {T, N}, where Y is output and N is hours. Here I emphasise that I perform the estimations in logs!

I want to have a log-linearised model, and I let Dynare do it. Thus, I insert the equations into my model as follows:

Code: Select all
model;
zT1 = A1T_11*zT1(-1) + A1T_12*zT2(-1) + A1T_13*zN1(-1) + A1T_14*zN2(-1) + eT1 ;
zT2 = A2T_11*zT1(-1) + A2T_12*zT2(-1) + A2T_13*zN1(-1) + A2T_14*zN2(-1) + eT2 ;
zN1 = A1N_11*zT1(-1) + A1N_12*zT2(-1) + A1N_13*zN1(-1) + A1N_14*zN2(-1) + eN1 ;
zN2 = A2N_11*zT1(-1) + A2N_12*zT2(-1) + A2N_13*zN1(-1) + A2N_14*zN2(-1) + eN2 ;

.....

% Output
exp(yT_I1) = exp(zT1)*exp(ST1)^alphaT_1*exp(nT1)^(1-alphaT_1) ;
exp(yT_I2) = exp(zT2)*exp(ST2)^alphaT_2*exp(nT2)^(1-alphaT_2) ;
exp(yN1)   = exp(zN1)*exp(SN1)^alphaN_1*exp(nN1)^(1-alphaN_1) ;
exp(yN2)   = exp(zN2)*exp(SN2)^alphaN_2*exp(nN2)^(1-alphaN_2) ;

....

end;


Is that the correct way?? From reading J. Pfeiffer's guide on observation equations it seems to be ok. But is it also ok that the Solow residuals were defined/estimated in logs? Again here I want to emphasise that I do not have exp(Z.,.) but " just" Z.,. in levels in defining the exogenous process in the Dynare code. And what does that mean on how my equations appear "on paper", i.e. output is
    Y = exp(Z)*K^alpha * N^(1-alpha)
or
    Y = Z*K^alpha * N^(1-alpha)
(and what's the difference...?)

Thanks in advance and sorry if some questions seem primitive.

Best,
Kyriacos

Re: Properly inserting the exogenous process in the model

PostPosted: Wed Aug 31, 2016 6:51 am
by jpfeifer
When you mean you want Dynare to log-linearize your model, do you want to use an exp()-substitution or use Dynare's
Code: Select all
loglinear
option? I presume the it is the former.

From what I can see, everything is correct. By specifying
Code: Select all
exp(yT_I1) = exp(zT1)*exp(ST1)^alphaT_1*exp(nT1)^(1-alphaT_1) ;

you effectively define all variables of the logarithms corresponding to the same equation in levels
Code: Select all
YT_I1 = ZT1*ST1^alphaT_1*NT1^(1-alphaT_1) ;

In the first equation, zT1 is therefore the logarithm of the TFP level, whose law of motion is given by
Code: Select all
zT1 = A1T_11*zT1(-1) + A1T_12*zT2(-1) + A1T_13*zN1(-1) + A1T_14*zN2(-1) + eT1 ;

Both this LOM and your estimation were done in logs. Therfore, you should be fine.

Re: Properly inserting the exogenous process in the model

PostPosted: Wed Aug 31, 2016 8:30 am
by kyri82
Thanks for your reply. No, I do not use the log-linear option. I exp(.). At the end, the stoch_simul command is:

Code: Select all
 stoch_simul(order=1, hp_filter=100, nograph, ar=0, irf=10) 


I guess it is still fine...? Btw, what is the difference between the exp(.) and the loglinear option? And when I use exp(.), the reported results (correlations, variances, ... ) concern the variables in logs, in deviation from the steady-state? As in log(y) - log(y_bar)?

Thanks again!

Kyriacos

Re: Properly inserting the exogenous process in the model

PostPosted: Wed Aug 31, 2016 11:36 am
by jpfeifer
With
Code: Select all
loglinear

Dynare would automatically conduct the Jacobian transformation, i.e. you would not need to do the exp()-substitution.

The moments displayed by Dynare are always for the level of the variables you define. In
Code: Select all
exp(yT_I1) = exp(zT1)*exp(ST1)^alphaT_1*exp(nT1)^(1-alphaT_1) ;

it will for example refer to the level of yT_I1. But as this variable is already the log of output, it is exactly what you want: the moment of log output.