0001 function [options_, oo_]=ms_variance_decomposition(M_, options_, oo_)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 disp('MS-SBVAR Variance Decomposition');
0035 options_ = set_file_tags(options_);
0036 [options_, oo_] = set_ms_estimation_file(options_.ms.file_tag, options_, oo_);
0037 clean_ms_variance_decomposition_files(options_.ms.output_file_tag);
0038 vddir = [options_.ms.output_file_tag filesep 'Variance_Decomposition'];
0039 create_dir(vddir);
0040
0041
0042 opt = ['-variance_decomposition -seed ' num2str(options_.DynareRandomStreams.seed)];
0043 opt = [opt ' -do ' vddir];
0044 opt = [opt ' -ft ' options_.ms.file_tag];
0045 opt = [opt ' -fto ' options_.ms.output_file_tag];
0046 opt = [opt ' -horizon ' num2str(options_.ms.horizon)];
0047 opt = [opt ' -thin ' num2str(options_.ms.thinning_factor)];
0048
0049 if options_.ms.regimes
0050 opt = [opt ' -regimes'];
0051 elseif options_.ms.regime
0052
0053 opt = [opt ' -regime ' num2str(options_.ms.regime-1)];
0054 elseif options_.ms.filtered_probabilities
0055 opt = [opt ' -filtered'];
0056 end
0057
0058 if options_.ms.parameter_uncertainty
0059 options_ = set_ms_simulation_file(options_);
0060 opt = [opt ' -parameter_uncertainty'];
0061 opt = [opt ' -shocks_per_parameter ' num2str(options_.ms.shocks_per_parameter)];
0062 else
0063 opt = [opt ' -shocks_per_parameter ' num2str(options_.ms.shock_draws)];
0064 end
0065
0066 percentiles_size = 1;
0067 outfile = [vddir filesep 'var_decomp_mean_'];
0068 if options_.ms.error_bands
0069
0070
0071
0072 percentiles_size = size(options_.ms.percentiles,2);
0073 opt = [opt ' -percentiles ' num2str(percentiles_size)];
0074 for i=1:size(options_.ms.percentiles,2)
0075 opt = [opt ' ' num2str(options_.ms.percentiles(i))];
0076 end
0077 outfile = [vddir filesep 'var_decomp_percentiles_'];
0078 end
0079
0080
0081 [err] = ms_sbvar_command_line(opt);
0082 mexErrCheck('ms_variance_decomposition',err);
0083
0084 if options_.ms.regime || options_.ms.regimes
0085 outfile = [outfile 'regime_'];
0086 if options_.ms.regime
0087 outfile = [outfile num2str(options_.ms.regime-1) ...
0088 '_' options_.ms.output_file_tag '.out'];
0089 end
0090 elseif options_.ms.filtered_probabilities
0091 outfile = [outfile 'filtered_' options_.ms.output_file_tag '.out'];
0092 else
0093 outfile = [outfile 'ergodic_' options_.ms.output_file_tag '.out'];
0094 end
0095
0096
0097 if options_.ms.regimes
0098 n_chains = length(options_.ms.ms_chain);
0099 n_regimes=1;
0100 for i_chain=1:n_chains
0101 n_regimes = n_regimes*length(options_.ms.ms_chain(i_chain).regime);
0102 end
0103 for regime_i=1:n_regimes
0104 vd_title = ['Variance Decomposition, Regime ' num2str(regime_i)];
0105 vd_data = load([outfile num2str(regime_i-1) '_' ...
0106 options_.ms.output_file_tag '.out'], '-ascii');
0107 vd_data = reshape_ascii_variance_decomposition_data( ...
0108 M_.endo_nbr, percentiles_size, options_.ms.horizon, vd_data);
0109 save([vddir filesep 'variance_decomposition_regime_' num2str(regime_i-1)], 'vd_data');
0110 plot_ms_variance_decomposition(M_, options_, vd_data, vd_title);
0111 end
0112 else
0113 if options_.ms.regime
0114 vd_title = ['Variance Decomposition, Regime ' num2str(options_.ms.regime)];
0115 save_filename = ['variance_decomposition_regime_' num2str(options_.ms.regime-1)];
0116 else
0117 save_filename = 'variance_decomposition';
0118 if options_.ms.filtered_probabilities
0119 vd_title = 'Variance Decomposition Filtered';
0120 else
0121 vd_title = 'Variance Decomposition Ergodic';
0122 end
0123 end
0124 vd_data = load(outfile, '-ascii');
0125 vd_data = reshape_ascii_variance_decomposition_data( ...
0126 M_.endo_nbr, percentiles_size, options_.ms.horizon, vd_data);
0127 save([vddir filesep save_filename], 'vd_data');
0128 plot_ms_variance_decomposition(M_, options_, vd_data, vd_title);
0129 end
0130 end