Commit Graph

9063 Commits (3a115d4fcc1e88a37b22c9ae5ea257004c68dfe4)

Author SHA1 Message Date
Stéphane Adjemian (Ryûk) c02e550582
Update dseries submodule.
Pass more than one variable name to remove and remove_ methods.
2023-07-19 18:23:08 +02:00
Johannes Pfeifer d2fecdc5d3 load_*_mh_history_file: remove assignin statements 2023-07-18 10:01:47 -04:00
Johannes Pfeifer 8532d6abd7 Cosmetic changes to various estimation routines 2023-07-13 14:40:01 -04:00
Johannes Pfeifer e6c43c2a29 load_last_mh_history_file: make sure number of blocks and parameters matches loaded files 2023-07-13 14:39:50 -04:00
Stéphane Adjemian (Ryûk) b5a74b96e5
Merge particles submodule into master. 2023-07-12 14:01:25 +02:00
Stéphane Adjemian (Ryûk) 21dcc911bc
Move files and delete unused folders and files. 2023-07-12 09:29:41 +02:00
Stéphane Adjemian (Argos) 6265a6d2b1
Update dseries submodule (add two arguments to dplot command). 2023-07-07 11:40:41 +02:00
Stéphane Adjemian (Argos) bd0493d135
Add routine for dynamic contributions in semi-structural models. 2023-07-06 22:26:09 +02:00
Stéphane Adjemian (Argos) 5e869669a0
Set verbose to false by default. 2023-07-06 22:26:07 +02:00
Sébastien Villemot ae67b4a145 Merge branch 'master' into 'master'
Variable number of parameter MCMC convergence plots

See merge request Dynare/dynare!2127
2023-07-05 10:07:39 +00:00
William Gatt eb5eefdcf0 Variable number of parameter MCMC convergence plots
This change allows the user to change the number of parameters for which the MCMC convergence diagnostics are shown. The user needs to set a value for options_.convergence.brooksgelman.plotrows for an arbitrary number of parameters to be shown, but defaulting to 3 if no input is supplied.
2023-07-05 10:07:38 +00:00
Normann Rion 23dbb2b4b9 Fixes local_state_space_iteration_3 and adds a test comparing the various pruning routines used in dynare up to order 3.
The considered pruning routines can be found in
   - `simult_.m`
   - `local_state_space_iteration_2` MEX
   - `local_state_space_iteration_3` MEX
   - `pruned_state_space_system.m`
2023-07-04 19:15:43 +02:00
Normann Rion d2c324eeee Amends the various filters to fit the fixed version of local_state_space_iteration_3
See MR !2144 for more details
2023-07-01 16:43:48 +02:00
Johannes Pfeifer d386bb9f76 Cholesky decomposition: only add to diagonal if really necessary
Closes #1891
2023-06-23 11:26:14 -04:00
Johannes Pfeifer ed7fe89bfa Remove unused exo_names_orig_ord 2023-06-23 08:41:12 -04:00
Willi Mutschler e6920a60a1
Default option: don't save files for csminwel and cmaes
Usually these files are not needed (if then user can turn this option on manually) and only clutter the folder.
Moreover, the testsuite crashes on rare occasions if several mod files are run in the same folder and the optimizers write the files simultaneously.
2023-06-23 12:11:23 +02:00
Johannes Pfeifer 050679cd56
Rename resid.m
Closes #1888
2023-06-23 12:10:18 +02:00
Johannes Pfeifer 782368eb9b dseries: document saving of atr log
Related to dseries@f2bdd617
2023-06-22 13:56:19 -04:00
Sébastien Villemot d5a3a8e16a
Various improvements to perfect foresight homotopy
– new option “endval_steady” to pf_setup command to recompute terminal
  steady state in the homotopy loop

– new options “homotopy_linearization_fallback” and
  “homotopy_marginal_linearization_fallback” to pf_solver and pfwee_solver
  commands, to get an approximate solution when homotopy fails to go to 100%

– new options “homotopy_initial_step_size”, “homotopy_min_step_size”,
  “homotopy_step_size_increase_success_count” and “homotopy_max_completion_share”
  to pf_solver and pfwee_solver commands to fine tune the homotopy behaviour

– removed option “homotopy_alt_starting_point” to pf_solver command, not really
  useful

– new options “steady_solve_algo”, “steady_tolf”, “steady_tolx”,
  “steady_maxit”, “steady_markowitz” to pf_solver and pfwee_solver commands, to
  control the computation of the terminal steady state (and remove the
  equivalent options which previously had different names in pfwee_solver command)
2023-06-21 15:58:23 +02:00
Sébastien Villemot 3a789ca780
🐛 dynare_solve would incorrectly accept some guess values leading to NaN residuals
If the guess value passed to dynare_solve was such that the residuals were all
below tolerance, except some that were NaN, then this guess value would be
incorrectly accepted as a solution.
2023-06-20 15:35:36 +02:00
Sébastien Villemot 8fa37a0439
perfect_foresight_with_expectation_errors_solver: remove obsolete code
This should have been removed in c1b78e26ac
2023-06-16 16:45:04 +02:00
Sébastien Villemot d4b5e156d1
perfect_foresight_with_expectation_errors_solver: check convergence of informational iterations
Error out if an iteration failed.

Also display an informative message about those iterations.
2023-06-16 16:45:04 +02:00
Sébastien Villemot 396267260a
Block solvers: improvement to error messages
– Do not mention internal options_ structure
– Remain agnostic about whether we are in a steady state or a deterministic simulation

[skip ci]
2023-06-15 15:49:50 +02:00
Sébastien Villemot c1b78e26ac
perfect_foresight_with_expectation_errors_{setup,solver}: streamline handling of guess values
– Remove the terminal_steady_state_as_guess_value option to pfwee_solver
– pfwee_setup now sets the same guess values as pf_setup (i.e. terminal steady
  state at all periods)
– With constant_simulation_length option, pfwee_solver uses terminal steady
  state as guess values for periods that are added to the simulation
2023-06-15 15:37:48 +02:00
Sébastien Villemot 30c17ad346
🐛 Steady state: wrong value of maxit was used for some block/bytecode cases
It was using the value of maxit for perfect foresight simulations.
2023-06-15 15:37:48 +02:00
Sébastien Villemot c7b4ea40f8
🐛 Steady state computation: fix crash if bytecode (without block) does not find a solution
ys was uninitialized and it would crash further down in the function.
2023-06-15 15:37:48 +02:00
Stéphane Adjemian (Ryûk) a541e1e6d0
Update dseries submodule. 2023-06-14 10:47:57 +02:00
Sébastien Villemot dcf56b89cd
Bytecode: rework message verbosity
Now uses options_.verbosity to decide what to print:
– if options_.verbosity == 0, prints nothing
– if options_.verbosity >= 1, prints iteration counter and duration, and fatal errors
– if options_.verbosity >= 2, additionally print floating point exceptions and
  details about algorithmic decisions
2023-06-13 16:59:07 +02:00
Sébastien Villemot d81e3992c3
perfect_foresight_solver_core: fix crash when bytecode does not converge
The bug was introduced in commit 7722e8e36b
2023-06-12 19:19:21 +02:00
Sébastien Villemot 4431a89e87
perfect_foresight_solver_core.m: when relevant, use bytecode MEX to recompute ∞-norm of residuals
Since commit 7722e8e36b it would always use the
perfect_foresight_problem MEX, but the latter is less efficient than bytecode.
2023-06-12 19:18:45 +02:00
Sébastien Villemot 73ae1ac8ce
evaluate_steady_state: minor simplification 2023-06-12 19:18:44 +02:00
Sébastien Villemot 8cf8731c65
det_cond_forecast.m: use better syntax for ignored outputs 2023-06-12 19:18:44 +02:00
Sébastien Villemot 37870e4a40
evaluate_steady_state: accept exogenous steady state as argument instead of whole oo_ structure
This is a move towards a more functional programming style.
2023-06-07 17:58:19 +02:00
Sébastien Villemot 7722e8e36b
Perfect foresight: inner functions no longer return a modified oo_
They now only return what’s really their output (simulated paths, maximum
residual error…). This is a move towards a more functional programming style.
2023-06-06 18:13:10 +02:00
Sébastien Villemot 6ed90b3dbf
🐛 Homotopy for extended path (order 0) was utterly broken
The convergence test was wrong.
2023-06-06 17:54:04 +02:00
Sébastien Villemot fe142b663e
Perfect foresight: allow homotopy for purely backward/forward/static models
This was previously disabled, but the code seems to work.
2023-06-06 17:26:07 +02:00
Sébastien Villemot 1cf83dc278
perfect_foresight_solver: always use perfect_foresight_problem MEX for computing residuals
The MEX no works on models without leads or lags.

This is essentially a revert of 74dc4f81f0.

Ref. #1850
2023-06-06 17:06:10 +02:00
Stéphane Adjemian (Argos) 8e42f6d137
Update dseries submodule (new method returning last observed period for each variable). 2023-06-05 11:21:53 +02:00
Stéphane Adjemian (Ryûk) b1933d58dd
Bug fix (undefined variable). 2023-06-04 08:07:28 +02:00
Johannes Pfeifer 37eb10971b dynare_estimation_init.m: make sure OccBin estimation can be run after previous shocks(surprise) block 2023-06-02 08:43:14 -04:00
Sébastien Villemot 37bc08eb5b Merge branch 'parallel' into 'master'
masterParallel.m: assign explicit empty window title to allow passing full path in quoted strings

Closes #1887

See merge request Dynare/dynare!2133
2023-06-01 08:26:52 +00:00
Sébastien Villemot 5a6d03a2e7
CI: adapt for new location of MATLAB binaries 2023-05-30 17:12:30 +02:00
Johannes Pfeifer ad2d986c5e masterParallel.m: assign explicit empty window title to allow passing full path in quoted strings
Closes https://git.dynare.org/Dynare/dynare/-/issues/1887
2023-05-24 06:45:24 -04:00
Stéphane Adjemian (Ryûk) 03db691ab3
Update dseries submodule (add --with-legend option to dplot command). 2023-05-19 18:48:44 +02:00
Johannes Pfeifer df018ab14d dynare_sensitivity.m: do not alter qz_criterium 2023-05-16 09:22:13 -04:00
Stéphane Adjemian (Guts) 43cb9b01c3
Update submodule dseries (fix #53). 2023-05-12 17:23:53 +02:00
Stéphane Adjemian (Ryûk) 15027db136
Add missing initialization. 2023-05-11 15:59:38 +02:00
Stéphane Adjemian (Ryûk) 1f60657d99
Update dseries submodule (add new plotting routine for dseries objects). 2023-05-11 14:51:20 +02:00
Stéphane Adjemian (Ryûk) 015513380f
Add new class for priors.
This commit only changes the routine used to draw random deviates from
the prior distribution, without relying on persistent variables (which allows
parallelisation).
2023-04-26 10:39:13 +02:00
Sébastien Villemot 8bb9a398aa
Octave compatibility: ignore new warning introduced for qz() in Octave 9
Should have been in commit 421eb1482c.
2023-04-26 10:30:04 +02:00
Willi Mutschler b8352b251d
macOS: provisions to detect Apple Silicon architecture (maca64 and mexmaca64)
Works with MATLAB R2022b beta (ARM)
2023-04-26 10:19:14 +02:00
Stéphane Adjemian (Ryûk) 084e64cdac Use new prior draw interface. 2023-04-26 10:06:30 +02:00
Sébastien Villemot 0c17d656e1
🐛 Steady state computation could fail with block+bytecode+mfs>0
The Jacobian used for solving a block was not square if there were recursive
variables.
2023-04-20 13:39:26 +02:00
Sébastien Villemot e413696277
Octave compatibility fix: the 3rd output argument to fminsearch was added in Octave 4.4 2023-04-17 18:10:35 +02:00
Sébastien Villemot 80a6967827
Remove unused options_.scalv 2023-04-14 16:38:14 +02:00
Sébastien Villemot 1faeaf892e
Remove unused options_.terminal_condition 2023-04-14 16:35:43 +02:00
Sébastien Villemot 0923187938
🐛 Perturbation solution: gracefully fail if order=2 is requested with bytecode 2023-04-13 17:35:20 +02:00
Sébastien Villemot 91fa8d079e
calibrateresiduals: use the sparse representation of the dynamic model 2023-04-13 17:24:47 +02:00
Sébastien Villemot 7e1c25d775
backward_model_inversion: use the sparse representation of the dynamic file 2023-04-13 15:51:09 +02:00
Sébastien Villemot ed75e4c176
dynamic_backward_model_for_inversion: turn into a local function of backward_model_inversion 2023-04-13 15:47:43 +02:00
Sébastien Villemot 66b648157f
Purely backward models simulation: use the sparse representation of the dynamic file 2023-04-13 15:47:43 +02:00
Sébastien Villemot 34e82f9697
sim1_purely_forward: use the sparse representation of the dynamic file 2023-04-13 15:47:43 +02:00
Sébastien Villemot 170a4dce0e
dynamic_forward_model_for_simulation: turn into a local function of sim1_purely_forward 2023-04-13 15:47:43 +02:00
Sébastien Villemot 5f42e84b0b
sim1_purely_static: use the sparse representation of the dynamic file 2023-04-13 15:47:43 +02:00
Sébastien Villemot 4a793f89ff
dynamic_static_model_for_simulation: turn into a local function of sim1_purely_static 2023-04-13 15:47:43 +02:00
Sébastien Villemot 942c6f9a20
🐛 static_model_inversion: fix handling of STEADY_STATE() operator
Of course, this operator does not make much sense in the context of a static
model, but it should still work.
2023-04-13 15:47:43 +02:00
Sébastien Villemot 9deb1e6049
static_model_inversion: use the sparse representation of the dynamic file 2023-04-13 15:47:41 +02:00
Sébastien Villemot bc68915dfa
static_model_for_inversion: turn into a local function of static_model_inversion 2023-04-13 11:55:27 +02:00
Stéphane Adjemian (Ryûk) 4f3a0df884
Do not overwrite solve_algo option. 2023-04-12 09:53:46 +02:00
Sébastien Villemot 421eb1482c
Octave compatibility: qz() will be MATLAB-compatible in version 9
[skip ci]
2023-04-07 10:26:54 +02:00
Stéphane Adjemian (Ryûk) 51ffe77fb7
Add error flag (new output) to simul_backward_model routine. 2023-04-05 11:09:59 +02:00
Sébastien Villemot c4bc6316d0
Make matlab/missing/mex/mjdgges/mjdgges.m Octave-compatible
[skip ci]
2023-04-04 18:40:37 +02:00
Sébastien Villemot cdb786017b
Preprocessor update
– ramsey_policy is now fully implemented at the preprocessor level
– 🐛 ramsey_policy: lift restriction that order must be ⩽ 2
– 🐛 Extend incompatibility with deterministic exogenous to ramsey_model command
2023-03-29 16:26:02 +02:00
Sébastien Villemot 534515dc66
dyn_ramsey_static.m: simplifications + improve comments 2023-03-29 14:33:01 +02:00
Sébastien Villemot ffe6eb4d40
Preprocessor: overhaul of M_ fields counting Ramsey/discretionary orig endos/eqs
– new fields: M_.ramsey_orig_{eq,endo}_nbr
– drop M_.ramsey_eq_nbr and M_.orig_eq_nbr
– new field: M_.discretionary_orig_eq_nbr
2023-03-29 14:33:01 +02:00
Sébastien Villemot 674ebce84b
🐛 Ramsey steady state computation could fail if expectation or diff operator is present
If auxiliary variables were created *before* the Lagrange multipliers (e.g. aux
vars related to the expectation or diff operators), then the vector of
residuals of the reduced Ramsey steady state problem (with respect to original
variables, as computed by the dyn_ramsey_static_1 subfunction) was incorrect.
2023-03-29 14:31:01 +02:00
Sébastien Villemot 4291b4f07e
The preprocessor now sets options_.{ramsey,discretionary}_policy in all cases 2023-03-28 18:30:08 +02:00
Sébastien Villemot 69d0aa670b
Preprocessor update
🐛 Incorrect stochastic transformation with endo lead ⩾ 2 or exo lead ⩾ 1 in
  external functions
– New solution for solving the Ramsey steady state with Lagrange multipliers
  with lead or lag ⩾ 2. Now generates a dedicated file for derivatives of static
  model w.r.t. multipliers using chain rule derivation (#633, #1119, #1133)
– 🐛 Incorrect cost table used when computing temporary terms in static model
  with “use_dll”
– 🐛 Crash when writing the (static) set_auxiliary_variables file in the
  presence of external functions
2023-03-28 14:49:28 +02:00
Sébastien Villemot 9fa64ee0d4
ramsey_policy and estimation: remove incorrect check about number of instruments
These should only be warnings, and they are already implemented in
model_diagnostics (see 39ae080997).
2023-03-24 12:31:41 +01:00
Sébastien Villemot 43190b001f
Fix typo in commit 647ff5cd20 2023-03-17 18:19:03 +01:00
Sébastien Villemot 4f52ba0dbc
CI: bump to MATLAB R2023a 2023-03-17 16:32:13 +01:00
Sébastien Villemot 13908ee068
Provisions for MATLAB R2023a 2023-03-17 16:32:09 +01:00
Sébastien Villemot 647ff5cd20
MATLAB compatibility: warning subscripting:noSubscriptsSpecified removed in R2023a 2023-03-17 16:03:37 +01:00
Sébastien Villemot f07d73e63e
CI: use system-wide Octave binary 2023-03-16 17:43:39 +01:00
Sébastien Villemot 816e94e9f9
Octave fix: do not change the global recursive delete confirmation setting
Only change the setting locally, as is done in isolder.m and
parallel/dynareParallelRmDir.m.
2023-03-16 17:24:18 +01:00
Sébastien Villemot 060c694066
model_diagnostics: remove workaround for Octave
The rank() and null() functions accept a tolerance argument since at least
Octave 3.8.
2023-03-16 17:24:18 +01:00
Sébastien Villemot 441173ec5a
Remove workaround for eig() function under Octave
The eig() function has been been able to return the left eigenvectors since at
least Octave 4.4.
2023-03-16 17:24:18 +01:00
Sébastien Villemot b7477ac0b6
cmaes: remove broken local isoctave() function 2023-03-16 17:24:18 +01:00
Sébastien Villemot 56ffc87e1c
Remove workaround for gaminv() bug fixed in Octave 4.4
See #161 and http://savannah.gnu.org/bugs/?52569
2023-03-16 17:24:18 +01:00
Stéphane Adjemian (Ryûk) 6e0a09f5fa
Add interface to flip endogenous and exogenous variables.
Calls to change_type can be done in a file named model-inversion-setup.inc in
the current folder. The file is included, between the declaration of the
exogenous variables and the model block, in the aggregate mod file if and only
if the macrovariable InvertModel exists and is equal to True. To invert a model,
the user just has to run the aggregated mod file with -DInvertModel=True on the
command line.
2023-03-16 14:12:21 +01:00
Johannes Pfeifer c8045e2c5e model_diagnostics.m: fix logic of using block information
Also fixes bug with rank not working with sparse matrices
2023-03-15 18:11:37 -04:00
Sébastien Villemot ff318d1163
Merge branch 'model_diagnostics' of git.dynare.org:JohannesPfeifer/dynare
Ref. !2125
2023-03-13 17:59:43 +01:00
Johannes Pfeifer 39ae080997 model_diagnostics.m: fix logic of Ramsey instrument checks
The mapping from economic to steady state instruments is not one-to-one. Trigger warnings instead of errors.
2023-03-13 10:39:06 -04:00
Stéphane Adjemian (Ryûk) 7583790851
Improve error message. 2023-03-09 11:25:04 +01:00
Stéphane Adjemian (Ryûk) a3b249c375
Update dseries submodule (fill_ method). 2023-03-08 18:16:11 +01:00
Stéphane Adjemian (Ryûk) 0d39cab9e1
Add option to print parameter values. 2023-03-04 22:31:54 +01:00
Stéphane Adjemian (Ryûk) c006645c7f
Remove output argument. 2023-03-04 20:10:50 +01:00
Stéphane Adjemian (Ryûk) 2ab19c1aa9
Do not compute variables if they are not returned. 2023-03-04 20:10:06 +01:00
Stéphane Adjemian (Ryûk) 656a7bf867
Cosmetic changes. 2023-03-04 18:03:59 +01:00
Stéphane Adjemian (Ryûk) f6a76066f9
Remove warning. 2023-03-04 17:52:50 +01:00
Stéphane Adjemian (Ryûk) 0b9141fdca
Remove and rename routine (print_equations).
Also:

 - rename first input argument,
 - remove second argument (always expand expectations).
2023-03-04 17:49:33 +01:00
Stéphane Adjemian (Ryûk) a0d53277c1
Fix condition (variable name can have less than characters). 2023-03-04 17:13:45 +01:00
Sébastien Villemot f02d66ce7c
moment_function: remove unused function 2023-03-01 16:47:42 +01:00
Sébastien Villemot a2591c474e
selif: remove unused function 2023-03-01 16:44:05 +01:00
Sébastien Villemot 845eac99d3
bicgstab_: remove unused function 2023-02-17 22:01:32 -05:00
Sébastien Villemot f5523c7bab
bksupk: remove unused function 2023-02-17 22:01:32 -05:00
Sébastien Villemot 62805b7183
perfect_foresight_simulation + bksup0: remove unused functions 2023-02-17 22:01:32 -05:00
Sébastien Villemot f938014e84
bksup1: turn into a local function of sim1_lbj 2023-02-17 22:01:32 -05:00
Sébastien Villemot 24f689b2de
restricted_steadystate: turn into local function of evaluate_steady_state_file 2023-02-17 22:01:28 -05:00
Sébastien Villemot 6bddbca01d
bytecode_steadystate: turn into a local function of evaluate_steady_state 2023-02-17 22:01:25 -05:00
Sébastien Villemot 1a421d93dd
steady: turn homotopy{1,2,3} into local functions 2023-02-16 14:22:27 -05:00
Sébastien Villemot 2c44923384
No longer turn off output pagination
The “more off” command is incompatible with MATLAB Online.

Moreover, output pagination is disabled by default on MATLAB and on
Octave (since version 4 for the latter), so in most cases that command would do
nothing.

Incidentally, this allows users to enable output pagination should they want
to.

[skip ci]
2023-02-08 11:02:29 -05:00
Sébastien Villemot 65053667cf
New “homotopy_alt_starting_point” option to “perfect_foresight_solver” command 2023-02-07 14:49:00 -05:00
Sébastien Villemot d6370a6d28 Merge branch 'occbin_init_smo' into 'master'
occbin enhancements and bug fixes

See merge request Dynare/dynare!2123
2023-02-07 14:23:14 +00:00
Sébastien Villemot be698d5f98
Perfect foresight + homotopy: add missing newline 2023-02-06 15:14:02 -05:00
Marco Ratto 63a299f64e new error codes introduced and applied for occbin smoother.
- 321 when simulation within occbin smoother fails
- 322 when occbin smoother does not converge.
2023-02-06 14:58:42 +01:00
Marco Ratto f565a0a84a bug fix and avoid missing output arguments and when smoother exits after non convergence of simulation. 2023-02-06 11:39:24 +01:00
Marco Ratto f0aa2fb86f cosmetic change 2023-02-03 14:25:59 +01:00
Marco Ratto b886de92dc trap case when simulation does not converge within smoother 2023-02-03 14:25:32 +01:00
Marco Ratto cdd195576e store binding_indicator_history once it has been set 2023-02-03 14:24:58 +01:00
Marco Ratto 783c237d17 evaluate set_prior only when needed 2023-02-03 14:21:02 +01:00
Marco Ratto 035db8b8c4 bug fixes when using guess regime 2023-02-03 14:20:51 +01:00
Marco Ratto 77e87be48b try with base regime before returning error 2023-02-03 14:20:39 +01:00
Marco Ratto 22e6fb1814 make sure also ALL updated variables in period 1 are reconstructed with smoother_redux. test model changed accordingly. 2023-02-03 14:20:28 +01:00
Marco Ratto 7132cb593e bug fix for init variables to be defined only with occbin PKF 2023-02-03 14:20:16 +01:00
Marco Ratto 50aa20c742 eliminate buggy and useless check for existence of guess regime variable. this may create bugs in running PKF update step! 2023-02-03 14:20:02 +01:00
Marco Ratto e51a30eaf5 Bug fix for the case where no prior is defined for estim params 2023-02-03 14:19:50 +01:00
Marco Ratto a346639020 when filter is NOT diffuse, allow likelihood to handle violation of constraints in period 1. 2023-02-03 14:19:28 +01:00
Marco Ratto 6598d615d1 in some cases, order is not yet set to 1 2023-02-03 14:19:16 +01:00
Marco Ratto a91c36f920 first_period_occbin_update is an index, not a boolean 2023-02-03 14:19:05 +01:00
Marco Ratto 74acb2d1f5 bug fix using index t 2023-02-03 14:18:54 +01:00
Marco Ratto 21c9d59e8c incorporate information about states in period 0 for occbin with smoother_redux 2023-02-03 14:18:32 +01:00
Marco Ratto 0622f01f4e filter out t=1 when storing aalphahat and eetahat 2023-02-03 14:18:21 +01:00
Marco Ratto b90dff1986 retrieve states in period 0 from smoother and deploy this to:
- allow having binding regimes in period 1 with occbin
- further improve recovering of smoothed variables in period 1 under smoother_redux option
2023-02-03 14:18:10 +01:00
Sébastien Villemot 5aca770931
perfect_foresight_with_expectation_errors_{setup,solver}: fix bugs with several exogenous
Closes: #1883
2023-01-24 15:02:07 +01:00
Sébastien Villemot 538f38d269 Merge branch 'occbin_debug' into 'master'
missing_observations_kalman_filter.m: provide debugging information on PKF problems

See merge request Dynare/dynare!2122
2023-01-23 10:39:17 +00:00
Johannes Pfeifer 4307711c60 missing_observations_kalman_filter.m: provide debugging information on PKF problems 2023-01-19 11:57:35 +01:00
Sébastien Villemot cfaf5a685d
Preprocessor: actually obey the “mfs” option for the static model
As a consequence, fix steady state computation when mfs > 0.
2023-01-17 19:08:32 +01:00
Sébastien Villemot 8aabdaee9c
Consolidate functions for solving steady state with block and/or bytecode 2023-01-17 15:25:47 +01:00
Sébastien Villemot 7b6058509f
Drop unused function 2023-01-17 14:48:36 +01:00
Sébastien Villemot 005769210a
Drop unused function 2023-01-17 14:47:52 +01:00
Sébastien Villemot 5342476196
Drop unused function 2023-01-17 14:46:50 +01:00
Sébastien Villemot 023afc7ebb
Drop unused function 2023-01-17 14:46:46 +01:00
Sébastien Villemot 1c5c1639e1
Drop unused function 2023-01-16 14:38:09 +01:00
Sébastien Villemot e5f100b152
Drop unused function 2023-01-16 14:38:06 +01:00
Sébastien Villemot c187d0ead9
Drop unused function
It should probably have been removed in 9c6e219990.
2023-01-16 14:38:03 +01:00
Sébastien Villemot 8f1a4cb363
Drop block-decomposed first-order perturbation solution and kalman filter 2023-01-13 16:57:49 +01:00
Stéphane Adjemian (Ryûk) 91dd917d62
Cosmetic/Efficiency changes.
- Use bsxfun for centering data if possible,
 - Factorise LU decomposition,
 - Remove useless operations during the presampling step.
2023-01-12 17:45:51 +01:00
Sébastien Villemot e250067959
Use sparse representation for block-decomposed perfect foresight and steady state computation
Ref. #1859
2023-01-12 16:28:02 +01:00
Sébastien Villemot 3c55aa57e1
Use sparse representation for evaluating the static model
We also take advantage of the fact that the non-block version is always
available next to the block one, so when we are only interested in the residual
as a whole, we simplify by using the non-block version.
2023-01-10 16:21:44 +01:00
Sébastien Villemot b343f0231d
Ensure that generated sparse MEX files are unloaded before the preprocessor is run
This workaround already existed for the legacy representation.
2023-01-10 16:07:29 +01:00
Johannes Pfeifer 0b0a4ef386 dsge_likelihood.m: flag analytical_derivation as incompatible with endogenous_prior 2023-01-09 17:57:18 +01:00
Sébastien Villemot f84753025d
Bytecode: the block and non-block versions now coexist in parallel
As a consequence, a new “block_decomposed” option of the bytecode MEX has been
introduced to explicitly select the block-decomposed version.

Note that we do not always use the “block_decomposed” option even when the
“block” option has been passed to the user, in situations where the block
decomposition brings nothing (e.g. when evaluating the residuals of the whole
model).
2023-01-09 15:20:46 +01:00
Stéphane Adjemian (Ryûk) b7693c3273
Add routine for conditional likelihood (first order). 2023-01-06 14:57:45 +01:00
Sébastien Villemot f93a7f7192
Merge branch 'disp_aux_4' of git.dynare.org:JohannesPfeifer/dynare
Ref. !2118
2023-01-04 10:59:21 +01:00
Johannes Pfeifer 45450651a2 model_info.m: fix display of block decomposition 2023-01-03 16:17:43 +01:00
Sébastien Villemot ead9023cec Merge branch 'steady_nan' into 'master'
steady state computation: trap cases where parameters are NaN

See merge request Dynare/dynare!2119
2023-01-03 11:24:26 +00:00
Stéphane Adjemian (Guts) 5b72a3041c
Use new unit tests interface. 2023-01-02 22:58:20 +01:00
Johannes Pfeifer 64d61c3268 steady state computation: trap cases where parameters are NaN 2022-12-28 11:48:23 +01:00
Johannes Pfeifer 1866286fb8 subst_auxvar.m: correctly take care of exo leads and lags 2022-12-21 11:16:41 +01:00
Johannes Pfeifer 1219f085e7 disp_dr.m: fix display for type 4 auxiliaries 2022-12-20 13:06:05 +01:00
Stéphane Adjemian (Ryûk) aee541aabe
Update dseries submodule. 2022-12-15 17:25:29 +01:00
Johannes Pfeifer a4634cd1b7 dynare_estimation_init.m: set observable mapping for inversion filter if only smoother is used 2022-12-09 13:19:32 +01:00
Johannes Pfeifer e7ca989b21 prior_posterior_statistics.m: fix logical condition 2022-12-05 14:52:03 +01:00
Johannes Pfeifer 9de0688cfe Make default jscale depend on number of estimated parameters
Related to https://git.dynare.org/Dynare/dynare/-/issues/1849
2022-12-03 16:00:27 +01:00
Sébastien Villemot d574705b4a
Design and performance improvement to solve_algo={12,14}
Use the new time-recursive block decomposition computed by the preprocessor
for:
- the simulation of backward models with “simul_backward”
- the perfect foresight simulation of purely backward/forward/static models

Also note that in this case, the preprocessor now defaults to “mfs=3” (i.e. it
minimizes the set of feedback variables and tries to renormalize equations).

This replaces the previous algorithm based on Dulmage-Mendelsohn (dmperm), plus
an ad hoc identification of some equations that can be evaluated (those with a
LHS equal to a variable, the log of a variable, or the diff-log of a variable).

By the way, the block_trust_region MEX has been modified so that it accepts a
boolean argument to decide whether it performs a Dulmage-Mendelsohn
decomposition (if not, then it performs a simple trust region on the whole
nonlinear system).

This provides a significant performance improvement (of almost an order of
magnitude for solve_algo=14 on a 700 equations model).
2022-11-30 14:47:57 +01:00
Johannes Pfeifer bbdcdc89a2 sim1.m: use operation that preserves sparsity 2022-11-28 16:20:44 +01:00
Sébastien Villemot ba9b0e9829
Merge branch 'occbin_IVF' of git.dynare.org:JohannesPfeifer/dynare
Ref. !2019
2022-11-28 11:05:03 +01:00
Stéphane Adjemian (Charybdis) 3aeb1ff7e3
Fix pac.estimate.iterate_ols.
Was crashing if the auxiliary model contains a constant.

See https://forum.dynare.org/t/iterative-ols-for-pac-equation/21379.
2022-11-24 16:29:49 +01:00
Johannes Pfeifer 26fbc6c56d IVF: improve error handling 2022-11-23 16:46:40 +01:00
Johannes Pfeifer 80f6799c38 IVF: only store smoother results if requested 2022-11-23 16:44:18 +01:00
Johannes Pfeifer 1e2fb88d32 IVF: fix error handling for smoother 2022-11-23 15:37:12 +01:00
Johannes Pfeifer eeecccd29b IVF_core.m: fix header 2022-11-23 15:18:44 +01:00
Johannes Pfeifer 2c879cc64c compute_trend_coefficients.m: fix header 2022-11-18 22:04:07 +01:00
Marco Ratto 178e892e04 big fix for initialization of diffuse filter with correlated observation error covariance matrix 2022-11-18 12:41:15 +01:00
Marco Ratto 81ba952414 big fix in diffuse filter initialization: incorrect mapping of observables when removing zero columns of T 2022-11-18 10:52:37 +01:00
Sébastien Villemot 3184db12f2 Merge branch 'occbin_smoother' into 'master'
OccBin Smoother: do not write non-converged results to oo_

Closes #1863

See merge request Dynare/dynare!2100
2022-11-16 18:40:05 +00:00
Johannes Pfeifer 4d603fb335 OccBin Smoother: do not write non-converged results to oo_
Closes https://git.dynare.org/Dynare/dynare/-/issues/1863
2022-11-16 17:13:08 +01:00
Marco Ratto 03f93c5329 bug fix with steady state when plotting the expand of groups of shocks 2022-11-15 23:10:38 +01:00
Marco Ratto b0ce054c00 missing line that stores info on violation of constraint in expectation (needed to check for periodic solutions) 2022-11-15 23:09:48 +01:00
Sébastien Villemot 7075e05ddf
Merge branch 'cosmetic' of git.dynare.org:JohannesPfeifer/dynare
Ref. !2096
2022-11-07 14:21:26 +01:00
Sébastien Villemot d602453bb6
CI: bump to Octave 7.3.0 2022-11-07 14:11:27 +01:00
Johannes Pfeifer 5dbbe6d72c compute_Pinf_Pstar.m: fix header 2022-11-07 10:12:34 +01:00
Sébastien Villemot b336fbeb0d
Merge branch 'occbin_features' of git.dynare.org:rattoma/dynare
Ref. !2094
2022-11-04 14:59:06 +01:00
Marco Ratto a1e0c35c1f bug fix when max_check_ahead_periods interacts with curb_retrench 2022-11-04 11:20:52 +01:00
Marco Ratto 2f23604824 new option max_check_ahead_periods (renaming old undocumented option max_periods), that truncates the number of periods for which agents check ahead the regime (a sort of myopic behavior beyond max_check_ahead_periods),
the option is valid for simul, smoother and likelihood.
2022-11-04 11:17:37 +01:00
Sébastien Villemot ee200a03b8
isoctave: performance improvement
Explicitly specify that OCTAVE_VERSION is a builtin. Otherwise the call to
“exists” will look for a file, among other things, which takes a lot of time.
2022-11-02 17:54:58 +01:00
Sébastien Villemot 720de52702
Make get_equation_number_by_tag more robust
The implementation was relying on the fact that in M_.equations_tags, all
equations have a name tag and they appear in the order given by equation
numbers. There is no guarantee that this will always be the case, so use a more
robust approach.

By the way, improve the implementation of get_equation_name_by_number.
2022-10-26 14:18:59 +02:00
Sébastien Villemot 5f6946a1b9
Display equation names in “model_info” command 2022-10-25 18:41:17 +02:00
Sébastien Villemot befc6f59b9
Improve comments
[skip ci]
2022-10-24 18:05:15 +02:00
Marco Ratto e31b313776 cosmetic change 2022-10-20 19:09:52 +02:00
Marco Ratto d0150997f6 accept periodic solution in simulations ONLY IF two regimes differ by one period, to avoid pathological solutions.
We also do not check for periodicity when check ahead periods have been increased endogenously, again to avoid mis-identified periodicity.

Any other type of periodicity, is flagged as non-convergence with error code 313 (infinite loop of solutions).
2022-10-20 16:13:34 +02:00
Marco Ratto 2ccd3d4a0e if max_periods is set to finite number, enforce algorithm to check ahead ONLY until max_periods (i.e. when we want agents to be myopic beyond some future period) 2022-10-20 16:11:01 +02:00
Marco Ratto 3765ef77cd add option reset_check_ahead_periods_in_new_period:
when performing stochastic simulations, check ahead periods may increase endogenously at some point for regimes very long in expectation. such longer check ahead periods may considerably slow down convergence in subsequent periods, so users may want to avoid this.
2022-10-20 16:10:14 +02:00
Marco Ratto f8adfa3fa5 with smoother_redux, factor out definition of nk to reconstruct filtered variables, and use a local variable nk (so options_.nk may remain empty). 2022-10-20 15:30:37 +02:00
Marco Ratto bb9e45d0d0 max size for QMC is 1111 2022-10-20 15:14:39 +02:00
Marco Ratto 1a46c1dc89 impede prior_trunc=0 when doing sensitivity 2022-10-20 15:14:09 +02:00
Marco Ratto eb41618614 trap errors also in univariate update step for occbin 2022-10-20 15:06:36 +02:00
Marco Ratto ce21248e97 set noprint = true when simulating, to avoid crashes; only save info1 file under debug option 2022-10-20 15:06:26 +02:00
Marco Ratto eb6f17e783 check if initial states are empty, and set them to zero. 2022-10-20 15:05:39 +02:00