Collinearity problem nkopen economy dsge model

Prof. Pfeiffer,

I’m working on a basic Neokeynesian model of an open economy in the similar way that Gali(2008, ch 7) with some little differences. i wrote the model in the nonlinear form but i have a collinearity problem with two variables: “im” (imports) and “nx” (net exports). I have tried to fix the problem (adding and removing variables or equations) but i could not fix it.

I appreciate any suggestion to fix this problem (maybe i am writing some equations wrong). I append the “.mod” file, Thanks a lot!.

Output: (How do you read this output among the columns related?)

model_diagnostics(M_, options_, oo_)
model_diagnostic: the Jacobian of the static model is singular
there is 1 colinear relationships between the variables and the equations
Colinear variables:
im
nx
Colinear equations
Columns 1 through 15

 1     5     6     7    11    12    14    15    16    17    18    19    20    21    23

Columns 16 through 19

24    26    27    28

NKOE_model.mod (5.87 KB)

1 Like

You have

nx = ex - im;
But this is the only equation where nx and im appear. There is no way of disentangling the two

Thanks Prof. Pfeifer, I have solved the problem but I have other question over a dsgevar model that I was working some weeks ago and it was running ok but now there is an error with the dimension of the autocovariances matrix (could be a nonstationarity problem? however I did a stoch_simul and the problem persists). I Attached the .mod and .m file (It is a open economy model in log-linear form). Any advice will be welcome! Thanks a lot.

I am working with dynare 4.4.3 over matlab 2012b x32bits and i get the following error

Error in th_autocovariances (line 101)
ghu1(i0,:slight_smile: = ghu(ikx,:);

Error in dsge_simulated_theoretical_covariance (line 103)
tmp = th_autocovariances(dr,ivar,M_,options_,nodecomposition);

Error in posterior_analysis>job (line 54)
[nvar,vartan,NumberOfFiles] = …

Error in posterior_analysis (line 32)
oo_ = job(type,SampleSize,arg1,arg2,arg3,options_,M_,oo_);

Error in compute_moments_varendo (line 68)
oo_ =
posterior_analysis(‘variance’,var_list_(i,:),var_list_(j,:),],options_,M_,oo_);

Error in dynare_estimation_1 (line 818)
oo_ = compute_moments_varendo(‘posterior’,options_,M_,oo_,var_list_);

Error in dynare_estimation (line 89)
dynare_estimation_1(var_list,dname);

Error in dsgevar_ex (line 446)
dynare_estimation(var_list_);

Error in dynare (line 180)
evalin(‘base’,fname) ;

[quote=“jpfeifer”]You have

nx = ex - im;
But this is the only equation where nx and im appear. There is no way of disentangling the two[/quote]

DATABmr1.m (47 KB)
modelo.mod (5.32 KB)

One problem definitely is that equation 3

b = (1+ii(-1)-inflation)*b(-1)+y(-1)-c(-1)-delta*s(-1);
is not linear, although you use

You might want to use the unstable version for this.

Prof. Pfeifer, thanks for your comments.

I ran the code on unstable version 2019-09-29 and I got the error that you point but when i ran the code on dynare 4.4.2 version the same code works fine.

I could trust in the outputs of this version?. Why does dynare 4.4.3 not work?. I’m confused.

When I put this equation, I assumed that dynare would do a numerical linear aproximation of this kind of cross relations.

I appreciate your suggestions Professor, Thanks a lot!

addpath c:\dynare\4.4.2\matlab
dynare model.mod

Configuring Dynare …
[mex] Generalized QZ.
[mex] Sylvester equation solution.
[mex] Kronecker products.
[mex] Sparse kronecker products.
[mex] Local state space iteration (second order).
[mex] Bytecode evaluation.
[mex] k-order perturbation solver.
[mex] k-order solution simulation.
[mex] Quasi Monte-Carlo sequence (Sobol).
[mex] Markov Switching SBVAR.

Starting Dynare (version 4.4.2).
Starting preprocessing of the model file …
Found 27 equation(s).
Evaluating expressions…done
Computing static model derivatives:

  • order 1
    Computing dynamic model derivatives:
  • order 1
    Processing outputs …done
    Preprocessing completed.
    Starting MATLAB/Octave computing.

EIGENVALUES:
Modulus Real Imaginary

    5.63e-17        -5.63e-17                0
   1.479e-16        1.479e-16                0
      0.1309           0.1309                0
        0.45             0.45                0
         0.5              0.5                0
      0.5577           0.5577                0
       0.635            0.635                0
        0.66             0.66                0
         0.8              0.8                0
         0.8              0.8                0
        0.86             0.86                0
      0.8729           0.8729                0
       0.925            0.925                0
       1.048            1.048                0
       1.199             1.18           0.2123
       1.199             1.18          -0.2123
         Inf              Inf                0
         Inf              Inf                0

There are 5 eigenvalue(s) larger than 1 in modulus
for 5 forward-looking variable(s)

The rank condition is verified.

STEADY-STATE RESULTS:

c 0
c_h 0
im 0
s 0
y 0
y_star 0
ii 0
i_star 0
inflation 0
inflation_star 0
n 0
w 0
b 0
a 0
v 0
nx 0
inflation_h 0
q 0
ex 0
u 0
z 0
c_obs 0
ex_obs 0
y_obs 0
inflation_obs 0
ii_obs 0
i_star_obs 0

MODEL SUMMARY

Number of variables: 27
Number of stochastic shocks: 6
Number of state variables: 13
Number of jumpers: 5
Number of static variables: 12

MATRIX OF COVARIANCE OF EXOGENOUS SHOCKS

Variables Taylor_shock output_shock philip_shock world_output_shock inflation_star_shock is_shock
Taylor_shock 0.010000 0.000000 0.000000 0.000000 0.000000 0.000000
output_shock 0.000000 0.010000 0.000000 0.000000 0.000000 0.000000
philip_shock 0.000000 0.000000 0.010000 0.000000 0.000000 0.000000
world_output_shock 0.000000 0.000000 0.000000 0.010000 0.000000 0.000000
inflation_star_shock 0.000000 0.000000 0.000000 0.000000 0.010000 0.000000
is_shock 0.000000 0.000000 0.000000 0.000000 0.000000 0.010000

POLICY AND TRANSITION FUNCTIONS
c ex y ii inflation i_star
y(-1) 0.063245 -0.023179 0.027504 -0.027076 -0.020343 0
y_star(-1) -0.184587 -0.298652 -0.100456 0.229756 0.161542 0.225000
ii(-1) -0.181850 -0.093197 -0.229605 0.202637 -0.132442 0
i_star(-1) -0.180581 0.147995 -0.001489 0.257034 0.171480 0.500000
b(-1) 0.063245 -0.023179 0.027504 -0.027076 -0.020343 0
a(-1) 0.212607 0.085752 0.246585 -0.025622 -0.037630 0
v(-1) -0.480249 -0.228568 -0.589833 -0.074061 -0.440221 0
ex(-1) 0.020315 0.844352 0.161443 -0.041702 -0.041255 0
u(-1) -2.710324 -1.170148 -3.215960 0.580284 0.654853 0
z(-1) 1.285288 -0.207312 0.807303 0.018462 -0.054968 0
c(-1) 0.053927 0.019068 0.060020 0.036623 0.019414 0
s(-1) 0.125646 0.076623 0.170158 -0.149555 -0.113883 0
inflation_star(-1) -0.869578 0.453172 -0.251527 0.787104 0.545697 0.952500
Taylor_shock -0.727650 -0.346316 -0.893687 -0.112214 -0.667002 0
output_shock 0.247218 0.099712 0.286727 -0.029794 -0.043756 0
philip_shock -3.387905 -1.462685 -4.019950 0.725356 0.818566 0
world_output_shock -0.365049 1.212666 0.135526 0.417899 0.267306 0.500000
inflation_star_shock -1.369414 0.713656 -0.396106 1.239534 0.859365 1.500000
is_shock 1.606610 -0.259140 1.009129 0.023077 -0.068709 0

MOMENTS OF SIMULATED VARIABLES

VARIABLE MEAN STD. DEV. VARIANCE SKEWNESS KURTOSIS
c -0.270005 0.926508 0.858418 0.205329 0.098846
ex -0.289002 1.654892 2.738669 0.032568 -0.705557
y -0.293114 1.153794 1.331241 0.242255 0.047557
ii 0.116417 0.442828 0.196097 -0.119104 -0.250051
inflation 0.062351 0.283967 0.080637 -0.064207 -0.284675
i_star 0.029219 0.311366 0.096949 -0.044594 0.110429

CORRELATION OF SIMULATED VARIABLES

VARIABLE c ex y ii inflation i_star
c 1.0000 0.5600 0.9360 -0.8801 -0.8544 -0.1395
ex 0.5600 1.0000 0.7883 -0.6061 -0.5642 0.4023
y 0.9360 0.7883 1.0000 -0.8549 -0.8368 0.1297
ii -0.8801 -0.6061 -0.8549 1.0000 0.9148 0.2842
inflation -0.8544 -0.5642 -0.8368 0.9148 1.0000 0.1537
i_star -0.1395 0.4023 0.1297 0.2842 0.1537 1.0000

AUTOCORRELATION OF SIMULATED VARIABLES

VARIABLE 1 2 3 4 5
c 0.8758 0.6989 0.5216 0.3803 0.2775
ex 0.9786 0.9341 0.8727 0.8027 0.7281
y 0.9140 0.7772 0.6363 0.5164 0.4228
ii 0.8756 0.6825 0.5021 0.3479 0.2310
inflation 0.7773 0.5776 0.4249 0.2736 0.1663
i_star 0.8268 0.5779 0.3789 0.2523 0.1724
Total computing time : 0h00m06s

[quote=“jpfeifer”]One problem definitely is that equation 3

b = (1+ii(-1)-inflation)*b(-1)+y(-1)-c(-1)-delta*s(-1);
is not linear, although you use

You might want to use the unstable version for this.[/quote]

As mentioned at dynare.org/DynareWiki/KnownBugs, there was a bug in 4.4.3 that

Thus, you cannot trust version other than the unstable version with your mod-file. The

option of the model block does not indicate to Dynare that linearization is to be done, but that you (the user) provides an already linear model, which is clearly not the case. Use

for that. The issue when doing that is to correctly link the relation ship between the variables. You cannot have i represent the level of interest rates in one equation and the percentage deviation from interest its steady state in another. See [Linear form)

Prof. Pfeifer, Thanks for your advices. I ran the code on unstable version (2016-09-29) and works ok.

Now, I would like to ask you about the shock_decomposition command 'cause i want to graph the variance decomposition of all my observable variables (c_obs, y_obs, ex_obs, inflation_obs, ii_obs, i_star_obs) but i get the following error; nevertheless dynare exhibits a global variance decomposition at the final of the output.

Error using makedataset (line 213)
makedataset: first_obs (1Y) - 1 cannot be less than the first date in the dataset (1Y)!
Reduce the number of lags in the VAR model or increase the value of first_obs
to at least first_obs=2.

Error in dynare_estimation_init (line 542)
[dataset_, dataset_info, newdatainterfaceflag] = makedataset(options_,
options_.dsge_var*options_.dsge_varlag, gsa_flag);

Error in evaluate_smoother (line 59)
[dataset_,dataset_info,xparam1, hh, M_, options_, oo_, estim_params_,bayestopt_] =
dynare_estimation_init(var_list, M_.fname, ], M_, options_, oo_, estim_params_,
bayestopt_);

Error in shock_decomposition (line 67)
[oo,Smoothed_Variables_deviation_from_mean] = evaluate_smoother(parameter_set,varlist);

I am running a DSGEVAR(1) and I put “first_obs=2” in the estimation command. After run estimation and dynare calls shock_decomposition, I think the error could be related with the argument “options_.first_obs” that is equal to 1 but different from the specified in the estimation command (first_obs=2). How could I fix this problem?

I Append the code and database. Thanks Prof.! I appreciate any suggestion!.

Posterior mean variance decomposition (in percent)
Taylor_shock output_shock philip_shock world_output_shock inflation_star_shock is_shock
c_obs 5.39 0.44 17.18 13.90 21.92 41.17
ex_obs 3.83 0.35 11.60 47.07 34.88 2.27
y_obs 11.88 24.93 36.35 4.75 11.51 10.58
ii_obs 28.60 0.53 26.48 13.36 28.70 2.34
inflation_obs 5.90 0.28 73.41 5.55 14.25 0.60
i_star_obs 0.00 0.00 0.00 36.23 63.77 0.00

Done!
Estimation::mcmc: Forecasted variables (mean)
Estimation::mcmc: Forecasted variables (mean), done!
Estimation::mcmc: Forecasted variables (point)
Estimation::mcmc: Forecasted variables (point), done!

[quote=“jpfeifer”]As mentioned at dynare.org/DynareWiki/KnownBugs, there was a bug in 4.4.3 that

Thus, you cannot trust version other than the unstable version with your mod-file. The

(linear)

option of the model block does not indicate to Dynare that linearization is to be done, but that you (the user) provides an already linear model, which is clearly not the case. Use

order=1

for that. The issue when doing that is to correctly link the relation ship between the variables. You cannot have i represent the level of interest rates in one equation and the percentage deviation from interest its steady state in another. See [Linear form)[/quote]

DATABfl.m (47 KB)
modelo.mod (5.22 KB)

That is kind of a bug we will fix. For now, simply put

options_.first_obs=2; options_.nobs=499;
before shock_decomposition.