diff --git a/doc/manual/source/the-model-file.rst b/doc/manual/source/the-model-file.rst index dedafd797f292db54b5963e358eec04c59ebc66a..6ed77ce8de920a3a70e52e8974a34f6e16058b0f 100644 --- a/doc/manual/source/the-model-file.rst +++ b/doc/manual/source/the-model-file.rst @@ -7373,6 +7373,11 @@ Shock Decomposition If used in combination with :opt:`diff`, the ``diff`` operator is first applied. Default: not activated + .. option:: max_nrows + + Maximum number of rows in the subplot layout of detailed shock + decomposition graphs. Note that columns are always 3. Default: 6 + .. command:: initial_condition_decomposition [VARIABLE_NAME]...; initial_condition_decomposition (OPTIONS...) [VARIABLE_NAME]...; @@ -7459,6 +7464,22 @@ Shock Decomposition If used in combination with :opt:`diff`, the ``diff`` operator is first applied. Default: not activated +.. command:: squeeze_shock_decomposition [VARIABLE_NAME]...; + + |br| For large models, the size of the information stored by shock + decompositions (especially various settings of realtime decompositions) may + become huge. This command allows to squeeze this information in two + possible ways: + + * Automatic (default): only the variables for which plotting has been + explicitly required with `plot_shock_decomposition` will have their + decomposition left in `oo_` after this command is run; + + * If a list of variables is passed to the command, then only those + variables will have their decomposition left in `oo_` after this + command is run. + + Calibrated Smoother =================== diff --git a/matlab/graph_decomp_detail.m b/matlab/graph_decomp_detail.m index 448abae6c7f1b67f7d94cd205f6e1ac051c8ae08..a928a1657e68ab05b069dacd96cdf7bce32f9947 100644 --- a/matlab/graph_decomp_detail.m +++ b/matlab/graph_decomp_detail.m @@ -60,11 +60,7 @@ if isfield(opts_decomp,'init_cond_decomp') else init_cond_decomp = 0; end -if isfield(opts_decomp,'min_nrows') - min_nrows = opts_decomp.min_nrows ; -else - max_nrows = 6; -end +max_nrows = opts_decomp.max_nrows; screen_shocks = opts_decomp.screen_shocks; if ~isempty(DynareOptions.plot_shock_decomp.use_shock_groups) || comp_nbr<=18 screen_shocks=0; diff --git a/matlab/initial_condition_decomposition.m b/matlab/initial_condition_decomposition.m index 12e39691a2e3f47e2a3e06d2706a8e544385b978..db35777ae18d7460fe5171dcfdf12f82a5eff3ac 100644 --- a/matlab/initial_condition_decomposition.m +++ b/matlab/initial_condition_decomposition.m @@ -51,6 +51,7 @@ options_.plot_shock_decomp.plot_init_date = options_.initial_condition_decomp.pl options_.plot_shock_decomp.plot_end_date = options_.initial_condition_decomp.plot_end_date; options_.plot_shock_decomp.diff = options_.initial_condition_decomp.diff; options_.plot_shock_decomp.flip = options_.initial_condition_decomp.flip; +options_.plot_shock_decomp.max_nrows = options_.initial_condition_decomp.max_nrows; if isfield(options_.initial_condition_decomp,'init2shocks') % private trap for uimenu calls init2shocks=options_.initial_condition_decomp.init2shocks; diff --git a/matlab/set_default_initial_condition_decomposition_options.m b/matlab/set_default_initial_condition_decomposition_options.m index 58ecfff142d2f6c6d613d667964f0f5931b7a0b4..167addad5a5c3bbad37484a6ba0e3f7ecdc9da2a 100644 --- a/matlab/set_default_initial_condition_decomposition_options.m +++ b/matlab/set_default_initial_condition_decomposition_options.m @@ -41,4 +41,5 @@ options.initial_condition_decomp.plot_init_date = []; options.initial_condition_decomp.plot_end_date = []; options.initial_condition_decomp.diff = false; options.initial_condition_decomp.flip = false; +options.initial_condition_decomp.max_nrows = 6; end diff --git a/matlab/set_default_plot_shock_decomposition_options.m b/matlab/set_default_plot_shock_decomposition_options.m index ecef090bf7a648d659cf505b3af32725291f29fd..385884e970d80d8e7ee311084bb4b223eb4b52a1 100644 --- a/matlab/set_default_plot_shock_decomposition_options.m +++ b/matlab/set_default_plot_shock_decomposition_options.m @@ -51,4 +51,5 @@ options.plot_shock_decomp.plot_init_date = []; options.plot_shock_decomp.plot_end_date = []; options.plot_shock_decomp.diff = false; options.plot_shock_decomp.flip = false; +options.plot_shock_decomp.max_nrows = 6; end diff --git a/matlab/squeeze_shock_decomp.m b/matlab/squeeze_shock_decomposition.m similarity index 96% rename from matlab/squeeze_shock_decomp.m rename to matlab/squeeze_shock_decomposition.m index 49073ee08287cdf9ddd10da660f2c7cd72ca5d6a..3fbfa13617c6b4fadd55bb776bed339472ba367d 100644 --- a/matlab/squeeze_shock_decomp.m +++ b/matlab/squeeze_shock_decomposition.m @@ -1,4 +1,4 @@ -function oo_ = squeeze_shock_decomp(M_,oo_,options_,var_list_) +function oo_ = squeeze_shock_decomposition(M_,oo_,options_,var_list_) if isfield(oo_,'plot_shock_decomposition_info') && isfield(oo_.plot_shock_decomposition_info','i_var') my_vars = oo_.plot_shock_decomposition_info.i_var; diff --git a/preprocessor b/preprocessor index 031c0cff5fca274ea1e75c70623a8e8be93269bb..c2461981d2917c69c3decfc55bf2aaf006057c52 160000 --- a/preprocessor +++ b/preprocessor @@ -1 +1 @@ -Subproject commit 031c0cff5fca274ea1e75c70623a8e8be93269bb +Subproject commit c2461981d2917c69c3decfc55bf2aaf006057c52 diff --git a/scripts/dynare.el b/scripts/dynare.el index 3be0998a858518379d28b23ac95ca15e60b40ec5..debcafaea12a96412feec958e1081fcd9582f6d6 100644 --- a/scripts/dynare.el +++ b/scripts/dynare.el @@ -68,7 +68,8 @@ "discretionary_policy" "identification" "bvar_density" "bvar_forecast" "dynare_sensitivity" "initval_file" "histval_file" "forecast" "shock_decomposition" "realtime_shock_decomposition" - "plot_shock_decomposition" "initial_condition_decomposition" "sbvar" + "plot_shock_decomposition" "initial_condition_decomposition" + "squeeze_shock_decomposition" "sbvar" "ms_estimation" "ms_simulation" "ms_compute_mdd" "ms_compute_probabilities" "ms_forecast" "ms_irf" "ms_variance_decomposition" "conditional_forecast" "plot_conditional_forecast" "gmm_estimation" "smm_estimation" diff --git a/tests/shock_decomposition/ls2003_plot.mod b/tests/shock_decomposition/ls2003_plot.mod index 3ef63d277ec3130dd4aa3f1abda1ec2d05eefbee..a3134d2faad37e8e9ac4e2d3ceac2aaa1cd121a0 100644 --- a/tests/shock_decomposition/ls2003_plot.mod +++ b/tests/shock_decomposition/ls2003_plot.mod @@ -85,7 +85,7 @@ end; options_.initial_date=dates('1989Q4'); % date arbitrarily set for testing purposes shock_decomposition(nograph); // test for nothing to squeeze -oo_ = squeeze_shock_decomp(M_,oo_,options_); +squeeze_shock_decomposition; // standard plot plot_shock_decomposition y_obs R_obs pie_obs dq de; @@ -112,7 +112,7 @@ close all, realtime_shock_decomposition(forecast=8, save_realtime=[5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77]) y_obs R_obs pie_obs dq de; // test squeeze -oo_ = squeeze_shock_decomp(M_,oo_,options_); +squeeze_shock_decomposition; //realtime pooled plot_shock_decomposition(realtime = 1) y_obs R_obs pie_obs dq de; @@ -157,7 +157,7 @@ close all, realtime_shock_decomposition(fast_realtime=75) y_obs R_obs pie_obs dq de; // re-test squeeze -oo_ = squeeze_shock_decomp(M_,oo_,options_); +squeeze_shock_decomposition; collect_latex_files; if system(['pdflatex -halt-on-error -interaction=batchmode ' M_.fname '_TeX_binder.tex'])