diff --git a/matlab/correlation_mc_analysis.m b/matlab/correlation_mc_analysis.m new file mode 100644 index 0000000000000000000000000000000000000000..578304b93b1d8e2cb28821341f9230b2cf85cb9e --- /dev/null +++ b/matlab/correlation_mc_analysis.m @@ -0,0 +1,152 @@ +function oo_ = correlation_mc_analysis(SampleSize,type,dname,fname,vartan,nvar,var1,var2,nar,mh_conf_sig,oo_,M_,options_) +% This function analyses the (posterior or prior) distribution of the +% endogenous variables correlation function. + +% Copyright (C) 2008-2009 Dynare Team +% +% This file is part of Dynare. +% +% Dynare is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% Dynare is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with Dynare. If not, see <http://www.gnu.org/licenses/>. + + if strcmpi(type,'posterior') + TYPE = 'Posterior'; + PATH = [dname '/metropolis/'] + else + TYPE = 'Prior'; + PATH = [dname '/prior/moments/'] + end + + indx1 = check_name(vartan,var1); + if isempty(indx1) + disp([ type '_analysis:: ' var1 ' is not a stationary endogenous variable!']) + return + end + if ~isempty(var2) + indx2 = check_name(vartan,var2); + if isempty(indx2) + disp([ type '_analysis:: ' var2 ' is not a stationary endogenous variable!']) + return + end + else + indx2 = indx1; + var2 = var1; + end +` + if isfield(oo_,[TYPE 'TheoreticalMoments']) + eval(['temporary_structure = oo_.' TYPE 'TheoreticalMoments;']) + if isfield(temporary_structure,'dsge') + eval(['temporary_structure = oo_.' TYPE 'TheoreticalMoments.dsge;']) + if isfield(temporary_structure,'correlation') + eval(['temporary_structure = oo_.' TYPE 'TheoreticalMoments.dsge.mean;']) + if isfield(temporary_structure,var1) + eval(['temporary_structure_1 = oo_.' TYPE 'TheoreticalMoments.dsge.mean.' var1 ';']) + if isfield(temporary_structure_1,var2) + eval(['temporary_structure_2 = temporary_structure_1.' var2 ';']) + l1 = length(temporary_structure_2); + if l1<nar + % INITIALIZATION: + oo_ = initialize_output_structure(var1,var2,nar,type,oo_); + delete([PATH fname '_' TYPE 'Correlations*']) + [nvar,vartan,NumberOfFiles] = ... + dsge_simulated_theoretical_correlation(SampleSize,nar,M_,options_,oo_,type); + else + if ~isnan(temporary_structure_2(nar)) + %Nothing to do. + return + end + end + else + oo_ = initialize_output_structure(var1,var2,nar,TYPE,oo_); + end + else + oo_ = initialize_output_structure(var1,var2,nar,TYPE,oo_); + end + else + oo_ = initialize_output_structure(var1,var2,nar,TYPE,oo_); + end + else + oo_ = initialize_output_structure(var1,var2,nar,TYPE,oo_); + end + else + oo_ = initialize_output_structure(var1,var2,nar,TYPE,oo_); + end + ListOfFiles = dir([ PATH fname '_' TYPE 'Correlations*.mat']); + i1 = 1; tmp = zeros(SampleSize,1); + for file = 1:length(ListOfFiles) + load([ PATH fname '_' TYPE 'PosteriorCorrelations' int2str(file) '.mat']); + i2 = i1 + rows(Correlation_array) - 1; + tmp(i1:i2) = Correlation_array(:,indx1,indx2,nar); + i1 = i2+1; + end + name = [ var1 '.' var2 ]; + if ~isconst(tmp) + [p_mean, p_median, p_var, hpd_interval, p_deciles, density] = ... + posterior_moments(tmp,1,mh_conf_sig); + if isfield(oo_,'PosteriorTheoreticalMoments') + eval(['temporary_structure = oo_.' TYPE 'TheoreticalMoments;']) + if isfield(temporary_structure,'dsge') + eval(['temporary_structure = oo_.' TYPE 'TheoreticalMoments.dsge;']) + if isfield(temporary_structure,'correlation') + oo_ = fill_output_structure(var1,var2,TYPE,oo_,'mean',nar,p_mean); + oo_ = fill_output_structure(var1,var2,TYPE,oo_,'median',nar,p_median); + oo_ = fill_output_structure(var1,var2,TYPE,oo_,'variance',nar,p_var); + oo_ = fill_output_structure(var1,var2,TYPE,oo_,'hpdinf',nar,hpd_interval(1)); + oo_ = fill_output_structure(var1,var2,TYPE,oo_,'hpdsup',nar,hpd_interval(2)); + oo_ = fill_output_structure(var1,var2,TYPE,oo_,'deciles',nar,p_deciles); + oo_ = fill_output_structure(var1,var2,TYPE,oo_,'density',nar,density); + end + end + end + else + if isfield(oo_,'PosteriorTheoreticalMoments') + eval(['temporary_structure = oo_.' TYPE 'TheoreticalMoments;']) + if isfield(temporary_structure,'dsge') + eval(['temporary_structure = oo_.' TYPE 'TheoreticalMoments.dsge;']) + if isfield(temporary_structure,'correlation') + oo_ = fill_output_structure(var1,var2,TYPE,oo_,'mean',nar,NaN); + oo_ = fill_output_structure(var1,var2,TYPE,oo_,'median',nar,NaN); + oo_ = fill_output_structure(var1,var2,TYPE,oo_,'variance',nar,NaN); + oo_ = fill_output_structure(var1,var2,TYPE,oo_,'hpdinf',nar,NaN); + oo_ = fill_output_structure(var1,var2,TYPE,oo_,'hpdsup',nar,NaN); + oo_ = fill_output_structure(var1,var2,TYPE,oo_,'deciles',nar,NaN); + oo_ = fill_output_structure(var1,var2,TYPE,oo_,'density',nar,NaN); + end + end + end + end + +function oo_ = initialize_output_structure(var1,var2,nar,type,oo_) + name = [ var1 '.' var2 ]; + eval(['oo_.' type 'TheoreticalMoments.dsge.correlation.mean.' name ' = NaN(' int2str(nar) ',1);']); + eval(['oo_.' type 'TheoreticalMoments.dsge.correlation.median.' name ' = NaN(' int2str(nar) ',1);']); + eval(['oo_.' type 'PosteriorTheoreticalMoments.dsge.correlation.variance.' name ' = NaN(' int2str(nar) ',1);']); + eval(['oo_.' type 'PosteriorTheoreticalMoments.dsge.correlation.hpdinf.' name ' = NaN(' int2str(nar) ',1);']); + eval(['oo_.' type 'PosteriorTheoreticalMoments.dsge.correlation.hpdsup.' name ' = NaN(' int2str(nar) ',1);']); + eval(['oo_.' type 'PosteriorTheoreticalMoments.dsge.correlation.deciles.' name ' = cell(' int2str(nar) ',1);']); + eval(['oo_.' type 'PosteriorTheoreticalMoments.dsge.correlation.density.' name ' = cell(' int2str(nar) ',1);']); + for i=1:nar + eval(['oo_.' type 'TheoreticalMoments.dsge.correlation.density.' name '(' int2str(i) ',1) = {NaN};']); + eval(['oo_.' type 'TheoreticalMoments.dsge.correlation.deciles.' name '(' int2str(i) ',1) = {NaN};']); + end + +function oo_ = fill_output_structure(var1,var2,type,oo_,lag,result) + name = [ var1 '.' var2 ]; + switch type + case {'mean','median','variance','hpdinf','hpdsup'} + eval(['oo_.' type 'TheoreticalMoments.dsge.correlation.' type '.' name '(' int2str(lag) ',1) = result;']); + case {'deciles','density'} + eval(['oo_.' type 'TheoreticalMoments.dsge.correlation.' type '.' name '(' int2str(lag) ',1) = {result};']); + otherwise + disp('fill_output_structure:: Unknown field!') + end \ No newline at end of file diff --git a/matlab/correlation_posterior_analysis.m b/matlab/correlation_posterior_analysis.m deleted file mode 100644 index f7cefec01d0ac8147ffdb3a81f641dcfbb639a5a..0000000000000000000000000000000000000000 --- a/matlab/correlation_posterior_analysis.m +++ /dev/null @@ -1,135 +0,0 @@ -function oo_ = correlation_posterior_analysis(SampleSize,dname,fname,vartan,nvar,var1,var2,nar,mh_conf_sig,oo_,M_,options_) - -% Copyright (C) 2008 Dynare Team -% -% This file is part of Dynare. -% -% Dynare is free software: you can redistribute it and/or modify -% it under the terms of the GNU General Public License as published by -% the Free Software Foundation, either version 3 of the License, or -% (at your option) any later version. -% -% Dynare is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with Dynare. If not, see <http://www.gnu.org/licenses/>. - - indx1 = check_name(vartan,var1); - if isempty(indx1) - disp(['posterior_analysis:: ' var1 ' is not a stationary endogenous variable!']) - return - end - if ~isempty(var2) - indx2 = check_name(vartan,var2); - if isempty(indx2) - disp(['posterior_analysis:: ' var2 ' is not a stationary endogenous variable!']) - return - end - else - indx2 = indx1; - var2 = var1; - end - if isfield(oo_,'PosteriorTheoreticalMoments') - if isfield(oo_.PosteriorTheoreticalMoments,'dsge') - if isfield(oo_.PosteriorTheoreticalMoments.dsge,'correlation') - if isfield(oo_.PosteriorTheoreticalMoments.dsge.correlation.mean,var1) - eval(['s1 = oo_.PosteriorTheoreticalMoments.dsge.correlation.mean' '.' var1 ';']) - if isfield(s1,var2) - eval(['s2 = s1' '.' var2 ';']) - l1 = length(s2); - if l1<nar - % INITIALIZATION: - oo_ = initialize_output_structure(var1,var2,nar,oo_); - system(['rm ' M_.dname '/metropolis/' M_.fname '_PosteriorCorrelations*']); - [nvar,vartan,NumberOfFiles] = ... - dsge_posterior_theoretical_correlation(SampleSize,nar,M_,options_,oo_); - else - if ~isnan(s2(nar)) - %Nothing to do. - return - end - end - else - oo_ = initialize_output_structure(var1,var2,nar,oo_); - end - else - oo_ = initialize_output_structure(var1,var2,nar,oo_); - end - else - oo_ = initialize_output_structure(var1,var2,nar,oo_); - end - else - oo_ = initialize_output_structure(var1,var2,nar,oo_); - end - else - oo_ = initialize_output_structure(var1,var2,nar,oo_); - end - tmp = dir([ dname '/metropolis/' fname '_PosteriorCorrelations*.mat']); - NumberOfFiles = length(tmp); - i1 = 1; tmp = zeros(SampleSize,1); - for file = 1:NumberOfFiles - load([ dname '/metropolis/' fname '_PosteriorCorrelations' int2str(file) '.mat']); - i2 = i1 + rows(Correlation_array) - 1; - tmp(i1:i2) = Correlation_array(:,indx1,indx2,nar); - i1 = i2+1; - end - name = [ var1 '.' var2 ]; - if ~isconst(tmp) - [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ... - posterior_moments(tmp,1,mh_conf_sig); - if isfield(oo_,'PosteriorTheoreticalMoments') - if isfield(oo_.PosteriorTheoreticalMoments,'dsge') - if isfield(oo_.PosteriorTheoreticalMoments.dsge,'correlation') - oo_ = fill_output_structure(var1,var2,oo_,'mean',nar,post_mean); - oo_ = fill_output_structure(var1,var2,oo_,'median',nar,post_median); - oo_ = fill_output_structure(var1,var2,oo_,'variance',nar,post_var); - oo_ = fill_output_structure(var1,var2,oo_,'hpdinf',nar,hpd_interval(1)); - oo_ = fill_output_structure(var1,var2,oo_,'hpdsup',nar,hpd_interval(2)); - oo_ = fill_output_structure(var1,var2,oo_,'deciles',nar,post_deciles); - oo_ = fill_output_structure(var1,var2,oo_,'density',nar,density); - end - end - end - else - if isfield(oo_,'PosteriorTheoreticalMoments') - if isfield(oo_.PosteriorTheoreticalMoments,'dsge') - if isfield(oo_.PosteriorTheoreticalMoments.dsge,'correlation') - oo_ = fill_output_structure(var1,var2,oo_,'mean',nar,NaN); - oo_ = fill_output_structure(var1,var2,oo_,'median',nar,NaN); - oo_ = fill_output_structure(var1,var2,oo_,'variance',nar,NaN); - oo_ = fill_output_structure(var1,var2,oo_,'hpdinf',nar,NaN); - oo_ = fill_output_structure(var1,var2,oo_,'hpdsup',nar,NaN); - oo_ = fill_output_structure(var1,var2,oo_,'deciles',nar,NaN); - oo_ = fill_output_structure(var1,var2,oo_,'density',nar,NaN); - end - end - end - end - -function oo_ = initialize_output_structure(var1,var2,nar,oo_) - name = [ var1 '.' var2 ]; - eval(['oo_.PosteriorTheoreticalMoments.dsge.correlation.mean.' name ' = NaN(' int2str(nar) ',1);']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.correlation.median.' name ' = NaN(' int2str(nar) ',1);']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.correlation.variance.' name ' = NaN(' int2str(nar) ',1);']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.correlation.hpdinf.' name ' = NaN(' int2str(nar) ',1);']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.correlation.hpdsup.' name ' = NaN(' int2str(nar) ',1);']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.correlation.deciles.' name ' = cell(' int2str(nar) ',1);']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.correlation.density.' name ' = cell(' int2str(nar) ',1);']); - for i=1:nar - eval(['oo_.PosteriorTheoreticalMoments.dsge.correlation.density.' name '(' int2str(i) ',1) = {NaN};']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.correlation.deciles.' name '(' int2str(i) ',1) = {NaN};']); - end - -function oo_ = fill_output_structure(var1,var2,oo_,type,lag,result) - name = [ var1 '.' var2 ]; - switch type - case {'mean','median','variance','hpdinf','hpdsup'} - eval(['oo_.PosteriorTheoreticalMoments.dsge.correlation.' type '.' name '(' int2str(lag) ',1) = result;']); - case {'deciles','density'} - eval(['oo_.PosteriorTheoreticalMoments.dsge.correlation.' type '.' name '(' int2str(lag) ',1) = {result};']); - otherwise - disp('fill_output_structure:: Unknown field!') - end \ No newline at end of file diff --git a/matlab/covariance_mc_analysis.m b/matlab/covariance_mc_analysis.m new file mode 100644 index 0000000000000000000000000000000000000000..f907c0be73a992665e7ca81cdd6c4d228510f8cc --- /dev/null +++ b/matlab/covariance_mc_analysis.m @@ -0,0 +1,100 @@ +function oo_ = covariance_mc_analysis(NumberOfSimulations,type,dname,fname,vartan,nvar,var1,var2,mh_conf_sig,oo_) +% This function analyses the (posterior or prior) distribution of the +% endogenous variables covariance matrix. + +% Copyright (C) 2008-2009 Dynare Team +% +% This file is part of Dynare. +% +% Dynare is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% Dynare is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with Dynare. If not, see <http://www.gnu.org/licenses/>. + + if strcmpi(type,'posterior') + TYPE = 'Posterior'; + PATH = [dname '/metropolis/'] + posterior = 1; + else + TYPE = 'Prior'; + PATH = [dname '/prior/moments/'] + posterior = 0; + end + + indx1 = check_name(vartan,var1); + if isempty(indx1) + disp([ type '_analysis:: ' var1 ' is not a stationary endogenous variable!']) + return + end + if ~isempty(var2) + indx2 = check_name(vartan,var2); + if isempty(indx2) + disp([ prior '_analysis:: ' var2 ' is not a stationary endogenous variable!']) + return + end + else + indx2 = indx1; + var2 = var1; + end + + if isfield(oo_,[ TYPE 'TheoreticalMoments']) + eval(['temporary_structure = oo_.' TYPE 'TheoreticalMoments;']) + if isfield(temporary_structure,'dsge') + eval(['temporary_structure = oo_.' TYPE 'TheoreticalMoments.dsge;']) + if isfield(temporary_structure,'covariance') + eval(['temporary_structure = oo_.' TYPE 'TheoreticalMoments.dsge.covariance.mean;']) + if isfield(temporary_structure,var1) + eval(['temporary_structure_1 = oo_.' TYPE 'TheoreticalMoments.dsge.covariance.mean.' var1 ';']) + if isfield(temporary_structure_1,var2) + % Nothing to do (the covariance matrix is symmetric!). + return + end + else + if isfield(temporary_structure,var2) + eval(['temporary_structure_2 = oo_.' TYPE 'TheoreticalMoments.dsge.covariance.mean.' var2 ';']) + if isfield(temporary_structure_2,var1) + % Nothing to do (the covariance matrix is symmetric!). + return + end + end + end + end + end + end + + ListOfFiles = dir([ PATH fname '_' TYPE '2ndOrderMoments*.mat']); + i1 = 1; tmp = zeros(NumberOfSimulations,1); + for file = 1:length(ListOfFiles) + load([ PATH ListOfFiles(file).name ]); + i2 = i1 + rows(Covariance_matrix) - 1; + tmp(i1:i2) = Covariance_matrix(:,symmetric_matrix_index(indx1,indx2,nvar)); + i1 = i2+1; + end + name = [var1 '.' var2]; + if ~isconst(tmp) + [p_mean, p_median, p_var, hpd_interval, p_deciles, density] = ... + posterior_moments(tmp,1,mh_conf_sig); + eval(['oo_.' TYPE 'TheoreticalMoments.dsge.covariance.mean.' name ' = p_mean;']); + eval(['oo_.' TYPE 'TheoreticalMoments.dsge.covariance.median.' name ' = p_median;']); + eval(['oo_.' TYPE 'TheoreticalMoments.dsge.covariance.variance.' name ' = p_var;']); + eval(['oo_.' TYPE 'TheoreticalMoments.dsge.covariance.hpdinf.' name ' = hpd_interval(1);']); + eval(['oo_.' TYPE 'TheoreticalMoments.dsge.covariance.hpdsup.' name ' = hpd_interval(2);']); + eval(['oo_.' TYPE 'TheoreticalMoments.dsge.covariance.deciles.' name ' = p_deciles;']); + eval(['oo_.' TYPE 'Theoreticalmoments.dsge.covariance.density.' name ' = density;']); + else + eval(['oo_.' NAME 'TheoreticalMoments.dsge.covariance.mean.' name ' = NaN;']); + eval(['oo_.' NAME 'TheoreticalMoments.dsge.covariance.median.' name ' = NaN;']); + eval(['oo_.' NAME 'TheoreticalMoments.dsge.covariance.variance.' name ' = NaN;']); + eval(['oo_.' NAME 'TheoreticalMoments.dsge.covariance.hpdinf.' name ' = NaN;']); + eval(['oo_.' NAME 'TheoreticalMoments.dsge.covariance.hpdsup.' name ' = NaN;']); + eval(['oo_.' NAME 'TheoreticalMoments.dsge.covariance.deciles.' name ' = NaN;']); + eval(['oo_.' NAME 'TheoreticalMoments.dsge.covariance.density.' name ' = NaN;']); + end \ No newline at end of file diff --git a/matlab/covariance_posterior_analysis.m b/matlab/covariance_posterior_analysis.m deleted file mode 100644 index b879c5731520f147ebe613cab04908923376da8b..0000000000000000000000000000000000000000 --- a/matlab/covariance_posterior_analysis.m +++ /dev/null @@ -1,84 +0,0 @@ -function oo_ = covariance_posterior_analysis(NumberOfSimulations,dname,fname,vartan,nvar,var1,var2,mh_conf_sig,oo_) - -% Copyright (C) 2008 Dynare Team -% -% This file is part of Dynare. -% -% Dynare is free software: you can redistribute it and/or modify -% it under the terms of the GNU General Public License as published by -% the Free Software Foundation, either version 3 of the License, or -% (at your option) any later version. -% -% Dynare is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with Dynare. If not, see <http://www.gnu.org/licenses/>. - - indx1 = check_name(vartan,var1); - if isempty(indx1) - disp(['posterior_analysis:: ' var1 ' is not a stationary endogenous variable!']) - return - end - if ~isempty(var2) - indx2 = check_name(vartan,var2); - if isempty(indx2) - disp(['posterior_analysis:: ' var2 ' is not a stationary endogenous variable!']) - return - end - else - indx2 = indx1; - var2 = var1; - end - if isfield(oo_,'PosteriorTheoreticalMoments') - if isfield(oo_.PosteriorTheoreticalMoments,'dsge') - if isfield(oo_.PosteriorTheoreticalMoments.dsge,'covariance') - if isfield(oo_.PosteriorTheoreticalMoments.dsge.covariance.mean,var1) - eval(['s1 = oo_.PosteriorTheoreticalMoments.dsge.covariance.mean' '.' var1 ';']) - if isfield(s1,var2) - % Nothing to do. - return - end - else - if isfield(oo_.PosteriorTheoreticalMoments.dsge.covariance.mean,var2) - eval(['s2 = oo_.PosteriorTheoreticalMoments.dsge.covariance.mean' '.' var2 ';']) - if isfield(s1,var1) - % Nothing to do (the covariance matrix is symmetric!). - return - end - end - end - end - end - end - tmp = dir([ dname '/metropolis/' fname '_Posterior2ndOrderMoments*.mat']); - NumberOfFiles = length(tmp); - i1 = 1; tmp = zeros(NumberOfSimulations,1); - for file = 1:NumberOfFiles - load([ dname '/metropolis/' fname '_Posterior2ndOrderMoments' int2str(file) '.mat']); - i2 = i1 + rows(Covariance_matrix) - 1; - tmp(i1:i2) = Covariance_matrix(:,symmetric_matrix_index(indx1,indx2,nvar)); - i1 = i2+1; - end - name = [var1 '.' var2]; - if ~isconst(tmp) - [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ... - posterior_moments(tmp,1,mh_conf_sig); - eval(['oo_.PosteriorTheoreticalMoments.dsge.covariance.mean.' name ' = post_mean;']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.covariance.median.' name ' = post_median;']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.covariance.variance.' name ' = post_var;']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.covariance.hpdinf.' name ' = hpd_interval(1);']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.covariance.hpdsup.' name ' = hpd_interval(2);']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.covariance.deciles.' name ' = post_deciles;']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.covariance.density.' name ' = density;']); - else - eval(['oo_.PosteriorTheoreticalMoments.dsge.covariance.mean.' name ' = NaN;']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.covariance.median.' name ' = NaN;']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.covariance.variance.' name ' = NaN;']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.covariance.hpdinf.' name ' = NaN;']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.covariance.hpdsup.' name ' = NaN;']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.covariance.deciles.' name ' = NaN;']); - eval(['oo_.PosteriorTheoreticalMoments.dsge.covariance.density.' name ' = NaN;']); - end \ No newline at end of file diff --git a/matlab/get_prior_info.m b/matlab/get_prior_info.m index 2008cab030ac53fcf3e999ab1d9d42366a64cae9..070efd2c206d40eb8537c7f9c762591b4cc72fc3 100644 --- a/matlab/get_prior_info.m +++ b/matlab/get_prior_info.m @@ -115,7 +115,7 @@ function get_prior_info(info) look_for_admissible_initial_condition = 1; scale = 1.0; iter = 0; - while look_for_admissible_initial_condition + While look_for_admissible_initial_condition xinit = xparam1+scale*randn(size(xparam1)); if all(xinit>bayestopt_.p3) && all(xinit<bayestopt_.p4) look_for_admissible_initial_condition = 0; @@ -151,7 +151,7 @@ function get_prior_info(info) end end - if info==3% Prior simulations (BK+moments). + if info==3% Prior simulations (BK + 2nd order moments). results = prior_sampler(1,M_,bayestopt_,options_,oo_); % Display prior mass info. disp(['Prior mass = ' num2str(results.prior.mass)]) @@ -188,17 +188,16 @@ function get_prior_info(info) load([ M_.dname '/prior/draws/prior_draws' int2str(f) '.mat']); number_of_simulations = length(pdraws); total_number_of_simulations = total_number_of_simulations + number_of_simulations; - covariance_cell = cell(number_of_simulations); - correlation_cell = cell(number_of_simulations); - decomposition_cell = cell(number_of_simulations); + covariance_cell = cell(number_of_simulations,1); + correlation_cell = cell(number_of_simulations,1); + decomposition_cell = cell(number_of_simulations,1); for s=1:number_of_simulations - dr = pdraws{s,2}; - [gamma_y,ivar] = th_autocovariances(dr,ivar,M_,options_); + [gamma_y,ivar] = th_autocovariances(pdraws{s,2},ivar,M_,options_); covariance_cell(s) = {vech(gamma_y{1})}; - tmp = zeros(ivar,options_.ar); + tmp = zeros(length(ivar),options_.ar); for i=1:length(ivar) for lag=1:options_.ar - tmp(i,lag) = gamma_y{lag+1}(i,i); + tmp(i,lag) = gamma_y{i,lag+1}; end end correlation_cell(s) = {tmp}; @@ -207,7 +206,21 @@ function get_prior_info(info) save([ PriorMomentsDirectoryName '/prior_moments_draws' int2str(f) '.mat' ],'covariance_cell','correlation_cell','decomposition_cell'); end clear('covariance_cell','correlation_cell','decomposition_cell') - end + prior_moments_info = dir([ M_.dname '/prior/moments/prior_moments*.mat']); + number_of_prior_moments_files = length(prior_moments_info); + % Covariance analysis + disp(' ') + disp('-------------------------') + disp('Prior variance analysis') + disp('-------------------------') + disp(' ') + for i=1:length(ivar) + for file = 1:number_of_prior_moments_file + load() + end + end + + end function format_string = build_format_string(bayestopt,i) format_string = ['%s & %s & %6.4f &']; diff --git a/matlab/posterior_analysis.m b/matlab/posterior_analysis.m index 2c6ff9d6880a4845d13ec4f5659bc2b29b3c3ea0..520262e7162a3260ccfd9a0d593c1a8ef2d0be93 100644 --- a/matlab/posterior_analysis.m +++ b/matlab/posterior_analysis.m @@ -54,7 +54,7 @@ function oo_ = job(type,SampleSize,arg1,arg2,arg3,options_,M_,oo_,nvar,vartan) [nvar,vartan,NumberOfFiles] = ... dsge_simulated_theoretical_covariance(SampleSize,M_,options_,oo_,'posterior'); end - oo_ = covariance_posterior_analysis(SampleSize,M_.dname,M_.fname,... + oo_ = covariance_mc_analysis(SampleSize,'posterior',M_.dname,M_.fname,... vartan,nvar,arg1,arg2,options_.mh_conf_sig,oo_); case 'decomposition' if nargin==narg1 @@ -63,12 +63,12 @@ function oo_ = job(type,SampleSize,arg1,arg2,arg3,options_,M_,oo_,nvar,vartan) end oo_ = variance_decomposition_posterior_analysis(SampleSize,M_.dname,M_.fname,... M_.exo_names,arg2,vartan,arg1,options_.mh_conf_sig,oo_); - case 'correlation' + case OB'correlation' if nargin==narg1 [nvar,vartan,NumberOfFiles] = ... dsge_simulated_theoretical_correlation(SampleSize,arg3,M_,options_,oo_,'posterior'); end - oo_ = correlation_posterior_analysis(SampleSize,M_.dname,M_.fname,... + oo_ = correlation_mc_analysis(SampleSize,'posterior',M_.dname,M_.fname,... vartan,nvar,arg1,arg2,arg3,options_.mh_conf_sig,oo_,M_,options_); case 'conditional decomposition' if nargin==narg1 diff --git a/matlab/prior_sampler.m b/matlab/prior_sampler.m index 4125da55ebdbd4b225557f20af5afeadf4d4dd7c..3f8c98141bbecfc1a0a4aae0817956031f3bbc3b 100644 --- a/matlab/prior_sampler.m +++ b/matlab/prior_sampler.m @@ -119,10 +119,7 @@ function results = prior_sampler(drsave,M_,bayestopt_,options_,oo_) count_unknown_problem = count_unknown_problem + 1 ; end end - - % Save last prior_draw*.mat file - % save([ PriorDirectoryName '/prior_draws' int2str(TableOfInformations(end,1)) '.mat' ],'pdraws'); - + % Get informations about BK conditions and other things... results.bk.indeterminacy_share = count_bk_indeterminacy/loop_indx; results.bk.unstability_share = count_bk_unstability/loop_indx;