Problems with identification for a SMOE (As in Gali ch. 7)

Hi,

I am having trouble identifying any parameters in my model setup. I have generated data from the calibrated model, estimated it on the generated data but I can’t seem to get a handle on the identification. I keep getting versions of this error message:

==== Identification analysis ====

Testing prior mean
The number of moments with non-zero derivative is smaller than the number of parameters
up to 10 lags: check your model
Either further increase ar or reduce the list of estimated parameters


I have tried reducing the number of paramets to be estimated (and the number of observables), that does not fix my problem. I think I am making some simple but fundamental mistake. However, I am having trouble figuring out what that mistake is. Any guidance on how I can proceed and identify some/any parameters in this model would be most appreciated.

Thank you in advance,

/J
steady_state_rho.m (65 Bytes)
Smoe_Base_Generator.mod (3.94 KB)
test_identification_smoe.mod (3.63 KB)

The fundamental issue is the presence of a unit root in your model that is not accounted for. Run model_diagnostics to see this. You have to set

But even then there are some issues. We are trying to investigate why this happens.

Thank you very much. I will change the settings and run diagnostics.

Since this is the baseline setup for a SMOE from Gali Monacelli, is it documented where the UR comes from? Or rather, how do I setup the parameter distributions to avoid a UR?

Again, your input is much appreciated.

/J

With interest rate rules, the price levels become non-stationary (they are not mean-reverting) as there is no nominal anchor.

I suspected the TR was to blame.

Thank you for clearing that up for me.

/J

Please try to observe the first difference or the growth rate of observed non-stationary variables (only yhat? pih and pif are inflation rates already ?)

Yes, pih and pif is home inflation and foreign inflation respectively.

I get the exakt same error message when I run this code instead. This is for one estimated parameter.


The rank condition is verified.

==== Identification analysis ====

Testing prior mean
.
.
Try increasing ar = 10

The number of moments with non-zero derivative is smaller than the number of parameters
up to 10 lags: check your model

Either further increase ar or reduce the list of estimated parameters
Error using identification_analysis (line 102)
IDETooManyParams

The same model but with a different setup.

I can’t seem to get this to work for me.

/J
gm_id.mod (4.55 KB)

This issue percists even after I remove the p_h and cpi_level variables & equations, which are non-stationary. Then the only variable that is non-stationary is e, but it enters as a first difference.

/J

We are still working on this. But if e only enters as a first difference, drop e and define the first difference as a new variable.

Thank you, I really appreciate your input.

Defining a new variable de=e -e(-1) and dropping e as a variable in the estimation step works, but I don’t understand why that should be an issue for identification. I guess this is what you are working on.

Best regards

/J

Exactly. Your definition of e implies that there is a unit root. By only having the first difference of e, the unit root is gone from the model. Dynare should be able to deal with this case, but it is tricky to implement.

Hi,

It seems to me I have the same problem. I suspect the presence of a unit root associated with my exogenous variables.
My model, however, is quite complex.
I would deeply appreciated if someone could help to find where/what the real problem is.

==== Identification analysis ====

Testing posterior mode
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 2
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 3
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 4
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 5
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 6
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 7
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 8
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 9
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 10
The number of moments with non-zero derivative is smaller than the number of parameters
up to 10 lags: check your model
Either further increase ar or reduce the list of estimated parameters
nonlinearomega-2 2 USA 2 2.zip (604 KB)

It seems to me you are simply neglecting the parameter dependence. Your calibration only once updates the other parameters depending on the estimated one. That’s why you should use model-local variables (the ones with the pound operator) or a steady state file. See Remark 4 (Parameter dependence and the use of model-local variables) in Pfeifer(2013): “A Guide to Specifying Observation Equations for the Estimation of DSGE Models” sites.google.com/site/pfeiferec … ations.pdf.

For example, you estimate c1telast, but you set outside of the model or steady state

c1rhoc = 1/(c1telast -1); c1rhoo = 1/(c1oelast -1);
Thus, c1rhoc and c1rhoo will not be updated.

Thank you for the previous observation.

Unfortunately, despite the use of model-local variables for all my dependent parameters I still get the same message.

==== Identification analysis ====

Testing posterior mode
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 2
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 3
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 4
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 5
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 6
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 7
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 8
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 9
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 10
The number of moments with non-zero derivative is smaller than the number of parameters
up to 10 lags: check your model
Either further increase ar or reduce the list of estimated parameters

Could it be the presence of a unit root as suggested before?
nonlinearomega-2 2 USA copy.zip (1.15 MB)

No. It’s not about a unit root. But it seems your steady state file is overwriting all parameter changes the MCMC does. Your steady state must be conditional on the estimated parameters. You cannot estimate a parameter, but then set the parameter to a different value in the steady state file.

I see what you meant. I already add the following code to my steadystate file:

if isfield(M_,‘param_nbr’) == 1
NumberOfParameters = M_.param_nbr;
for i = 1:NumberOfParameters
paramname = deblank(M_.param_names(i,:));
eval( paramname ’ = M_.params(’ int2str(i) ‘);’]);
end
check = 0;
end

My programming skills, however, are basic and I obtained the same result as before.
Some insights about the correct code shall be really appreciated.

==== Identification analysis ====

Testing posterior mode
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 2
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 3
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 4
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 5
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 6
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 7
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 8
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 9
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 10
The number of moments with non-zero derivative is smaller than the number of parameters
up to 10 lags: check your model
Either further increase ar or reduce the list of estimated parameters
Error using identification_analysis (line 102)
IDETooManyParams

Error in dynare_identification (line 280)
[idehess_point, idemoments_point, idemodel_point, idelre_point, derivatives_info_point, info]
= …

Error in nonlinearomega (line 1952)
dynare_identification(options_ident);

Error in dynare (line 180)
evalin(‘base’,fname) ;
nonlinearomega-2 2 USA copy.zip (644 KB)

Looking for answers I obtained the same error when running dynare 4.4.3 with my mode file ( nonlinearomeg_22 USA.zip ) and dynare 4.3.3 with the .mod and steady state files in annexes ( see uribe.zip folder, source Bayesian Estimation and Steady State Updating).

Must I conclude that both steady state files are overwriting all parameter changes the MCMC does or it is indeed another problem?

ERROR:
==== Identification analysis ====

Testing posterior mode
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 2
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 3
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 4
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 5
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 6
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 7
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 8
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 9
The number of moments with non-zero derivative is smaller than the number of parameters
Try increasing ar = 10
The number of moments with non-zero derivative is smaller than the number of parameters
up to 10 lags: check your model
Either further increase ar or reduce the list of estimated parameters
Error using identification_analysis (line 102)
IDETooManyParams

Error in dynare_identification (line 280)
[idehess_point, idemoments_point, idemodel_point, idelre_point, derivatives_info_point, info] = …

Error in nonlinearomega (line 1887)
dynare_identification(options_ident);

Error in dynare (line 180)
evalin(‘base’,fname) ;
nonlinearomega-2 2 USA.zip (666 KB)
uribe.zip (34.1 KB)

Please follow the steady state file example in the NK_baselined.mod of the Dynare examples folder. When doing so, replace the model-local variabes (the one with the # operator) by corresponding assignments within the steady state file. After doing this, also set

in the call to estimation

Thank you. I already followed the previous advice and changed the models in annexe accordingly to the NK_baselined.mod. I got the expected result with uribe model but not with the nonlinearomega. What could be wrong? I shall deeply appreciated some help in order to figure it out.
nonlinear_USA_11Jun.zip (88 KB)
uribe.zip (34 KB)