From 1c5e2df2a04778cf43fedc852365b66ab9d5c236 Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 11 Jun 2009 23:09:19 +0000 Subject: [PATCH] + Changed compute_moments_varendo so that it can handle prior montecarlo. + Bug fix. + Cosmetic changes. git-svn-id: https://www.dynare.org/svn/dynare/trunk@2766 ac1d8469-bf42-47a9-8791-bf33cf982152 --- matlab/compute_moments_varendo.m | 77 +++++++++++++++++++++++++------- matlab/covariance_mc_analysis.m | 8 ++-- matlab/dynare_estimation_1.m | 2 +- 3 files changed, 65 insertions(+), 22 deletions(-) diff --git a/matlab/compute_moments_varendo.m b/matlab/compute_moments_varendo.m index 9dca0f865..8f4263784 100644 --- a/matlab/compute_moments_varendo.m +++ b/matlab/compute_moments_varendo.m @@ -1,6 +1,6 @@ -function oo_ = compute_moments_varendo(options_,M_,oo_,var_list_) +function oo_ = compute_moments_varendo(type,options_,M_,oo_,var_list_) % Computes the second order moments (autocorrelation function, covariance -% matrix and variance decomposition) for all the endogenous variables selected in +% matrix and variance decomposition) distributions for all the endogenous variables selected in % var_list_. The results are saved in oo_ % % INPUTS: @@ -15,7 +15,7 @@ function oo_ = compute_moments_varendo(options_,M_,oo_,var_list_) % SPECIAL REQUIREMENTS % none -% Copyright (C) 2008 Dynare Team +% Copyright (C) 2008-2009 Dynare Team % % This file is part of Dynare. % @@ -31,34 +31,79 @@ function oo_ = compute_moments_varendo(options_,M_,oo_,var_list_) % % You should have received a copy of the GNU General Public License % along with Dynare. If not, see . + + if strcmpi(type,'posterior') + posterior = 1; + elseif strcmpi(type,'prior') + posterior = 0; + else + disp('compute_moments_varendo:: Unknown type!') + error() + end + NumberOfEndogenousVariables = rows(var_list_); NumberOfExogenousVariables = M_.exo_nbr; list_of_exogenous_variables = M_.exo_names; NumberOfLags = options_.ar; Steps = options_.conditional_variance_decomposition_dates; + % COVARIANCE MATRIX. - for i=1:NumberOfEndogenousVariables - for j=i:NumberOfEndogenousVariables - oo_ = posterior_analysis('variance',var_list_(i,:),var_list_(j,:),[],options_,M_,oo_); + if posterior + for i=1:NumberOfEndogenousVariables + for j=i:NumberOfEndogenousVariables + oo_ = posterior_analysis('variance',var_list_(i,:),var_list_(j,:),[],options_,M_,oo_); + end + end + else + for i=1:NumberOfEndogenousVariables + for j=i:NumberOfEndogenousVariables + oo_ = prior_analysis('variance',var_list_(i,:),var_list_(j,:),[],options_,M_,oo_); + end end end % CORRELATION FUNCTION. - for h=NumberOfLags:-1:1 - for i=1:NumberOfEndogenousVariables - for j=1:NumberOfEndogenousVariables - oo_ = posterior_analysis('correlation',var_list_(i,:),var_list_(j,:),h,options_,M_,oo_); + if posterior + for h=NumberOfLags:-1:1 + for i=1:NumberOfEndogenousVariables + for j=1:NumberOfEndogenousVariables + oo_ = posterior_analysis('correlation',var_list_(i,:),var_list_(j,:),h,options_,M_,oo_); + end + end + end + else + for h=NumberOfLags:-1:1 + for i=1:NumberOfEndogenousVariables + for j=1:NumberOfEndogenousVariables + oo_ = prior_analysis('correlation',var_list_(i,:),var_list_(j,:),h,options_,M_,oo_); + end end end end % VARIANCE DECOMPOSITION. - for i=1:NumberOfEndogenousVariables - for j=1:NumberOfExogenousVariables - oo_ = posterior_analysis('decomposition',var_list_(i,:),M_.exo_names(j,:),[],options_,M_,oo_); + if posterior + for i=1:NumberOfEndogenousVariables + for j=1:NumberOfExogenousVariables + oo_ = posterior_analysis('decomposition',var_list_(i,:),M_.exo_names(j,:),[],options_,M_,oo_); + end end + else + for i=1:NumberOfEndogenousVariables + for j=1:NumberOfExogenousVariables + oo_ = prior_analysis('decomposition',var_list_(i,:),M_.exo_names(j,:),[],options_,M_,oo_); + end + end end % CONDITIONAL VARIANCE DECOMPOSITION. - for i=1:NumberOfEndogenousVariables - for j=1:NumberOfExogenousVariables - oo_ = posterior_analysis('conditional decomposition',var_list_(i,:),M_.exo_names(j,:),Steps,options_,M_,oo_); + if posterior + for i=1:NumberOfEndogenousVariables + for j=1:NumberOfExogenousVariables + oo_ = posterior_analysis('conditional decomposition',var_list_(i,:),M_.exo_names(j,:),Steps,options_,M_,oo_); + end + end + else + for i=1:NumberOfEndogenousVariables + for j=1:NumberOfExogenousVariables + oo_ = prior_analysis('conditional decomposition',var_list_(i,:),M_.exo_names(j,:),Steps,options_,M_,oo_); + end end end \ No newline at end of file diff --git a/matlab/covariance_mc_analysis.m b/matlab/covariance_mc_analysis.m index f907c0be7..6fea37ea3 100644 --- a/matlab/covariance_mc_analysis.m +++ b/matlab/covariance_mc_analysis.m @@ -21,12 +21,10 @@ function oo_ = covariance_mc_analysis(NumberOfSimulations,type,dname,fname,varta if strcmpi(type,'posterior') TYPE = 'Posterior'; - PATH = [dname '/metropolis/'] - posterior = 1; + PATH = [dname '/metropolis/']; else TYPE = 'Prior'; - PATH = [dname '/prior/moments/'] - posterior = 0; + PATH = [dname '/prior/moments/']; end indx1 = check_name(vartan,var1); @@ -37,7 +35,7 @@ function oo_ = covariance_mc_analysis(NumberOfSimulations,type,dname,fname,varta if ~isempty(var2) indx2 = check_name(vartan,var2); if isempty(indx2) - disp([ prior '_analysis:: ' var2 ' is not a stationary endogenous variable!']) + disp([ type '_analysis:: ' var2 ' is not a stationary endogenous variable!']) return end else diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m index 433800d59..0fa5430c9 100644 --- a/matlab/dynare_estimation_1.m +++ b/matlab/dynare_estimation_1.m @@ -1040,7 +1040,7 @@ if (any(bayestopt_.pshape >0 ) & options_.mh_replic) | ... PosteriorIRF('posterior'); end if options_.moments_varendo - oo_ = compute_moments_varendo(options_,M_,oo_,var_list_); + oo_ = compute_moments_varendo('posterior',options_,M_,oo_,var_list_); end if options_.smoother | ~isempty(options_.filter_step_ahead) | options_.forecast prior_posterior_statistics('posterior',data,gend,data_index,missing_value);