Commit Graph

8052 Commits (237aa465d23fb3113a27cf2d8f9932bd3c2e2e8f)

Author SHA1 Message Date
Michel Juillard 91b4cfd3a8 fixes handling of periods in histval_file/initval_file 2020-09-19 12:14:43 +02:00
Sébastien Villemot 865ab47fa9
Provide block_trust_region MEX under solve_algo 13 and 14
- block trust region solver now available under solve_algo=13
  It is essentially the same as solve_algo=4, except that Jacobian by finite
  difference is not handled. A test file is added for that case
- block trust region solver with shortcut for equations that can be evaluated
  is now available under solve_algo=14 (in replacement of the pure-MATLAB solver)

Closes: Enterprise/dynare#3
2020-09-18 18:01:56 +02:00
Sébastien Villemot 0b41d17374
dynare_solve: fix display of number of dmperm blocks 2020-09-18 17:55:58 +02:00
Sébastien Villemot 4c2b906962
Add routine for shock decomposition of backward models
Closes: Enterprise/dynare#2
2020-09-18 17:40:45 +02:00
Stéphane Adjemian (Odysseus) 248ad18846 Merge remote-tracking branch 'Dynare/master' into enterprise
Fixed conflicts in:

 - .gitlab-ci.yml
 - matlab/dynare_config.m
 - matlab/dynare_solve.m
 - matlab/initvalf.m
 - matlab/perfect-foresight-models/make_ex_.m
 - matlab/perfect-foresight-models/perfect_foresight_setup.m
 - mex/build/matlab/Makefile.am
 - mex/build/matlab/configure.ac
 - mex/build/octave/Makefile.am
 - mex/build/octave/configure.ac
 - mex/sources/Makefile.am
 - preprocessor
 - tests/Makefile.am
2020-09-17 14:53:32 +02:00
Sébastien Villemot b9812a0ff0
Fix another issue with extended_path + bytecode
As reported in https://forum.dynare.org/t/extended-path-bytecode/16577
2020-09-08 13:13:00 +02:00
MichelJuillard 0391dbbeb1 fix bug with lag on exogenous variables on more than one period
(cherry picked from commit 492124ce9886e6aef4f4cefef302241d7edfe024)
2020-09-04 14:02:04 +00:00
Sébastien Villemot 26597bf093
Remove more utilities related to conversion of oo_ between Dynare versions
Ref. #915
2020-09-03 16:45:21 +02:00
Johannes Pfeifer d7b7ce8940 AnalyseComputationalEnvironment.m: define missing command string used in error message 2020-09-02 12:41:31 +02:00
Sébastien Villemot b891695680
Merge branch 'JohannesPfeifer/dynare-MoM' 2020-09-01 15:14:43 +02:00
Johannes Pfeifer 96be513ecf Remove matched_moments_ as input argument as it is now a field of M_ 2020-08-05 15:58:58 +02:00
Sébastien Villemot f6c2471eef
New MEX for solving discrete Lyapunov equations with doubling algorithm
This is a Fortran 2008 rewrite of disclyap_fast.m.

Closes: #1737
2020-07-30 16:34:35 +02:00
Sébastien Villemot daea99d1b0 Merge branch 'parameter_setting' into 'master'
Move setting of parameters out of check_bounds_and_definiteness_estimation.m

See merge request Dynare/dynare!1754
2020-07-21 08:30:57 +00:00
Johannes Pfeifer 3b85fea02e Move setting of parameters out of check_bounds_and_definiteness_estimation.m
Increases transparency
2020-07-17 15:02:12 +02:00
Sébastien Villemot 4d22c4c0c0
Drop 32-bit binaries from Windows package
Closes: #1713
2020-07-17 12:52:58 +02:00
Sébastien Villemot 1dbbef9f2e Merge branch 'moment_estimation' into 'master'
First implementation of moment estimation

See merge request Dynare/dynare!1750
2020-07-16 15:41:15 +00:00
Willi Mutschler b273a2792b Fix iterated method of moments
Also improve fprintf descriptions and comments and other cosmetical changes
2020-07-16 14:47:20 +02:00
Sébastien Villemot cda3253d2c Merge branch 'ME_traceplots' into 'master'
Fix trace plots with measurement errors and their correlations

See merge request Dynare/dynare!1752
2020-07-16 09:39:47 +00:00
Sébastien Villemot 499451d50a Merge branch 'pruned_state_space' into 'master'
Speed up pruned_state_space_system.m by e.g. using persistent variables

See merge request Dynare/dynare!1749
2020-07-16 09:39:01 +00:00
Willi Mutschler 9c99eac55c Move more options to substructure options_mom_.mom 2020-07-16 11:38:41 +02:00
Willi Mutschler 552b995215 Remove stuff and checks that are already done in the preprocessor 2020-07-16 11:38:41 +02:00
Johannes Pfeifer 540f0454d2 Code Review of GMM routines
- fix prefilter option
- Implement iterative GMM
2020-07-16 11:38:40 +02:00
Johannes Pfeifer a40807caa9 plot_priors.m: Allow for optional title 2020-07-16 11:38:39 +02:00
Johannes Pfeifer e14e9641e8 Factorize checking of positive definiteness 2020-07-16 11:38:38 +02:00
Willi Mutschler 3615962a61 First draft of method of moments toolbox with GMM and SMM 2020-07-16 11:38:38 +02:00
Johannes Pfeifer f717712ed6 Fix trace plots with measurement errors and their correlations
Problem was introduced when transitioning to cell arrays
2020-07-15 14:34:04 +02:00
Johannes Pfeifer 1cc29d765b DsgeSmoother: add warning if there is stochastic singularity 2020-07-15 11:00:48 +02:00
Sébastien Villemot e525798a64
External functions: decrease step used for numerical derivation 2020-07-09 18:40:36 +02:00
Johannes Pfeifer 9e92dfd7c4 Speed up pruned_state_space_system.m by e.g. using persistent variables 2020-07-08 19:50:31 +02:00
Stéphane Adjemian (Charybdis) 31de6f20fd
Updated dseries submodule.
- Fixes plot method with additional arguments (bug introduced in 56e0645)
 - Adds daily frequency
 - Adds interface to dbnomics
2020-07-08 14:55:38 +02:00
Johannes Pfeifer d10242fbab dynare_minimize_objective.m: change parameter names to expected cell array 2020-07-08 11:44:47 +02:00
Johannes Pfeifer 6b592cbb00 newrat: Further replacement of varargins by explicit options 2020-07-08 11:44:34 +02:00
Sébastien Villemot dc6e3406e5 Merge branch 'tolerance' into 'master'
Correctly distinguish tolerance between steady and perfect foresight

See merge request Dynare/dynare!1746
2020-07-07 09:46:28 +00:00
Sébastien Villemot 6a6271225c Merge branch 'minimize_objective' into 'master'
Minimize objective

See merge request Dynare/dynare!1737
2020-07-07 09:35:39 +00:00
Johannes Pfeifer 607a273bb0 Correctly distinguish tolerance between steady and perfect foresight
steady uses options_.solve_tolf as a termination criterion, so subsequent checks should do the same. Similarly, solve_tolx was never used.
2020-07-06 13:11:23 +02:00
Sébastien Villemot 3736272331 Merge branch 'lyap' into 'master'
disclyap_fast.m: bugfixes and improvements

See merge request Dynare/dynare!1745
2020-07-01 08:14:46 +00:00
Johannes Pfeifer 287ec91982 disclyap_fast.m: bugfixes and improvements
- loop termination criterion did not match subsequent check
- dimensions of NaN were incorrect
- exitflag was mostly meaningless due to erroring out
- Make max_iter an optional input
- Move file from partial information folder to Matlab
2020-06-30 16:43:00 +02:00
Sébastien Villemot 4913cfb3f0 Merge branch 'third_order_moments' into 'master'
Add display of theoretical moments at order=3 with pruning

See merge request Dynare/dynare!1744
2020-06-30 14:38:22 +00:00
Johannes Pfeifer 9d2ec5f040 disp_th_moments.m: cosmetic changes 2020-06-30 15:31:55 +02:00
Johannes Pfeifer dfc7357636 Add display of theoretical moments at order=3 with pruning 2020-06-30 13:46:54 +02:00
Sébastien Villemot e5cf2a3739 Merge branch 'ME_moments' into 'master'
Bugfixes around moment computation with measurement errors

See merge request Dynare/dynare!1743
2020-06-29 14:05:42 +00:00
Johannes Pfeifer f3329c2db6 compute_moments_varendo.m: delete stale results field
Otherwise, results from old runs will not be updated
2020-06-29 13:21:25 +02:00
Johannes Pfeifer 6e06acc7f4 Fix moment computation with Measurement errors
- check logic for M_.H was faulty
- M_.H was not updated in posterior sampling
2020-06-29 13:20:02 +02:00
Johannes Pfeifer 69fc7acb9c Add function for updating measurement error covariance matrix 2020-06-26 18:28:07 +02:00
Johannes Pfeifer 695ec4b6c1 set_parameters_locally.m: fix comment 2020-06-26 18:28:07 +02:00
Sébastien Villemot faa4416b99 Merge branch 'pnames' into 'master'
Move definition of prior distribution names to separate function to make it...

See merge request Dynare/dynare!1742
2020-06-26 11:55:28 +00:00
Johannes Pfeifer e92054e16b Move definition of prior distribution names to separate function to make it useable in other contexts. 2020-06-26 12:07:16 +02:00
Sébastien Villemot fdd9676071 Merge branch 'dyn_latex_table' into 'master'
dyn_latex_table.m: move latex output to latex subfolder

See merge request Dynare/dynare!1741
2020-06-26 10:04:28 +00:00
Johannes Pfeifer 1c759bb232 dyn_latex_table.m: move latex output to latex subfolder 2020-06-25 17:09:49 +02:00
Sébastien Villemot 663ee96376
dseries: daily frequency; DBnomics support 2020-06-25 13:55:42 +02:00
Sébastien Villemot 71c20d76df
dseries: daily frequency; DBnomics support 2020-06-25 11:45:04 +02:00
Sébastien Villemot 530f2fa5a6
Merge remote-tracking branch 'jpfeifer/rplot' 2020-06-25 10:50:56 +02:00
Johannes Pfeifer f0f02c3159 disp_moments.m: filter out 0 variance variables
Otherwise, division by 0 will result in incorrect moment displays

Closes #1736
2020-06-25 09:42:17 +02:00
Johannes Pfeifer 61fd9d7c7d rplot.m: fix TeX-ylabel 2020-06-25 09:28:03 +02:00
Johannes Pfeifer 5c56295c82 imcforecast.m: fix typo in description
[skip CI]
2020-06-24 21:36:41 +02:00
Stéphane Adjemian (Charybdis) 693aedda7d
Make the update of M_.params optional. 2020-06-24 13:22:36 +02:00
Sébastien Villemot 49b35be90a
Preprocessor: various improvements to the use_dll mode
In particular, higher order derivatives are now returned as sparse matrices by
the static/dynamic files, instead of 3-column matrices (which was inconsistent
with the M-file mode).
2020-06-23 19:38:49 +02:00
Sébastien Villemot bcc213644f Merge branch 'factorize_checks' into 'master'
Factorize prior bound and definiteness checks

See merge request Dynare/dynare!1736
2020-06-23 16:17:55 +00:00
Sébastien Villemot 75211742b8
MATLAB+Windows: workaround to allow the preprocessor to delete the +modfile folder
For an instance of this bug, see
https://forum.dynare.org/t/issue-with-dynare-preprocessor-4-6-1/15448/1
2020-06-23 18:14:12 +02:00
Sébastien Villemot 81f3e81f3e
Remove obsolete workaround for Octave 2020-06-23 17:59:33 +02:00
Johannes Pfeifer 4a9f9263df Make newrat and gmhmaxlik independent of varargin inputs
Makes the optimizers useable in other contexts where varargin is different
2020-06-23 15:04:11 +02:00
Johannes Pfeifer 3e725e3292 mr_hessian.m
Do not save files by default; prevents horse-race write access crashes for fast mod-files under Windows
2020-06-23 15:00:08 +02:00
Johannes Pfeifer cfe1069367 Factorize prior bound and definiteness checks
also removes useless isestimation check
2020-06-22 20:37:31 +02:00
Willi Mutschler b0fddeeef3
Remove duplicate output of identification ranks tol
We already print it in the Settings
2020-06-20 22:38:47 +02:00
Willi Mutschler 97134cc362
🐛 Fix issue with endogenous params in steady state
Identification should switch to analytic_derivation_mode=-2 if steady state block/file changes parameter values. Dynare/dynare!1732 already adresses this when there is a prior specified. This fix also addresses this when there are no priors.

kim2.mod is now not only an integration test but also a unit test for this.
2020-06-20 22:38:47 +02:00
Willi Mutschler 347be1f89a
🐛 Fix wrong computations when identification(useautocorr) 2020-06-20 22:38:47 +02:00
Willi Mutschler 926a54388e
🐛 wrong setting of small values to zeros in identification 2020-06-20 22:38:47 +02:00
Willi Mutschler db01f54357
🐛 Add warning and turn off identification strength if not enough mom 2020-06-20 22:38:47 +02:00
Sébastien Villemot 41fe087106
Block decomposition: static and dynamic files are now pure wrappers around the per-block files
Systematically call top-level static/dynamic files, instead of per-block ones.
2020-06-19 18:46:56 +02:00
Sébastien Villemot ebc0b7ecb2
Block decomposition: move logic for Jacobians in stochastic mode outside the dynamic file 2020-06-19 18:46:56 +02:00
Sébastien Villemot 39c5867cd4 Merge branch 'Tex_figures' into 'master'
Use LaTeX labels in figures

See merge request Dynare/dynare!1734
2020-06-18 14:23:50 +00:00
Johannes Pfeifer 312d053ae1 Use LaTeX labels in figures 2020-06-17 21:48:25 +02:00
Sébastien Villemot 0305b427a6
Block decomposition: use same orientation convention as oo_.endo_simul for matrix of simulated paths
Improves consistency, but also efficiency (less transpose needed).
2020-06-17 18:19:35 +02:00
Sébastien Villemot 20431ed312
Block decomposition: in the dynamic file, y and T are now vectors as in non-block mode 2020-06-17 18:19:21 +02:00
Sébastien Villemot adbb9c9117
Block decomposition, stack_solve_algo=4: fix set of variables over which line search is done 2020-06-16 18:46:40 +02:00
Sébastien Villemot 6931614809
Block decomposition: for “solve two-boundaries” blocks, move the iteration loop outside the dynamic file 2020-06-16 18:46:40 +02:00
Sébastien Villemot c25ff09307
Block decomposition: for “solve two boundaries” block, no longer compute “b” (-residuals+g1*y) in the dynamic function 2020-06-16 18:46:40 +02:00
Sébastien Villemot e72bce1a67
Block decomposition: remove useless “y” output for static/dynamic files of solved blocks 2020-06-16 18:46:40 +02:00
Marco Ratto 616d2b0faf Bug fix in initializing analytic_derivation option. This is then checked in dynare_estimation_init for parameter endogenized in steady state.
Ref. #1733
2020-06-16 16:07:48 +00:00
Sébastien Villemot 7bec234f7f
Block decomposition: for evaluate blocks, move the iteration loop outside the dynamic file 2020-06-15 18:29:42 +02:00
Sébastien Villemot bfbff6a2fb
Block decomposition: remove duplicate “periods” arg. to dynamic file of complete two-boundaries blocks 2020-06-15 18:29:42 +02:00
Sébastien Villemot 87718ce8b7 Merge branch 'disp_moments' into 'master'
disp_moments.m: make error message informative

See merge request Dynare/dynare!1730
2020-06-15 09:47:22 +00:00
Johannes Pfeifer c47682caae disp_moments.m: make error message informative
[skip CI]
2020-06-15 11:45:45 +02:00
Johannes Pfeifer d54b45cbac PosteriorIRF_core1.m: Add missing else statement that triggered crashes in rare cases 2020-06-12 17:53:46 +02:00
Sébastien Villemot 1d172528d7
Block decomposition: fixed bug introduced in 2ec5e4075a 2020-06-04 19:43:57 +02:00
Sébastien Villemot fae433fb18
Block decomposition: fix bug introduced in 0d11f8182a 2020-06-04 18:15:54 +02:00
Sébastien Villemot 07914b58a2
dseries submodule update
— add bi-annual frequency
— do not return NaNs if a variable is 0 in all periods
— fixed bug (dates member was wrong)
2020-06-04 14:39:16 +02:00
Sébastien Villemot 2ec5e4075a
Block decomposition: remove unused 2nd and 3rd derivatives in output of dynamic functions 2020-06-03 17:00:17 +02:00
Sébastien Villemot 0d11f8182a
Block decomposition: no longer compute deterministic simulation from dynamic.m file
By the way, fix bug where oo_ was not modified by solve_one_boundary.

Also convert oo_.deterministic_simulations.status to a boolean in the block
routines, for consistency with the non-block case.
2020-06-02 17:46:29 +02:00
Stéphane Adjemian (Charybdis) c5d131b3ab
Bug fix. 2020-05-29 12:03:25 +02:00
Stéphane Adjemian (Charybdis) 04b0e8aaa1
Bug fix related to missing aux variables if fourth argument is empty. 2020-05-26 17:43:07 +02:00
Sébastien Villemot 50209dc56e
Block decomposition: no longer use global variables for temporary terms in the dynamic M-file
Rather use a single vector as in non-block mode.

By the way, change the order of output arguments in static functions, to be
closer to the dynamic ones.
2020-05-26 16:23:46 +02:00
Sébastien Villemot ea4d3f4d83
Block decomposition: fix interaction with steady_state_model block
This cas was omitted in previous commit.
2020-05-25 21:10:42 +02:00
Sébastien Villemot 2c6807a66b
Block decomposition: no longer use global variables for temporary terms in the static M-file
Rather use a single vector as in non-block mode.
2020-05-25 18:36:55 +02:00
Sébastien Villemot caea047c2d
solve_one_boundary: remove unused codepaths for solve_algo={0,1,2,3}
Those cases are handled by dynare_solve.
2020-05-25 17:59:54 +02:00
Sébastien Villemot bd7eb2f88d
Fixes to solve_algo ≥ 9
— allow solve_algo=9 without block nor bytecode
— allow solve_algo≥9 with block without bytecode
— test solve_algo=9
2020-05-25 17:22:17 +02:00
Sébastien Villemot 2015b79279
solve_{one_boundary,two_boundaries}: convert some input arguments to logical type 2020-05-25 16:59:20 +02:00
Sébastien Villemot 154fced8b7
Remove old SMM code
Ref. #1724
2020-05-18 17:30:40 +02:00
Stéphane Adjemian (Charybdis) a6ea878627
Fixed bug introduced in 179d57f13.
initvalf was failing if the datafile was in the current folder.
2020-05-18 13:42:53 +02:00
Stéphane Adjemian (Charybdis) 9a66f3ebd9
Allow shocks with initval_file. 2020-05-18 12:21:43 +02:00
Stéphane Adjemian (Charybdis) 179d57f138
Fixed path issue. 2020-05-18 12:21:27 +02:00
Michel Juillard b70d99d1b4
Refactoring of initval_file and histval_file
initval_file and hisvfal_file are now more flexible and have functionalities
similar to option datafile in estimation.

Closes: #1671
2020-05-14 16:45:54 +02:00
Stéphane Adjemian (Charybdis) f72160aa60
Fixed bug introduced in e41080fed (dseries with initval_file). 2020-05-07 11:17:59 +02:00
Stéphane Adjemian (Charybdis) c9efef0782
Updated dseries submodule (bug fix in rename method).
[skip ci]
2020-05-07 11:04:06 +02:00
Stéphane Adjemian (Charybdis) e41080fede
Pass dseries (saved in .mat or .m) to initval_file.
Allows to pass a dseries object saved on disk in a .mat file or .m to
initialize the paths for the endogenous variables and set the paths
for the exogenous variables. It is not required to pass the auxiliary
variables (automatically computed by initvalf routine), which is useful
if the baseline comes from another model. In this case, the
initval_file command or the datafile option of the
perfect_foresight_setup command sets the value of periods (deduced
from the number of observation in the dseries object and the number of
lags/leads in the model).
2020-05-06 22:36:06 +02:00
Stéphane Adjemian (Charybdis) 2566320834
Updated dseries submodule (new method). 2020-05-06 11:39:11 +02:00
Sébastien Villemot 09617453ea
Ensure that “extended_path” obeys the “bytecode” option
Closes: #1717
2020-05-04 22:42:08 +02:00
Houtan Bastani 25a977f4be
jacob_element & hess_element: remove unnecessary loops 2020-05-04 12:15:15 -04:00
Stéphane Adjemian (Charybdis) 79c09743d8
Updated dseries submodule (bug fix). 2020-04-30 11:47:30 +02:00
Stéphane Adjemian (Charybdis) 84ec142463
Return paths for the exogenous variables. 2020-04-09 10:40:46 +02:00
Stéphane Adjemian (Charybdis) f8bb514632
Return paths for all the endogenous variables if fourth argument is empty. 2020-04-08 17:59:23 +02:00
Sébastien Villemot 6e0f104d7e
Bump minimal MATLAB version to R2014a
Ref. #1713
2020-04-07 16:32:32 +02:00
Sébastien Villemot e95b93f783
dseries submodule update
— Efficiency change. OCTAVE_VERSION is a builtin function in Octave
— Fix bug dseries#43
— Cosmetic changes
— Fixed subsasgn method (when calling merge)
2020-04-07 12:48:00 +02:00
Stéphane Adjemian (Charybdis) 0cf1913e9c
Fixe displayed percentage in waitbar. 2020-04-06 09:13:36 +02:00
Stéphane Adjemian (Charybdis) 046960c4a8
Merge remote-tracking branch community/master into enterprise 2020-04-03 11:33:46 +02:00
Johannes Pfeifer b8b05300c1 missing_DiffuseKalmanSmootherH1_Z.m: fix bug with variable dimension 2020-04-02 19:22:55 +02:00
Stéphane Adjemian (Charybdis) 7f2cf925c8
Fixed YhatObs and Yobs returned by dyn_ols.
Adding back the calibrated part of the RHS.

(cherry picked from commit 545eb47abea080c4b1cf411f89b9f56226aeb724)
2020-04-02 10:50:10 +02:00
Willi Mutschler 64a2a4388a
🐛 📖 Fixes TaRB with student t proposal distribution 2020-04-01 14:46:22 +02:00
Sébastien Villemot 8df9813a0e Merge branch 'perfect_foresight' into 'master'
fix bug when no convergence and backward model

See merge request Dynare/dynare!1726
2020-03-31 15:18:05 +00:00
Michel Juillard fd09b98150 fix bug when no convergence and backward model 2020-03-31 15:40:49 +02:00
Sébastien Villemot 43ed7b2b69
Merge remote-tracking branch 'community/master' into enterprise 2020-03-27 16:28:41 +01:00
Stéphane Adjemian (Charybdis) 23c927b708
Updated build for matlab R2020a.
(cherry picked from commit 166865149e)
2020-03-26 15:38:41 +01:00
Stéphane Adjemian (Charybdis) e90549d2df
Bug fix. Dynare configuration hook was not evaluated.
(cherry picked from commit e2b20f3e3e)
2020-03-26 15:37:55 +01:00
Stéphane Adjemian (Charybdis) 166865149e
Updated build for matlab R2020a. 2020-03-26 11:20:24 +01:00
Stéphane Adjemian (Charybdis) 109bc5883c
Check the existence of the user configuration file. 2020-03-26 10:15:35 +01:00
Stéphane Adjemian (Charybdis) e2b20f3e3e
Bug fix. Dynare configuration hook was not evaluated. 2020-03-26 10:15:35 +01:00
Johannes Pfeifer 071ab1e14f imcforecast.m: fix faulty logic of warning
Steady state and time shift were missing
2020-03-21 12:06:24 +01:00
Johannes Pfeifer ef8671bb99 Correctly pass prior_trunc option in identification 2020-03-17 13:28:40 +01:00
Stéphane Adjemian (Charybdis) 6ffbda470e
Use merge instead of horcat. 2020-03-13 17:44:35 +01:00
Stéphane Adjemian (Charybdis) 4bd775948e
Allow empty argument. 2020-03-13 17:44:09 +01:00
Sébastien Villemot e93c7b6b25
Reorder files generated by “moments_varendo” option of “estimation”
If there were more than 10 files of Metropolis parameter draws, the ordering
the files containing the posterior moments could be different from that of the
parameter draws. This is because the “dir()” command was used to order the
files containing the parameter draws, and because the command uses alphabetic
ordering, file #10 would come before #2.

This commit enforces the numerical ordering of files.
2020-03-12 15:56:55 +01:00
Stéphane Adjemian (Charybdis) 2bc7944286
Removed warning. 2020-03-11 12:47:23 +01:00
Stéphane Adjemian (Charybdis) b4db697e0f
Cosmetic change. 2020-03-11 12:47:02 +01:00
Stéphane Adjemian (Charybdis) a4519f6b86
Bug fix (solve_algo={12,14}).
Removed threshold for detecting the non zero elements in the rows of
the Jacobian matrix. Using tolf as a threshold parameter for identifying
the non zero elements leaded (not systematically) the algorithm to not
reevaluate the residuals of the dynamic model while necessary.
2020-03-11 12:38:59 +01:00
Stéphane Adjemian (Charybdis) 492b0fffea
Cosmetic change. 2020-03-11 12:34:21 +01:00
Sébastien Villemot d01846e5be
Fix incorrect test for options_.posterior_sampler_options.posterior_sampling_method
Thanks to checkcode().
2020-03-10 14:13:49 +01:00
Johannes Pfeifer 99f4fcadcc model_diagnostics.m
Update parameter vector from steady state file and provide correct nocheck flag
2020-03-10 11:06:35 +01:00
Johannes Pfeifer 16f65a2f33 prior.m: fix missing function input
Prevents crashes in "prior moments"
2020-03-08 09:00:33 +01:00
Johannes Pfeifer b7ef2181f9 print_info.m: Fix bug in error handling
get_error_message.m needs to always provide the error string, only throwing out the error message needs to depend on noprint

Closes https://git.dynare.org/Dynare/dynare/issues/1714
2020-03-08 09:00:01 +01:00
Johannes Pfeifer 2004641a10 dyn_ramsey_static.m: abort of steady state file signals error code 2020-03-06 18:55:01 +01:00
Johannes Pfeifer 0a52dedfda Ramsey with multiple instruments: return properly sized vector if residuals are complex 2020-03-06 18:50:40 +01:00
Stéphane Adjemian (Charybdis) 0f96df82e9
Updated dseries submodule. 2020-03-06 11:27:25 +01:00
Houtan Bastani eb6ab0696a
gui: added fields to `oo_` to indicate which commands have been run 2020-03-03 11:45:46 +01:00
Houtan Bastani 2d468b5c1d
replace unused variables with `~` 2020-03-03 11:43:38 +01:00
Johannes Pfeifer 9e5cb1422d
Save jscale to record structure before running MCMC
Useful in conjunction with mh_tune_jscale in cases where the posterior sampler crashes
2020-02-29 10:28:50 +01:00
Stéphane Adjemian (Charybdis) 864d4c25c7
Updated simulation routine for nonlinear backward models.
Changes necessary for the latest patches on dynare_solve (solve_algo={12,14}).
2020-02-27 22:58:19 +01:00
Stéphane Adjemian (Charybdis) 67b18710e8
Bug fix and efficiency change.
- Even in models where there is only one endogenous variable in the
   LHS and where all the LHS are unique, it may be that because of the
   preprocessor transformations an auxiliary variable appears in more
   than one LHS. If diff(X) is on the LHS of an equation in the original
   model, the preprocessor will create an auxiliary variable AUX_DIFF
   which will appear in the the original equation, replacing diff(X),
   and in a new equation defining the auxiliary variable. In this case
   the, the Dulmage-Mendelsohn decomposition will associate AUX_DIFF
   with the original equation and X with the equation. This was
   problematic in the previous version of the algorithm, since it was
   assumed that each equation determines the LHS variable (here AUX_DIFF
   = X - X(-1) determines a RHS variable (X).

 - Changed the expression for evaluating an LHS variable under a log.

 - Improved efficiency by not evaluating the residuals of the model if
   not required for solving the current univariate block.
2020-02-27 22:08:21 +01:00
Sébastien Villemot 3c30d9f658
Merge branch 'M_output' of git.dynare.org:JohannesPfeifer/dynare 2020-02-25 16:37:02 +01:00
Sébastien Villemot 3aaac2b811
Merge branch 'discretionary_bug' of git.dynare.org:JohannesPfeifer/dynare 2020-02-25 16:23:30 +01:00
Houtan Bastani 7a02b3bfd2
various fixes to dynareParallelDelete.m
- did not account for cases when username not set (namely when remote is localhost)
- did not account for cases when remote directory was not set (namely when remote is localhost)
- added unnecessary `filesep` to `pname` when `pname` was empty
- ignore unused output arguments (it is necessary to explicitly ignore them to prevent unwanted output from the `system` call)
- globbing did not work as it was expanded on the calling machine not the remote; pass call to `bash -c` to handle this
2020-02-25 16:18:55 +01:00
Houtan Bastani 3d9fe36ec5
ignore unused return value
[skip ci]
2020-02-25 14:50:56 +01:00
Houtan Bastani 54fe1c754c
fix typo in variable name 2020-02-25 14:50:55 +01:00
Johannes Pfeifer b3849322d4 discretionary_policy_1.m: move setting of dr before return statement
Prevents aborting with a cryptic crash
2020-02-25 14:10:45 +01:00
Johannes Pfeifer 97f7b773e5 stoch_simul.m: Make sure graphs folder exists before creating eps-loader 2020-02-24 16:13:44 +01:00
Johannes Pfeifer 3cf622cdc1 Output M_ in stoch_simul.m and discretionary_policy.m
Fixes https://git.dynare.org/Dynare/dynare/issues/1711 together with https://git.dynare.org/Dynare/preprocessor/-/merge_requests/15
2020-02-24 14:14:41 +01:00
Stéphane Adjemian (Charybdis) 84e7d4bd3d
Adapted code to use solve_algo={12,14}. 2020-02-20 13:12:16 +01:00
Stéphane Adjemian (Charybdis) fa95a6347d
Added new nonlinear solvers (solve_algo 12 and 14).
These algorithms are alternative versions of 2 and 4 specialized for
models where each equation has only one endogenous variable on the
left hand side (only allowed expression on LHS is the log of an
endogenous variable). Univariate recursive blocks are then not solved
with a non linear but by evaluating the RHS expression.
2020-02-20 13:07:54 +01:00
Stéphane Adjemian (Charybdis) 012e261944
Do not display the mapping between residuals and equations. 2020-02-20 11:39:03 +01:00
Stéphane Adjemian (Charybdis) 776f50b124
Changed rescaling strategy in trust region algorithm.
Reverts to the original MINPACK's behaviour.
2020-02-20 09:34:13 +01:00
Stéphane Adjemian (Charybdis) 0f23f88700
Exit gracefully if Newton solver fails (added try/catch block). 2020-02-19 14:39:02 +01:00
Stéphane Adjemian (Charybdis) bcfa574462
Display equation name. 2020-02-17 21:48:25 +01:00
Willi Mutschler 6223016683
🐛 Fix displaying of wrong order in disp_identification 2020-02-16 22:55:16 +01:00
Willi Mutschler f4dc2ee743
🐛 Fix wrong third-order computation in pruned state space system
Related to #1706

 Add unit test for pruned state space up to order 3


//


Changed tolerance in new test
2020-02-16 22:55:16 +01:00
Johannes Pfeifer 14ef010b9e geweke_moments.m: correctly use parameter instead of hard-coded value 2020-02-16 12:14:04 +01:00
Stéphane Adjemian (Charybdis) 00eb074630
Updated particles submodule. 2020-02-15 17:02:56 +01:00
Stéphane Adjemian (Charybdis) fb19cce284
Fixed online filter (wrong number of arguments).
[skip ci]
2020-02-15 13:58:48 +01:00
Sébastien Villemot 133b77c061
Conditional forecasting: compatibility fix with MATLAB < R2016b
Implicit expansion (a.k.a. automatic broadcasting) was introduced in MATLAB
R2016b (and it has been present in Octave for quite some time).

Hence use bsxfun() instead.

The problem had been introduced in 228b2a532.
2020-02-13 18:21:29 +01:00
Stéphane Adjemian (Charybdis) f3d45542fa
Fixed call to exactstrrep (adding missing parenthesis around expression). 2020-02-12 17:21:00 +01:00
Sébastien Villemot 57d1966644 Merge branch 'discretionary_policy' into 'master'
Factorization of discretionary policy

Closes #1705

See merge request Dynare/dynare!1709
2020-02-12 13:45:53 +00:00
Johannes Pfeifer 9800041433 discretionary_policy_1: return if steady state file signals error 2020-02-12 13:37:36 +01:00
Johannes Pfeifer 8b4fa7c2d6 Factorize call to solver routines under optimal policy and without
Related to https://git.dynare.org/Dynare/dynare/issues/1173
2020-02-12 13:19:46 +01:00
Johannes Pfeifer b07adee2d9 Add missing path to dynare_config.m 2020-02-12 13:13:31 +01:00
Johannes Pfeifer dd0e9fe719 Initialize instr_id field of discretionary_policy 2020-02-12 12:59:34 +01:00
Johannes Pfeifer d78ef0d6df Move discretionary_policy routines to own folder 2020-02-12 12:55:12 +01:00
Johannes Pfeifer a1ebc94e4f Refactor discretionary_policy codes
Closes https://git.dynare.org/Dynare/dynare/issues/1705
2020-02-12 12:52:54 +01:00
Johannes Pfeifer 228b2a532f conditional forecasts: add check whether simulation was successful 2020-02-12 11:04:46 +01:00
Stéphane Adjemian (Charybdis) e56a681ce2
Removed debugging code. 2020-02-12 09:44:42 +01:00
Stéphane Adjemian (Charybdis) 87e688011e
Fixed bug in setting blockname equation tag.
The blockname tag was overwritten (with the name of the LHS endogenous variable).
2020-02-11 19:09:33 +01:00
Stéphane Adjemian (Charybdis) 6406bf97d4
Fixed Windows vs Linux path separator issue. 2020-02-11 19:08:37 +01:00
Sébastien Villemot 181725c778
Discretionary policy: remove useless call to steady state file
The steady state is always zero for discretionary policy. And, in the case of a
steady state file, this call would not be able to update parameters (since it
does not modify M_), nor would it need to do so (since this has already be done
earlier in the function).

Ref. #1705
2020-02-11 18:14:05 +01:00
Sébastien Villemot ae59f4dcb2
Further improvements to parsing of arguments on the MATLAB command-line
Under GNU/Linux and macOS, double-quote arguments before passing them to the
shell. In particular, this allows passing single-quotes within those arguments.

We therefore have to escape the four characters that are interpreted within
double-quoted strings in POSIX shells: \, ", $ and `

On Windows, also systematically escape the backslashes.

Also move display of arguments before escaping, so that it remains readable.

Ref. #1696
2020-02-10 18:24:51 +01:00
Stéphane Adjemian (Charybdis) 004d0fa30b
Updated dseries submodule (added projection method). 2020-02-10 17:15:31 +01:00
Houtan Bastani 72dfbbdce2
fix bug in creation of latex tables
[skip ci]
2020-02-07 15:58:15 +01:00
Sébastien Villemot 4c256c2cc8 Merge branch 'discretion' into 'master'
Fixes related to estimation under discretion

See merge request Dynare/dynare!1707
2020-02-06 13:37:52 +00:00
Johannes Pfeifer 30bfa16211 Fixes related to estimation under discretion 2020-02-06 13:30:00 +01:00
Johannes Pfeifer 1d1c0ab829 imcforecast.m: make sure that draw index for CIs stays within feasible bounds 2020-02-05 21:18:25 +01:00
Sébastien Villemot d8cd55109c
Testsuite: increase tolerance in unitary tests for prior_draw.m 2020-02-04 21:25:16 +01:00
Houtan Bastani 2ae1bc7770
gui: update call to stoch_simul 2020-02-04 15:57:56 +01:00
Sébastien Villemot 177c5c359f
Implement estimation under discretionary optimal policy
Also add a test case.

For the time being, estimating parameters that appear in the discount factor is
not supported.

Ref. #1173
2020-02-03 18:29:45 +01:00
Stéphane Adjemian (Charybdis) 48b5005ed3
More factorizatiion when calling loadjson_ routine. 2020-02-03 18:12:14 +01:00
Sébastien Villemot 59e11615a0
Discretionary policy: preparatory work for estimation
This removes global variables from discretionary_policy_1.m, and also adapts
the behaviour and interface of the function so that it is similar to
resol.m (in particular, it no longer returns an empty “dr” in case of failure,
and it sets “oo_.dr”).

Ref. #1173
2020-02-03 18:05:29 +01:00
Stéphane Adjemian (Charybdis) 3521e83b26
Factorize calls to loadjson_ routine. 2020-02-02 21:52:44 +01:00
Stéphane Adjemian (Charybdis) 1e0da3a6a7
Removed global. 2020-02-02 21:14:23 +01:00
Johannes Pfeifer 8aad715183 det_cond_forecast.m: always set options_.qz_criterium
Closes https://git.dynare.org/Dynare/dynare/issues/1701
2020-02-02 14:15:01 +01:00
Stéphane Adjemian (Charybdis) 0aa78c6914
Added the possibility to change more than one variable name in an equation. 2020-01-31 18:57:22 +01:00
Stéphane Adjemian (Odysseus) 5289636f69 Do not include the original names of the transformed endogenous variables. 2020-01-30 20:31:21 +01:00
Stéphane Adjemian (Odysseus) 3dbc7640d9 Fixed list of exogenous variables in cherry-picking. 2020-01-30 19:21:50 +01:00
Stéphane Adjemian (Odysseus) 95acf31a69 Fixed optional renaming of the variables. 2020-01-30 11:46:17 +01:00
Sébastien Villemot 6542ce4a16
datatomfile: fix the name of the .mod file at the top of the generated file
With the new layout of the files generated by the preprocessor, it would always
print “driver.m”, which is not very informative.
2020-01-29 21:04:45 +01:00
Stéphane Adjemian (Odysseus) 1c5f6a97c0 Fixed bug in cherry-picking (LHS expressions were wrong).
For instance LHS expression as `diff(log(X))` was replaced by `X` in
the generated model.inc file.
2020-01-29 18:34:26 +01:00
Stéphane Adjemian (Odysseus) b00db0e035 Fixed bug (cannot use a reserved keyword as a tag name). 2020-01-29 18:27:29 +01:00
Stéphane Adjemian (Odysseus) 9590175a9a Fixed loadjson_ routine (when relying on jsondecode).
Fixed issues with escape characters and updated the preprocessor.
2020-01-29 15:54:54 +01:00
Houtan Bastani d527096e61
simplify parsing of MATLAB command line arguments
closes #1696

includes preprocessor changes
- Removed prefixing of doubles between -1 and 1 with 0.
- Fixed bug introduced in 985d742.
- macro processor: simplify handling of `@#define`
2020-01-29 14:56:52 +01:00
Stéphane Adjemian (Odysseus) e39c3bad5b Fixed aggregate if the equation tag name is not available...
... Or has special characters. In this cases we use the LHS variable
as a name for the equation.
2020-01-29 11:38:20 +01:00
Stéphane Adjemian (Odysseus) bb302279ea Do not add tag for block name if rootfolder is empty. 2020-01-29 09:25:23 +01:00
Stéphane Adjemian (Charybdis) d4e16b7ffe
Ensure that the equation tag name matches the LHS variable. 2020-01-28 16:40:31 +01:00
Stéphane Adjemian (Charybdis) dc1b2442db
Added block name to the tags in aggregated models. 2020-01-28 16:40:03 +01:00
Stéphane Adjemian (Charybdis) 32557ce686
Ensure that equations and endogenous variables are unique. 2020-01-28 16:38:15 +01:00
Stéphane Adjemian (Charybdis) 6924e07b20
Use jsondecode to read JSON files if available. 2020-01-28 16:36:40 +01:00
Stéphane Adjemian (Charybdis) 7aeb506143
Updated particles submodule.
[skip ci]
2020-01-27 22:57:41 +01:00
Sébastien Villemot d0dc40c29e Merge branch 'sub_draws' into 'master'
trap error when sub_draws is set to zero

See merge request Dynare/dynare!1699
2020-01-27 17:45:50 +00:00
Sébastien Villemot f9e7ede810 Merge branch 'rescale_prediction_error_covariance' into 'master'
rescale_prediction_error_covariance

See merge request Dynare/dynare!1698
2020-01-27 17:45:38 +00:00
Stéphane Adjemian (Charybdis) 455c806e11
Updated dseries submodule. 2020-01-27 14:03:28 +01:00
Stéphane Adjemian (Charybdis) 3fcca321a2
Bug fixes.
- cherrypick routine was not returning the correct lists of endogenous
   and exogenous variables. The number of endogenous variables was even
   not matching the number of equations.
 - In some cases LHS expressions were not preprocessed to extract the
   name of an endogenous variable.
 - Return a non cryptic error message if more than one endogenous
   variable appears in the LHS.
2020-01-27 14:02:03 +01:00
Stéphane Adjemian (Charybdis) 7e849f01ad
Code factorization. 2020-01-27 14:02:03 +01:00
Willi Mutschler 3ecc44b542 Fix minimal state space test files for old matlab 2020-01-26 16:00:02 +00:00
Marco Ratto 73291b0b19 before issuing F singularity, check with rescaled F matrix: this spares lots of computing time when singularity only happens in the first KF step. 2020-01-24 14:17:26 +01:00
Willi Mutschler e843ccbd0d
📃 Update license 2020-01-24 12:45:20 +01:00
Willi Mutschler aa0f278edc
📃 Update license 2020-01-24 12:45:15 +01:00
Willi Mutschler 5525a7c515
🏇 Better minimal state space handling and unit tests 2020-01-24 12:45:08 +01:00
Willi Mutschler 1aa3dda449
🚿 construct list of fields needed from M_, options_, oo_
Get fields
2020-01-24 12:45:01 +01:00
Willi Mutschler 46c4dea559
📄 Updated code comments 2020-01-24 12:44:54 +01:00
Willi Mutschler a62e69cf39
🐛 fix identification strength barplots for one parameter 2020-01-24 12:44:34 +01:00
Willi Mutschler c4f7c416fa
🐛 Fix #1694 by robust rank tolerance and histc 2020-01-24 12:44:26 +01:00
Marco Ratto 79cca46dd6 trap error when sub_draws is set to zero 2020-01-24 10:22:24 +01:00
Sébastien Villemot d3e90a8dbf
Fix the handling of options nopreprocessoroutput, onlyjson and onlymacro when they appear at the top of the .mod file
The nopathchange is still not supported in this context, so document it.

Also recommend the whitespace-separated syntax instead of the comma-separated
syntax, since the latter is inconsistent with the way options are passed on the
command-line.

Closes: #1667
2020-01-23 18:58:08 +01:00
Sébastien Villemot 09be021dcd
Add license header for allVL1.m
Ref. #1689
2020-01-22 18:03:47 +01:00
Sébastien Villemot 808119b1ad
Various fixes to the license.txt file
In particular, merge back preprocessor information.
2020-01-22 18:03:33 +01:00
Sébastien Villemot fd115c22e7
Restore the BSD-2-clause license header of two files
Those had been incorrectly converted to GPL-3+ in commit
1bf81c9f5a.
2020-01-22 16:53:22 +01:00
Sébastien Villemot 9f51b2508a
Disable spurious warnings as early as possible
This is necessary for Octave under Windows, to avoid a warning about isdir()
triggered by user_has_octave_forge_package.m.
2020-01-21 18:39:33 +01:00
Sébastien Villemot e371b1a94b
New option “filtered_theoretical_moments_grid”, that supersedes “hp_ngrid”
The old option is left for backward-compatibility purposes, but it has the same
effect as the new one.

Closes: #1093
2020-01-20 16:23:10 +01:00
Stéphane Adjemian (Charybdis) e92fa493a2
Updated dseries submodule. 2020-01-17 18:43:11 +01:00
Stéphane Adjemian (Charybdis) 4ff0b66a8c
Updated dseries submodule (bug fix in merge method).
[skip ci]
2020-01-17 18:27:49 +01:00
Sébastien Villemot 048564c97b
MATLAB compatibility fix: R2014a is 8.3, not 8.4 2020-01-16 16:54:47 +01:00
Sébastien Villemot 1912f67778
MATLAB compatibility fix: automatic broadcasting was introduced in R2016b
For earlier versions, either use bsxfun or handle special cases differently.
2020-01-13 18:30:28 +01:00
Sébastien Villemot 8fff99115a
MATLAB compatibility fix: double-quoted strings only accepted since R2017a 2020-01-13 18:30:28 +01:00
Sébastien Villemot d9b9f78392 Merge branch 'particle_check' into 'master'
Particle filters: provide error if trends or prefiltering is used

Closes #1690

See merge request Dynare/dynare!1695
2020-01-13 11:02:29 +00:00
Johannes Pfeifer 03a8759560 Particle filters: provide error if trends or prefiltering is used
Closes https://git.dynare.org/Dynare/dynare/issues/1690
2020-01-10 19:08:51 +01:00
Sébastien Villemot 7e770f69e7
Remove workaround for errors in MEX files
Because at some point throwing exceptions from MEX files (with mexErrMsgTxt())
was not working under Windows 64-bit, we had designed a workaround to avoid
using exceptions.

Most MEX files were returning an error code as their first (or sometimes last)
argument, and that code would have to be checked from the MATLAB code.

Since this workaround is no longer needed, this commit removes it. As a
consequence, the interface of many MEX files is modified.

For some background, see https://www.dynare.org/pipermail/dev/2010-September/000895.html
2020-01-10 18:33:11 +01:00
Stéphane Adjemian (Charybdis) 3e408ffd6b
Updated dseries submodule (flip method and geometric nanmean).
[skip ci]
2020-01-09 19:16:15 +01:00
Stéphane Adjemian (Charybdis) 274b9371f3
Updated dseries submodule. 2020-01-09 17:54:38 +01:00
Stéphane Adjemian (Charybdis) b33c2c3ce2
Updated dseries submodule (bug fixes in backcast method). 2020-01-06 18:38:20 +01:00
Sébastien Villemot 4e314a529b
Bump minimal required Octave version to 4.4 2020-01-06 18:29:47 +01:00
Sébastien Villemot a95358accc Merge branch 'sim1' into 'master'
sim1.m: provide missing function input to nested function

See merge request Dynare/dynare!1691
2020-01-06 13:22:29 +00:00
Houtan Bastani bf102030cb
support saving exogenous variables in `dynasave`, `dynasave`; fix bugs in `dynasave`; add test
- `dynasave`: if a variable being saved was named `n` or `s`, the `eval` statements would break the code
- `dynasave`: use the `-struct` option to `save` to avoid `eval` statements
- `dynasave` and `dynatype`: do everything in 1 loop instead of 2
- `dynasave` and `dynatype`: use `strcmp` instead of `strfind`

- preprocessor update contains:
  - Partial reversion of global indentation of macro processor header files introduced in e2d5a83592634f0604d8c86409748cd2ec5906d2
  - Symbol List check pass: allow caller to specify the valid types of variables in a Symbol List
  - Allow `dynasave` and `dynatype` to support exogenous variables in their var_list

issue #1691
2020-01-06 12:45:44 +01:00
Stéphane Adjemian (Charybdis) a40a940d51
Same as 8aa86a22 in Iterative OLS. 2020-01-06 11:03:58 +01:00
Stéphane Adjemian (Charybdis) 8aa86a2244
Save the list of parameter names in pac estimation results (NLS). 2020-01-06 11:03:26 +01:00
Johannes Pfeifer 632c0a3943 sim1.m: provide missing function input to nested function 2020-01-06 09:06:18 +01:00
Marco Ratto 2134f2616d
for parallel execution we need to initialize also prior_draw (used in slice sampler). 2020-01-02 17:48:29 +01:00
Sébastien Villemot 49dc997073
Global reindentation of MATLAB code (excluding submodules)
Also convert to Unix end-of-lines, and remove trailing whitespaces.
2019-12-20 16:30:27 +01:00
Willi Mutschler 45e9771eb8
Fixed bug regarding non-stationary variables in pruned moments 2019-12-20 12:30:53 +01:00
Willi Mutschler 8b9b49f8d7
Finished identification order=1|2|3
Note that I still need to do a code clean up (provide some licenses for functions from other people) and to double check order=3. There is also much room for speed and memory improvement, but the code works fine for now. I will also provide more information to the merge request soon about the detailed changes for future reference.
2019-12-20 12:28:55 +01:00
Sébastien Villemot c04c111d97
Merge branch 'rattoma/dynare-epilogue'
Ref. !1688
2019-12-20 11:51:41 +01:00
Stéphane Adjemian (Charybdis) b5d4b4059b Return an error if pruning is used with order>3 in estimation. 2019-12-20 11:31:56 +01:00
Stéphane Adjemian (Charybdis) 031569fa96 Allow higher order approximations in nonlinear filters. 2019-12-20 11:31:56 +01:00
Stéphane Adjemian (Charybdis) 227b2661cb Do not trap order>2 in estimation. 2019-12-20 11:31:56 +01:00
Stéphane Adjemian (Charybdis) 4e0deb7987 Removed persistent variables. 2019-12-20 11:31:56 +01:00
Stéphane Adjemian (Charybdis) 76e3c6ca68 Removed unnecessary parts of the code.
- Call resol instead of dynare_resolve.
 - Removed definition of constant and trend which are not used in nonlinear filters.
 - Cosmetic changes.
2019-12-20 11:31:56 +01:00
Stéphane Adjemian (Charybdis) 6418e225bf Rewrote doc header. 2019-12-20 11:31:56 +01:00
Sébastien Villemot 996bdd6c64 New local_state_space_iteration_k MEX, for nonlinear filters at k-order
It applies the approximated policy function to a set of particles, using
Dynare++ routines.

There is support for parallelization, using Dynare++ multithreading
model (itself based on C++11 threads; we don’t use OpenMP because it is
incompatible with MKL). For the time being, default to a single thread. This
should be later refined through empirical testing.
2019-12-20 11:31:56 +01:00
Houtan Bastani f8fb8c0450
add missing comments/copyright to function 2019-12-20 10:37:06 +01:00
Marco Ratto 31c29d08c9 provisions for making shock decompositions for epilogue variables.
In case the epilogue formula is non-linear, the non additive non-linear term is distributed proportionally to the size of the individual shock contribution.
It is triggered by new option with_epilogue, applicable to commands:
1) shock_decomposition, realtime_shock_decomposition,
where preprocessor should trigger
options_.shock_decomp.with_epilogue=true;
2) initial_condition_decomposition
where preprocessor should trigger
options_.initial_condition_decomp.with_epilogue=true;
2019-12-19 22:19:39 +01:00
Marco Ratto aa50724379 Changed cumfix==0: splits non-additive components proportionally to size of shock contribution 2019-12-19 22:15:04 +01:00
Sébastien Villemot 1ac7344e42
Rollback introduction of +get and +set folders
Under Octave, having namespaces called “get” and “set” overshadows the builtin
functions with the same names, which are needed for graphics manipulation.

Therefore we go back to the initial function naming scheme, but moving all
those functions under an “accessors” subdirectory.

Among other things, this is a revert of
e4134ab59b and
c5e86fcb59.

Ref. !1655, !1686
2019-12-19 17:20:38 +01:00
Sébastien Villemot efa6c6c682
“datafile” option of “perfect_foresight_setup” (and “simul”) now equivalent to “initval_file”
Ref. #1663
2019-12-19 14:58:54 +01:00
Sébastien Villemot 0ba453dd0a
Fix file permissions 2019-12-19 10:47:55 +01:00
Sébastien Villemot 2c9ea629bd Merge branch 'utilsx' into 'master'
Moved get and set utilities to +get and +set

See merge request Dynare/dynare!1686
2019-12-19 09:42:19 +00:00
Sébastien Villemot 6ba10b88f2
Preprocessor: various provisions for improvements to shock decomposition
Accordingly update the MATLAB routines, the testsuite, and the manual.

In particular, “squeeze_shock_decomp” has been renamed to
“squeeze_shock_decomposition” for consistency with other commands.

Ref. #1687, !1655
2019-12-18 11:56:57 +01:00
Marco Ratto a6e3e7256a trap possible issues in slice iterations and save info file on progress 2019-12-17 23:24:48 +01:00
Sébastien Villemot e2f91abcaf Merge branch 'master' into 'master'
utilities + plot shock decompositions + init condition decompositions

See merge request Dynare/dynare!1655
2019-12-17 18:21:31 +00:00
Willi Mutschler 5a8c206760 Added parameter derivatives of perturbation solution up to 3 order
# Preliminary comments
I finished the identification toolbox at orders two and three using the pruned state space system, but before I merge request this, I decided to first merge the new functionality to compute parameter derivatives of perturbation solution matrices at higher orders. So after this is approved, I merge the identification toolbox.
I guess @rattoma, @sebastien, and @michel are best choices to review this.
I outline the main idea first and then provide some more detailed changes I made to the functions.

***

# Main idea
This merge request is concerned with the *analytical*computation of the parameter derivatives of first, second and third order perturbation solution matrices, i.e. using _closed-form_ expressions to efficiently compute the derivative of  $g_x$ , $g_u$, $g_{xx}$, $g_{xu}$, $g_{uu}$, $g_{\sigma\sigma}$, $g_{xxx}$, $g_{xxu}$, $g_{xuu}$, $g_{uuu}$, $g_{x\sigma\sigma}$, $g_{u\sigma\sigma}$ *with respect to model parameters*  $\theta$.  Note that $\theta$ contains model parameters, stderr and corr parameters of shocks. stderr and corr parameters of measurement errors are not yet supported, (they can easily be included as exogenous shocks). The availability of such derivatives is beneficial in terms of more reliable analysis of model sensitivity and parameter identifiability as well as more efficient estimation methods, in particular for models solved up to third order, as it is well-known that numerical derivatives are a tricky business, especially for large models.

References for my approach are:
* Iskrev (2008, 2010) and Schmitt-Grohé and Uribe (2012, Appendix)  who were the first to compute the parameter derivatives analytically at first order, however, using inefficient (sparse) Kronecker products.
* Mutschler (2015) who provides the expressions for a second-order, but again using inefficient (sparse) Kronecker products.
* Ratto and Iskrev (2012) who show how the first-order system can be solved accurately, fast and efficiently using existing numerical algorithms for generalized Sylvester equations by taking the parameter derivative with respect to each parameter separately.
* Julliard and Kamenik (2004) who provide the perturbation solution equation system in tensor notation at any order k.
* Levintal (2017) who introduces permutation matrices to express the perturbation solution equation system in matrix notation up to fifth order.
Note that @rattoma already implemented the parameter derivatives of $g_x$ and $g_u$ analytically (and numerically), and I rely heavily on his work in `get_first_order_solution_params_derivs.m` (previously `getH.m`). My additions are mainly to this function and thus it is renamed to `get_perturbation_params_derivs.m`.

The basic idea of this merge request is to take the second- and third-order perturbation solution systems in Julliard and Kamenik (2004), unfold these into an equivalent matrix representation using permutation matrices as in Levintal (2017). Then extending Ratto and Iskrev (2012) one takes the derivative with respect to each parameter separately and gets a computational problem that is linear, albeit large, as it involves either solving generalized Sylvester equations or taking inverses of highly sparse matrices. I will now briefly summarize the perturbation solution system at third order and the system that results when taking the derivative with respect to parameters.

## Perturbation Solution
The following systems arise at first, second, and third order:
$(ghx): f_{x} z_{x} = f_{y_{-}^*} + f_{y_0} g_{x} + f_{y_{+}^{**}} g^{**}_{x} g^{*}_{x}= A g_{x} + f_{y_{-}^*}=0$

$(ghu): f_{z} z_{u} = f_{y_0} g_{u} + f_{y_{+}^{**}} g^{**}_{x} g^{*}_{u} + f_{u}= A g_u + f_u = 0$

$(ghxx) : A g_{xx} + B g_{xx} \left(g^{*}_{x} \otimes g^{*}_{x}\right) + f_{zz} \left( z_{x} \otimes z_{x} \right) = 0$

$(ghxu) : A g_{xu} + B g_{xx} \left(g^{*}_{x} \otimes g^{*}_{u}\right) + f_{zz} \left( z_{x} \otimes z_{u} \right) = 0$

$(ghuu) : A g_{uu} + B g_{xx} \left(g^{*}_{u} \otimes g^{*}_{u}\right) + f_{zz} \left( z_{u} \otimes z_{u} \right) = 0$

$(ghs2) : (A+B) g_{\sigma\sigma} +  \left( f_{y^{**}_{+}y^{**}_{+}} \left(g^{**}_{u} \otimes g^{**}_{u}\right) + f_{y^{**}_{+}} g^{**}_{uu}\right)vec(\Sigma) = 0$

$(ghxxx) : A g_{xxx} + B g_{xxx} \left(g^{*}_{x} \otimes g^{*}_{x} \otimes g^{*}_{x}\right) + f_{y_{+}}g^{**}_{xx} \left(g^{*}_x \otimes g^{*}_{xx}\right)P_{x\_xx} + f_{zz} \left( z_{x} \otimes z_{xx} \right)P_{x\_xx} + f_{zzz} \left( z_{x} \otimes z_{x} \otimes z_{x} \right) = 0$

$(ghxxu) : A g_{xxu} + B g_{xxx} \left(g^{*}_{x} \otimes g^{*}_{x} \otimes g^{*}_{u}\right) + f_{zzz} \left( z_{x} \otimes z_{x} \otimes z_{u} \right) + f_{zz} \left( \left( z_{x} \otimes z_{xu} \right)P_{x\_xu} + \left(z_{xx} \otimes z_{u}\right) \right) + f_{y_{+}}g^{**}_{xx} \left( \left(g^{*}_{x} \otimes g^{*}_{xu}\right)P_{x\_xu} + \left(g^{*}_{xx} \otimes g^{*}_{u}\right) \right) = 0$

$(ghxuu) : A g_{xuu} + B g_{xxx} \left(g^{*}_{x} \otimes g^{*}_{u} \otimes g^{*}_{u}\right) + f_{zzz} \left( z_{x} \otimes z_{u} \otimes z_{u} \right)+ f_{zz} \left( \left( z_{xu} \otimes z_{u} \right)P_{xu\_u} + \left(z_{x} \otimes z_{uu}\right) \right) + f_{y_{+}}g^{**}_{xx} \left( \left(g^{*}_{xu} \otimes g^{*}_{u}\right)P_{xu\_u} + \left(g^{*}_{x} \otimes g^{*}_{uu}\right) \right) = 0$

$(ghuuu) : A g_{uuu} + B g_{xxx} \left(g^{*}_{u} \otimes g^{*}_{u} \otimes g^{*}_{u}\right) + f_{zzz} \left( z_{u} \otimes z_{u} \otimes z_{u} \right)+ f_{zz} \left( z_{u} \otimes z_{uu} \right)P_{u\_uu} + f_{y_{+}}g^{**}_{xx} \left(g^{*}_{u} \otimes g^{*}_{uu}\right)P_{u\_uu}  = 0$

$(ghx\sigma\sigma) : A g_{x\sigma\sigma} + B g_{x\sigma\sigma} g^{*}_x + f_{y_{+}} g^{**}_{xx}\left(g^{*}_{x} \otimes g^{*}_{\sigma\sigma}\right) + f_{zz} \left(z_{x} \otimes z_{\sigma\sigma}\right) + F_{xu_{+}u_{+}}\left(I_{n_x} \otimes vec(\Sigma)\right) = 0$
$F_{xu_{+}u_{+}} = f_{y_{+}^{\ast\ast}} g_{xuu}^{\ast\ast} (g_x^{\ast} \otimes I_{n_u^2}) + f_{zz} \left( \left( z_{xu_{+}} \otimes z_{u_{+}} \right)P_{xu\_u} + \left(z_{x} \otimes z_{u_{+}u_{+}}\right) \right) + f_{zzz}\left(z_{x} \otimes z_{u_{+}} \otimes z_{u_{+}}\right)$

$(ghu\sigma\sigma) : A g_{u\sigma\sigma} + B g_{x\sigma\sigma} g^{*}_{u} + f_{y_{+}} g^{**}_{xx}\left(g^{*}_{u} \otimes g^{*}_{\sigma\sigma}\right) + f_{zz} \left(z_{u} \otimes z_{\sigma\sigma}\right) + F_{uu_{+}u_{+}}\left(I_{n_u} \otimes vec(\Sigma_u)\right) = 0$
$F_{uu_{+}u_{+}} = f_{y_{+}^{\ast\ast}} g_{xuu}^{\ast\ast} (g_u^{\ast} \otimes I_{n_u^2})  + f_{zz} \left( \left( z_{uu_{+}} \otimes z_{u_{+}} \right)P_{uu\_u} + \left(z_{u} \otimes z_{u_{+}u_{+}}\right) \right) + f_{zzz}\left(z_{u} \otimes z_{u_{+}} \otimes z_{u_{+}}\right)$

A and B are the common perturbation matrices:

$A = f_{y_0} + \begin{pmatrix} \underbrace{0}_{n\times n_{static}} &\vdots& \underbrace{f_{y^{**}_{+}} \cdot g^{**}_{x}}_{n \times n_{spred}} &\vdots& \underbrace{0}_{n\times n_{frwd}}  \end{pmatrix}$and $B = \begin{pmatrix} \underbrace{0}_{n \times n_{static}}&\vdots & \underbrace{0}_{n \times n_{pred}} & \vdots & \underbrace{f_{y^{**}_{+}}}_{n \times n_{sfwrd}} \end{pmatrix}$

and $z=(y_{-}^{\ast}; y; y_{+}^{\ast\ast}; u)$ denotes the dynamic model variables as in `M_.lead_lag_incidence`, $y^\ast$ denote state variables, $y^{\ast\ast}$ denote forward looking variables, $y_+$ denote the variables with a lead, $y_{-}$ denote variables with a lag, $y_0$ denote variables at period t, $f$ the model equations, and $f_z$ the first-order dynamic model derivatives, $f_{zz}$ the second-order dynamic derivatives, and $f_{zzz}$ the third-order dynamic model derivatives. Then:
$z_{x} = \begin{pmatrix}I\\g_{x}\\g^{**}_{x} g^{*}_{x}\\0\end{pmatrix}$, $z_{u} =\begin{pmatrix}0\\g_{u}\\g^{**}_{x} \cdot g^{*}_{u}\\I\end{pmatrix}$, $z_{u_{+}} =\begin{pmatrix}0\\0\\g^{**}_{u}\\0\end{pmatrix}$
$z_{xx} = \begin{pmatrix} 0\\g_{xx}\\g^{**}_{x} \left( g^{*}_x \otimes g^{*}_{x} \right) + g^{**}_{x} g^{*}_{x}\\0\end{pmatrix}$, $z_{xu} =\begin{pmatrix}0\\g_{xu}\\g^{**}_{xx} \left( g^{*}_x \otimes g^{*}_{u} \right) + g^{**}_{x} g^{*}_{xu}\\0\end{pmatrix}$, $z_{uu} =\begin{pmatrix}0\\g_{uu}\\g^{**}_{xx} \left( g^{*}_u \otimes g^{*}_{u} \right) + g^{**}_{x} g^{*}_{uu}\\0\end{pmatrix}$,
$z_{xu_{+}} =\begin{pmatrix}0\\0\\g^{**}_{xu} \left( g^{*}_x \otimes I \right)\\0\end{pmatrix}$, $z_{uu_{+}} =\begin{pmatrix}0\\0\\g^{**}_{xu} \left( g^{*}_{u} \otimes I \right)\\0\end{pmatrix}$, $z_{u_{+}u_{+}} =\begin{pmatrix}0\\0\\g^{\ast\ast}_{uu}\\0\end{pmatrix}$, $z_{\sigma\sigma} = \begin{pmatrix}0\\ g_{\sigma\sigma}\\ g^{\ast\ast}_{x}g^{\ast}_{\sigma\sigma} + g^{\ast\ast}_{\sigma\sigma}\\0 \end{pmatrix}$

$P$ are permutation matrices that can be computed using Matlab's `ipermute` function.

## Parameter derivatives of perturbation solutions
First, we need the parameter derivatives of first, second, third, and fourth derivatives of the dynamic model (i.e. g1,g2,g3,g4 in dynamic files), I make use of the implicit function theorem: Let $f_{z^k}$ denote the kth derivative (wrt all dynamic variables) of the dynamic model, then let $df_{z^k}$ denote the first-derivative (wrt all model parameters) of $f_{z^k}$ evaluated at the steady state. Note that $f_{z^k}$  is a function of both the model parameters $\theta$  and of the steady state of all dynamic variables $\bar{z}$, which also depend on the parameters. Hence, implicitly $f_{z^k}=f_{z^k}(\theta,\bar{z}(\theta))$  and $df_{z^k}$ consists of two parts:
1. direct derivative wrt to all model parameters given by the preprocessor in the `_params_derivs.m` files
2. contribution of derivative of steady state of dynamic variables (wrt all model parameters): $f_{z^{k+1}} \cdot d\bar{z}$
Note that we already have functionality to compute $d\bar{z}$ analytically.

Having this, the above perturbation systems are basically equations of the following types
$AX +BXC = RHS$ or $AX = RHS$
Now when taking the derivative (wrt to one single parameter $\theta_j$), we get
$A\mathrm{d}\{X\} + B\mathrm{d}\{X\}C = \mathrm{d}\{RHS\} - \mathrm{d}\{A\}X -  \mathrm{d}\{B\}XC - BX\mathrm{d}\{C\}$
or
$A\mathrm{d}\{X\}  = \mathrm{d}\{RHS\} - \mathrm{d}\{A\}X$
The first one is a Sylvester type equation, the second one can be solved by taking the inverse of $A$. The only diffculty and tedious work arrises in computing (the highly sparse) derivatives of $RHS$.

***

# New functions: `
## get_perturbation_params_derivs.m`and `get_perturbation_params_derivs_numerical_objective.m`
* The parameter derivatives up to third order are computed in the new function`get_perturbation_params_derivs.m` both analytically and numerically. For numerical derivatives `get_perturbation_params_derivs_numerical_objective.m` is the objective for `fjaco.m` or `hessian_sparse.m` or `hessian.m`.
* `get_perturbation_params_derivs.m` is basically an extended version of the previous `get_first_order_solution_params_derivs.m` function.
* * `get_perturbation_params_derivs_numerical_objective.m`builds upon `identification_numerical_objective.m`. It is used for numerical derivatives, whenever `analytic_derivation_mode=-1|-2`. It takes from `identification_numerical_objective.m` the parts that compute numerical parameter Jacobians of steady state, dynamic model equations, and perturbation solution matrices. Hence, these parts are removed in `identification_numerical_objective.m` and it only computes numerical parameter Jacobian of moments and spectrum which are needed for identification analysis in `get_identification_jacobians.m`, when `analytic_derivation_mode=-1` only.
* Detailed changes:
      * Most important: notation of this function is now in accordance to the k_order_solver, i.e. we do not compute derivatives of Kalman transition matrices A and B, but rather the solution matrices ghx,ghu,ghxx,ghxu,ghuu,ghs2,ghxxx,ghxxu,ghxuu,ghuuu,ghxss,ghuss in accordance with notation used in `oo_.dr`. As a byproduct at first-order, focusing on ghx and ghu instead of Kalman transition matrices A and B makes the computations slightly faster for large models (e.g. for Quest the computations were faster by a couple of seconds, not much, but okay).
      * Removed use of `kstate`, see also Dynare/dynare#1653 and Dynare/dynare!1656
      * Output arguments are stored in a structure `DERIVS`, there is also a flag `d2flag` that computes parameter hessians needed only in `dsge_likelihood.m`.
      * Removed `kronflag` as input. `options_.analytic_derivation_mode` is now used instead of `kronflag`.
      * Removed `indvar`, an index that was used to selected specific variables in the derivatives. This is not needed, as we always compute the parameter derivatives for all variables first and then select a subset of variables. The selection now takes place in other functions, like `dsge_likelihood.m`.
      * Introduced some checks: (i) deterministic exogenous variables are not supported, (ii) Kronecker method only compatible with first-order approximation so reset to sylvester method, (iii) for purely backward or forward models we need to be careful with the rows in `M_.lead_la	g_incidence`, (iv) if `_params_derivs.m` files are missing an error is thrown.
      * For numerical derivatives, if mod file does not contain an `estimated_params_block`, a temporary one with the most important parameter information is created.
## `unfold_g4.m`
* When evaluating g3 and g4 one needs to take into account that these do not contain symmetric elements, so one needs to use `unfold_g3.m` and the new function `unfold_g4.m`. This returns an unfolded version of the same matrix (i.e. with symmetric elements).

***

# New test models
`.gitignore` and `Makefile.am` are changed accordingly. Also now it is possible to run test suite on analytic_derivatives, i.e. run `make check m/analytic_derivatives`

## `analytic_derivatives/BrockMirman_PertParamsDerivs.mod`
* This is the Brock Mirman model, where we know the exact policy function $g$ for capital and consumption. As this does not imply a nonzero $g_{\sigma\sigma}$, $g_{x\sigma\sigma}$, $g_{u\sigma\sigma}$ I added some artificial equations to get nonzero solution matrices with respect to $\sigma$. The true perturbation solution matrices  $g_x$ , $g_u$, $g_{xx}$, $g_{xu}$, $g_{uu}$, $g_{\sigma\sigma}$, $g_{xxx}$, $g_{xxu}$, $g_{xuu}$, $g_{uuu}$, $g_{x\sigma\sigma}$, $g_{u\sigma\sigma}$ are then computed analytically with Matlab's symbolic toolbox and saved in `nBrockMirmanSYM.mat`. There is a preprocessor flag that recreates these analytical computations if changes are needed (and to check whether I made some errors here ;-) )
* Then solution matrices up to third order and their parameter Jacobians are then compared to the ones computed by Dynare's `k_order_solver` and by `get_perturbation_params_derivs` for all `analytic_derivation_mode`'s. There will be an error if the maximum absolute deviation is too large, i.e. for numerical derivatives (`analytic_derivation_mode=-1|-2`) the tolerance is choosen lower (around 1e-5); for analytical methods we are stricter: around 1e-13 for first-order,  1e-12 for second order, and 1e-11 for third-order.
* As a side note, this mod file also checks Dynare's `k_order_solver` algorithm and throws an error if something is wrong.
* This test model shows that the new functionality works well. And analytical derivatives perform way better and accurate than numerical ones, even for this small model.
## `analytic_derivatives/burnside_3_order_PertParamsDerivs.mod`
* This builds upon `tests/k_order_perturbation/burnside_k_order.mod` and computes the true parameter derivatives analytically by hand.
      * This test model also shows that the new functionality works well.

## `analytic_derivatives/LindeTrabandt2019.mod`
* Shows that the new functionality also works for medium-sized models, i.e. a SW type model solved at third order with 35 variables (11 states). 2 shocks and 20 parameters.
* This mod file can be used to tweak the speed of the computations in the future.
* Compares numerical versus analytical parameter derivatives (for first, second and third order). Note that this model clearly shows that numerical ones are quite different than analytical ones even at first order!
## `identification/LindeTrabandt2019_xfail.mod`
* This model is a check for issue Dynare/dynare#1595, see fjaco.m below, and will fail.
* Removed `analytic_derivatives/ls2003.mod` as this mod file is neither in the testsuite nor does it work.

***

# Detailed changes in other functions
## `get_first_order_solution_params_derivs.m`
* Deleted, or actually, renamed to `get_perturbation_params_derivs.m`, as this function now is able to compute the derivatives up to third order

## `identification_numerical_objective.m`
* `get_perturbation_params_derivs_numerical_objective.m`builds upon `identification_numerical_objective.m`. It takes from `identification_numerical_objective.m` the parts that compute numerical parameter Jacobians of steady state, dynamic model equations, and perturbation solution matrices. Hence, these parts are removed in `identification_numerical_objective.m` and it only computes numerical parameter Jacobian of moments and spectrum which are needed for identification analysis in `get_identification_jacobians.m`, when `analytic_derivation_mode=-1` only.

## `dsge_likelihood.m`
* As `get_first_order_solution_params_derivs.m`is renamed to `get_perturbation_params_derivs.m`, the call is adapted. That is,`get_perturbation_params_derivs` does not compute the derivatives of the Kalman transition `T`matrix anymore, but instead of the dynare solution matrix `ghx`. So we recreate `T` here as this amounts to adding some zeros and focusing on selected variables only.
* Added some checks to make sure the first-order approximation is selected.
* Removed `kron_flag` as input, as `get_perturbation_params_derivs` looks into `options_.analytic_derivation_mode` for `kron_flag`.

## `dynare_identification.m`
* make sure that setting `analytic_derivation_mode` is set both in `options_ident` and `options_`. Note that at the end of the function we restore the `options_` structure, so all changes are local. In a next merge request, I will remove the global variables to make all variables local.

## `get_identification_jacobians.m`
* As `get_first_order_solution_params_derivs.m`is renamed to `get_perturbation_params_derivs.m`, the call is adapted. That is,`get_perturbation_params_derivs` does not compute the derivatives of the Kalman transition `A` and `B` matrix anymore, but instead of the dynare solution matrix `ghx` and `ghu`. So we recreate these matrices here instead of in `get_perturbation_params_derivs.m`.
* Added `str2func` for better function handles in `fjaco.m`.

## `fjaco.m`
* make `tol`an option, which can be adjusted by changing `options_.dynatol.x`for identification and parameter derivatives purposes.
* include a check and an informative error message, if numerical derivatives (two-sided finite difference method) yield errors in `resol.m` for identification and parameter derivatives purposes. This closes issue  Dynare/dynare#1595.
* Changed year of copyright to 2010-2017,2019

***

# Further suggestions and questions
* Ones this is merged, I will merge request an improvement of the identification toolbox, which will work up to third order using the pruned state space. This will also remove some issues and bugs, and also I will remove global variables in this request.
* The third-order derivatives can be further improved by taking sparsity into account and use mex versions for kronecker products etc. I leave this for further testing (and if anybody actually uses this ;-) )
2019-12-17 18:17:09 +00:00
Marco Ratto c5e86fcb59 Moved
get_param_by_name --> get.param_by_name
set_param_value --> set.param_value
plus the additional set utility:
set.shock_stderr_value
\
2019-12-17 17:42:25 +01:00
Marco Ratto 9f721c5763 renamed utilities to +get format 2019-12-17 09:44:15 +01:00
Sébastien Villemot 279bb7bc16 Merge branch 'mh_recover' into 'master'
make mh_recover robust to crashed parallel jobs

See merge request Dynare/dynare!1684
2019-12-16 09:30:48 +00:00
Marco Ratto 9a07171a7c trap case where there is no list of variables to squeeze 2019-12-15 17:05:47 +01:00
Marco Ratto 65d72866c3 provisions for squeeze when oo_ is output argument of plot_shock_decomposition.
Also trap with error situation when new computations are triggered after having squeezed results in oo_.
2019-12-15 16:53:43 +01:00
Marco Ratto 17e87e2a4c added steady state info on xls file shock decomposition 2019-12-15 15:40:10 +01:00
Marco Ratto 4c6b803945 use optional variable list as fourth input argument, to complement automatic list based on options_.plot_shock_decomp.i_var. 2019-12-15 15:40:10 +01:00
Marco Ratto 44eae1300d trap plot_end_date larger than actual length of smoother 2019-12-15 15:40:10 +01:00
Marco Ratto eb73cf4273 implement provisions for options_.no_graph.plot_shock_decomposition 2019-12-15 15:40:10 +01:00
Marco Ratto 83f38c9533 check also whether shock_decomposition field exists (happens when skipinsample=0 and realtime=1) 2019-12-15 15:40:10 +01:00
Marco Ratto 71fa8cac9f fixed bug with steady state of annualized variables requiring auxiliary while doing expand 2019-12-15 15:40:10 +01:00
Marco Ratto ac511ca756 bug fix for computing shock decomp for auxiliary variable with groups 2019-12-15 15:40:10 +01:00
Marco Ratto c8c473cc60 provisions for changing the preprocessor call to plot_shock_decoposition with one output argument 2019-12-15 15:40:10 +01:00
Marco Ratto 6932ac4993 fixed name of new option to a more meaningful one: max_nrows. 2019-12-15 15:40:10 +01:00
Marco Ratto 019545e2b3 fixed bugs in interactive mode of plot shock decomp that led to crashed with aoa 2019-12-15 15:40:10 +01:00
Marco Ratto 2d1402b899 to reduce memory in oo_, only store results for periods specified in save_realtime 2019-12-15 15:40:10 +01:00
Marco Ratto cc11a054c4 when varlist=0, we only compute decomposition and return restuls in oo_ without plotting. useful when squeezed oo_ misses initval decomp for requested variables. 2019-12-15 15:40:10 +01:00
Marco Ratto 7d70a1917b fixed bug of aoa with aux variable. completed computation of annualized_realtime_forecast_shock_decomposition.pool which so far triggered an error (vintage=0 in realtime shock decomp) 2019-12-15 15:40:10 +01:00
Marco Ratto 8b9d7490e3 plot_shock_decomposition stores info of plotted variables. This can be optionally used by squeeze_shock_decomp to store in oo_ only variables plotted so far. Users can optionally define the list of vars to sotre in squeezed oo_ for shock decomps. Also allow aoa plots for lists of input variables. fixed error in wrong field name var_type of q2a. fixed aoa call, storing the wrong decomp data for interactive mode. 2019-12-15 15:40:10 +01:00
Marco Ratto f167c01eee trap case when option is cell 2019-12-15 15:40:10 +01:00
Marco Ratto 3cbb039fbf utilities to get steadystate smoothed updated of endogenous by name, irfs by shock and endo name, shock std err by shock name 2019-12-15 15:40:10 +01:00
Sébastien Villemot 416532b6c3
dseries: new “nanmean” and “backcast” methods 2019-12-14 11:11:31 +01:00
Stéphane Adjemian (Charybdis) 4b7f8f21d8 Updated dseries submodule (Fixes for Octave and old Matlab versions). 2019-12-14 10:43:54 +01:00
Sébastien Villemot 7170ac0423 Merge branch 'ramsey' into 'master'
New Ramsey syntax

See merge request Dynare/dynare!1685
2019-12-13 17:32:42 +00:00
Sébastien Villemot ce4aa9a8e1
Preprocessor update
— deprecation warning for “simul” (#1683)
— Ramsey: use information from transformed model for filling
  M_.nonzero_hessian_eqs. (Closes: #1681)
  Also, M_.hessian_eq_zero is not generated if order = 1
— New field M_.endo_trends (#1648)
2019-12-13 18:22:12 +01:00
Stéphane Adjemian (Charybdis) 4fb7ec7f4c Updated dseries submodule (added backcast method). 2019-12-13 14:59:14 +01:00
Johannes Pfeifer c0c3a4c05c evaluate_planner_objective.m: add warning if order>1 is used
Also modernizes output format
2019-12-13 14:37:00 +01:00
Marco Ratto da4baa5d50 make mh_recover robust to crashed parallel jobs 2019-12-12 22:24:30 +01:00
Sébastien Villemot 6b308ccbd8 Merge branch 'dynare_solve' into 'master'
dynare_solve.m: return with valid solution even if Jacobian is ill-behaved

See merge request Dynare/dynare!1682
2019-12-12 20:06:38 +00:00