diff --git a/matlab/GetPosteriorParametersStatistics.m b/matlab/GetPosteriorParametersStatistics.m index 00664f3e15f66ed906067462e02a40fd39c2b241..eeca2d1d7baf99a16714d0273d3df66d17199f23 100644 --- a/matlab/GetPosteriorParametersStatistics.m +++ b/matlab/GetPosteriorParametersStatistics.m @@ -59,7 +59,7 @@ clear record; pnames=[' ';'beta ';'gamm ';'norm ';'invg ';'unif ';'invg2']; tit2 = sprintf('%10s %7s %10s %14s %4s %6s\n',' ','prior mean','post. mean','conf. interval','prior','pstdev'); -pformat = '%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f'; +pformat = '%-*s %7.3f %8.4f %7.4f %7.4f %4s %6.4f'; disp(' ');disp(' ');disp('ESTIMATION RESULTS');disp(' '); try @@ -68,6 +68,7 @@ catch [marginal,oo_] = marginal_density(M_, options_, estim_params_, oo_) disp(sprintf('Log data density is %f.',oo_.MarginalDensity.ModifiedHarmonicMean)) end +header_width = row_header_width(M_,estim_params,bayestopt_); if np type = 'parameters'; if TeX @@ -97,6 +98,7 @@ if np end end disp(sprintf(pformat,name,bayestopt_.p1(ip),... + header_width, ... post_mean, ... hpd_interval, ... pnames(bayestopt_.pshape(ip)+1,:), ... @@ -144,7 +146,7 @@ if nvx M_.Sigma_e(k,k) = post_mean*post_mean; end end - disp(sprintf(pformat,name,bayestopt_.p1(ip),post_mean,hpd_interval,... + disp(sprintf(pformat,header_width,name,bayestopt_.p1(ip),post_mean,hpd_interval,... pnames(bayestopt_.pshape(ip)+1,:),bayestopt_.p2(ip))); if TeX TeXCore(fid,name,deblank(pnames(bayestopt_.pshape(ip)+1,:)),bayestopt_.p1(ip),... @@ -184,7 +186,7 @@ if nvn oo_ = Filloo(oo_,name,type,post_mean,hpd_interval,post_median,post_var,post_deciles,density); end end - disp(sprintf(pformat,name,bayestopt_.p1(ip),post_mean,hpd_interval, ... + disp(sprintf(pformat,header_width,name,bayestopt_.p1(ip),post_mean,hpd_interval, ... pnames(bayestopt_.pshape(ip)+1,:),bayestopt_.p2(ip))); if TeX TeXCore(fid,name,deblank(pnames(bayestopt_.pshape(ip)+1,:)),bayestopt_.p1(ip),... @@ -237,7 +239,7 @@ if ncx M_.Sigma_e(k2,k1) = M_.Sigma_e(k1,k2); end end - disp(sprintf(pformat, name,bayestopt_.p1(ip),post_mean,hpd_interval, ... + disp(sprintf(pformat, header_width,name,bayestopt_.p1(ip),post_mean,hpd_interval, ... pnames(bayestopt_.pshape(ip)+1,:),bayestopt_.p2(ip))); if TeX TeXCore(fid,name,deblank(pnames(bayestopt_.pshape(ip)+1,:)),bayestopt_.p1(ip),... @@ -288,7 +290,7 @@ if ncn post_median,post_var,post_deciles,density); end end - disp(sprintf(pformat, name,bayestopt_.p1(ip),post_mean,hpd_interval, ... + disp(sprintf(pformat, header_width,name,bayestopt_.p1(ip),post_mean,hpd_interval, ... pnames(bayestopt_.pshape(ip)+1,:),bayestopt_.p2(ip))); if TeX TeXCore(fid,name,deblank(pnames(bayestopt_.pshape(ip)+1,:)),bayestopt_.p1(ip),... diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m index de5d75b8870800a67031ed9cf4628fe55d5446dd..1550f1372ba118e31cc88cc8966c7e8060304ccf 100644 --- a/matlab/dynare_estimation_1.m +++ b/matlab/dynare_estimation_1.m @@ -624,7 +624,10 @@ if any(bayestopt_.pshape > 0) & options_.posterior_mode_estimation for i = 1:nx tstath(i) = abs(xparam1(i))/stdh(i); end - tit1 = sprintf('%10s %7s %8s %7s %6s %4s %6s\n',' ','prior mean', ... + + header_width = row_header_width(M_,estim_params_,bayestopt_); + + tit1 = sprintf('%-*s %7s %8s %7s %6s %4s %6s\n',header_width-2,' ','prior mean', ... 'mode','s.d.','t-stat','prior','pstdev'); if np ip = nvx+nvn+ncx+ncn+1; @@ -632,8 +635,8 @@ if any(bayestopt_.pshape > 0) & options_.posterior_mode_estimation disp(tit1) for i=1:np name = bayestopt_.name{ip}; - disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ... - name, ... + disp(sprintf('%-*s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ... + header_width,name, ... bayestopt_.p1(ip),xparam1(ip),stdh(ip),tstath(ip), ... pnames(bayestopt_.pshape(ip)+1,:), ... bayestopt_.p2(ip))); @@ -649,8 +652,8 @@ if any(bayestopt_.pshape > 0) & options_.posterior_mode_estimation for i=1:nvx k = estim_params_.var_exo(i,1); name = deblank(M_.exo_names(k,:)); - disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ... - name,bayestopt_.p1(ip),xparam1(ip), ... + disp(sprintf('%-*s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ... + header_width,name,bayestopt_.p1(ip),xparam1(ip), ... stdh(ip),tstath(ip),pnames(bayestopt_.pshape(ip)+1,:), ... bayestopt_.p2(ip))); M_.Sigma_e(k,k) = xparam1(ip)*xparam1(ip); @@ -665,8 +668,8 @@ if any(bayestopt_.pshape > 0) & options_.posterior_mode_estimation ip = nvx+1; for i=1:nvn name = deblank(options_.varobs(estim_params_.var_endo(i,1),:)); - disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ... - name,bayestopt_.p1(ip), ... + disp(sprintf('%-*s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ... + header_width,name,bayestopt_.p1(ip), ... xparam1(ip),stdh(ip),tstath(ip), ... pnames(bayestopt_.pshape(ip)+1,:), ... bayestopt_.p2(ip))); @@ -684,8 +687,8 @@ if any(bayestopt_.pshape > 0) & options_.posterior_mode_estimation k2 = estim_params_.corrx(i,2); name = [deblank(M_.exo_names(k1,:)) ',' deblank(M_.exo_names(k2,:))]; NAME = [deblank(M_.exo_names(k1,:)) '_' deblank(M_.exo_names(k2,:))]; - disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', name, ... - bayestopt_.p1(ip),xparam1(ip),stdh(ip),tstath(ip), ... + disp(sprintf('%-*s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', name, ... + header_width,bayestopt_.p1(ip),xparam1(ip),stdh(ip),tstath(ip), ... pnames(bayestopt_.pshape(ip)+1,:), bayestopt_.p2(ip))); M_.Sigma_e(k1,k2) = xparam1(ip)*sqrt(M_.Sigma_e(k1,k1)*M_.Sigma_e(k2,k2)); M_.Sigma_e(k2,k1) = M_.Sigma_e(k1,k2); @@ -703,8 +706,8 @@ if any(bayestopt_.pshape > 0) & options_.posterior_mode_estimation k2 = estim_params_.corrn(i,2); name = [deblank(M_.endo_names(k1,:)) ',' deblank(M_.endo_names(k2,:))]; NAME = [deblank(M_.endo_names(k1,:)) '_' deblank(M_.endo_names(k2,:))]; - disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', name, ... - bayestopt_.p1(ip),xparam1(ip),stdh(ip),tstath(ip), ... + disp(sprintf('%-*s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', name, ... + header_width,bayestopt_.p1(ip),xparam1(ip),stdh(ip),tstath(ip), ... pnames(bayestopt_.pshape(ip)+1,:), bayestopt_.p2(ip))); eval(['oo_.posterior_mode.measurement_errors_corr.' NAME ' = xparam1(ip);']); eval(['oo_.posterior_std.measurement_errors_corr.' NAME ' = stdh(ip);']); @@ -733,15 +736,16 @@ elseif ~any(bayestopt_.pshape > 0) & options_.posterior_mode_estimation for i = 1:nx tstath(i) = abs(xparam1(i))/stdh(i); end - tit1 = sprintf('%10s %10s %7s %6s\n',' ','Estimate','s.d.','t-stat'); + header_width = row_header_width(M_,estim_params_,bayestopt_); + tit1 = sprintf('%-*s %10s %7s %6s\n',header_width-2,' ','Estimate','s.d.','t-stat'); if np ip = nvx+nvn+ncx+ncn+1; disp('parameters') disp(tit1) for i=1:np name = bayestopt_.name{ip}; - disp(sprintf('%12s %8.4f %7.4f %7.4f', ... - name,xparam1(ip),stdh(ip),tstath(ip))); + disp(sprintf('%-*s %8.4f %7.4f %7.4f', ... + header_width,name,xparam1(ip),stdh(ip),tstath(ip))); eval(['oo_.mle_mode.parameters.' name ' = xparam1(ip);']); eval(['oo_.mle_std.parameters.' name ' = stdh(ip);']); ip = ip+1; @@ -754,7 +758,7 @@ elseif ~any(bayestopt_.pshape > 0) & options_.posterior_mode_estimation for i=1:nvx k = estim_params_.var_exo(i,1); name = deblank(M_.exo_names(k,:)); - disp(sprintf('%12s %8.4f %7.4f %7.4f',name,xparam1(ip),stdh(ip),tstath(ip))); + disp(sprintf('%-*s %8.4f %7.4f %7.4f',header_width,name,xparam1(ip),stdh(ip),tstath(ip))); M_.Sigma_e(k,k) = xparam1(ip)*xparam1(ip); eval(['oo_.mle_mode.shocks_std.' name ' = xparam1(ip);']); eval(['oo_.mle_std.shocks_std.' name ' = stdh(ip);']); @@ -767,7 +771,7 @@ elseif ~any(bayestopt_.pshape > 0) & options_.posterior_mode_estimation ip = nvx+1; for i=1:nvn name = deblank(options_.varobs(estim_params_.var_endo(i,1),:)); - disp(sprintf('%12s %8.4f %7.4f %7.4f',name,xparam1(ip),stdh(ip),tstath(ip))) + disp(sprintf('%-*s %8.4f %7.4f %7.4f',header_width,name,xparam1(ip),stdh(ip),tstath(ip))) eval(['oo_.mle_mode.measurement_errors_std.' name ' = xparam1(ip);']); eval(['oo_.mle_std.measurement_errors_std.' name ' = stdh(ip);']); ip = ip+1; @@ -782,7 +786,7 @@ elseif ~any(bayestopt_.pshape > 0) & options_.posterior_mode_estimation k2 = estim_params_.corrx(i,2); name = [deblank(M_.exo_names(k1,:)) ',' deblank(M_.exo_names(k2,:))]; NAME = [deblank(M_.exo_names(k1,:)) '_' deblank(M_.exo_names(k2,:))]; - disp(sprintf('%12s %8.4f %7.4f %7.4f', name,xparam1(ip),stdh(ip),tstath(ip))); + disp(sprintf('%-*s %8.4f %7.4f %7.4f', header_width,name,xparam1(ip),stdh(ip),tstath(ip))); M_.Sigma_e(k1,k2) = xparam1(ip)*sqrt(M_.Sigma_e(k1,k1)*M_.Sigma_e(k2,k2)); M_.Sigma_e(k2,k1) = M_.Sigma_e(k1,k2); eval(['oo_.mle_mode.shocks_corr.' NAME ' = xparam1(ip);']); @@ -799,7 +803,7 @@ elseif ~any(bayestopt_.pshape > 0) & options_.posterior_mode_estimation k2 = estim_params_.corrn(i,2); name = [deblank(M_.endo_names(k1,:)) ',' deblank(M_.endo_names(k2,:))]; NAME = [deblank(M_.endo_names(k1,:)) '_' deblank(M_.endo_names(k2,:))]; - disp(sprintf('%12s %8.4f %7.4f %7.4f',name,xparam1(ip),stdh(ip),tstath(ip))); + disp(sprintf('%-*s %8.4f %7.4f %7.4f',header_width,name,xparam1(ip),stdh(ip),tstath(ip))); eval(['oo_.mle_mode.measurement_error_corr.' NAME ' = xparam1(ip);']); eval(['oo_.mle_std.measurement_error_corr.' NAME ' = stdh(ip);']); ip = ip+1; @@ -1549,3 +1553,4 @@ if np > 0 pindx = estim_params_.param_vals(:,1); save([M_.fname '_pindx.mat'] ,'pindx'); end + diff --git a/matlab/row_header_width.m b/matlab/row_header_width.m new file mode 100644 index 0000000000000000000000000000000000000000..ef3762f11089f86972bc4ad9ec1b70a8722bc40d --- /dev/null +++ b/matlab/row_header_width.m @@ -0,0 +1,75 @@ +function w=row_header_width(M_,estim_params_,bayestopt_) +% This function computes the width of the row headers for +% the estimation results +% +% INPUTS +% estim_params_ [structure] +% M_ [structure] +% bayestopt_ [structure] +% +% OUTPUTS +% w integer +% +% SPECIAL REQUIREMENTS +% None. + +% Copyright (C) 2006-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/>. + + np = estim_params_.np; + nvx = estim_params_.nvx; + nvn = estim_params_.nvn; + ncx = estim_params_.ncx; + ncn = estim_params_.ncn; + + w = 0; + if np + for i=1:np + w = max(w,length(bayestopt_.name{i})); + end + end + if nvx + for i=1:nvx + k = estim_params_.var_exo(i,1) + w = max(w,length(deblank(M_.exo_names(k,:)))); + end + end + if nvn + for i=1:nvn + k = estim_params_.var_endo(i,1) + w = max(w,length(deblank(M_.endo_names(k,:)))); + end + end + if ncx + for i=1:ncx + k1 = estim_params_.corrx(i,1); + k2 = estim_params_.corrx(i,2); + w = max(w,length(deblank(M_.exo_names(k1,:)))... + +length(deblank(M_.exo_names(k2,:)))) + + end + end + if ncn + for i=1:nvn + k1 = estim_params_.corrn(i,1); + k2 = estim_params_.corrn(i,2); + w = max(w,length(deblank(M_.endo_names(k1,:)))... + +length(deblank(M_.endo_names(k2,:)))) + + end + end +