0/0 eigenvalue problem
Posted: Fri Mar 02, 2012 1:41 pm
I'm using dynare 4.2.4 and get similar problems in the latest release of dynare++.
Bascially, I wanted to check if moving from a levels to a log-approximation would reduce the Euler equation residuals I'm getting. Since all my variables were positive I changed all occurrences of x (where x stands for an arbitrary variable name) to exp(x) and modified the SS block accordingly. That procedure leads the model to stop working (the modified SS works nicely). In particular Dynare++ reports:
which used to be the error in previous versions of dynare, but as of 4.2.4 I'm getting the following:
Of course, I found the above surprising, as (to the best of my knowledge) the variables in which a model is written should have no impact on its local stability. To try and track the source of this error, I therefore started logging variables one by one and inspecting the model eigenvalues. Out of the 22 eigenvalues in my model 20 are unaffected by the transformations (as should be the case). However, two eigenvalues are not constant, and their values fluctuate somewhat. More specifically, for the original model I had:
Then after logging one variable that changed to:
and a few variables down the road the whole thing suddenly stops working (and I get the errors mentioned above)... So my take on this is that dynare is picking up / carrying arround some numerical noise (i.e. these eigenvalues should for all practical purposes equal zero) which leads to very imprecisely computed eigenvalues (and ultimately either to errors in their computed values (which are reported as BK condition violations), or the 0/0 message and in effect a refusal to compute those).
So my question is whether the story sounds plausible and whether anybody can think of a way around the problem (somehow forcing dynare to truncate values after 12 decimal places, perhaps???).
Thanks in advance for your help, happy to post the codes if anyone thinks they may be helpful.
Pawel
Bascially, I wanted to check if moving from a levels to a log-approximation would reduce the Euler equation residuals I'm getting. Since all my variables were positive I changed all occurrences of x (where x stands for an arbitrary variable name) to exp(x) and modified the SS block accordingly. That procedure leads the model to stop working (the modified SS works nicely). In particular Dynare++ reports:
- Code: Select all
Blanchard-Kahn condition not satisfied, model not stable
which used to be the error in previous versions of dynare, but as of 4.2.4 I'm getting the following:
- Code: Select all
One of the eigenvalues is close to 0/0 (the absolute value of numerator and denominator is smaller than 1e-6)
Of course, I found the above surprising, as (to the best of my knowledge) the variables in which a model is written should have no impact on its local stability. To try and track the source of this error, I therefore started logging variables one by one and inspecting the model eigenvalues. Out of the 22 eigenvalues in my model 20 are unaffected by the transformations (as should be the case). However, two eigenvalues are not constant, and their values fluctuate somewhat. More specifically, for the original model I had:
- EIGENVALUES:
Modulus Real Imaginary
1.313e-016 -1.313e-016 0
6.276e-015 6.276e-015 0
Then after logging one variable that changed to:
- EIGENVALUES:
Modulus Real Imaginary
2.053e-017 -2.053e-017 0
2.282e-015 -2.282e-015 0
and a few variables down the road the whole thing suddenly stops working (and I get the errors mentioned above)... So my take on this is that dynare is picking up / carrying arround some numerical noise (i.e. these eigenvalues should for all practical purposes equal zero) which leads to very imprecisely computed eigenvalues (and ultimately either to errors in their computed values (which are reported as BK condition violations), or the 0/0 message and in effect a refusal to compute those).
So my question is whether the story sounds plausible and whether anybody can think of a way around the problem (somehow forcing dynare to truncate values after 12 decimal places, perhaps???).
Thanks in advance for your help, happy to post the codes if anyone thinks they may be helpful.
Pawel