diff --git a/matlab/correlation_mc_analysis.m b/matlab/correlation_mc_analysis.m
new file mode 100644
index 000000000..578304b93
--- /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 .
+
+ 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.
-
- 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.
+
+ 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 b879c5731..000000000
--- 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 .
-
- 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 2008cab03..070efd2c2 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