0001 function GetPosteriorParametersStatistics()
0002
0003 global estim_params_ M_ options_ bayestopt_ oo_
0004
0005 TeX = options_.TeX;
0006 nblck = options_.mh_nblck;
0007 nvx = estim_params_.nvx;
0008 nvn = estim_params_.nvn;
0009 ncx = estim_params_.ncx;
0010 ncn = estim_params_.ncn;
0011 np = estim_params_.np ;
0012 nx = nvx+nvn+ncx+ncn+np;
0013
0014 DirectoryName = CheckPath('metropolis');
0015 load([ DirectoryName '/' M_.fname '_mh_history'])
0016 FirstMhFile = record.KeepedDraws.FirstMhFile;
0017 FirstLine = record.KeepedDraws.FirstLine; ifil = FirstLine;
0018 TotalNumberOfMhFiles = sum(record.MhDraws(:,2))
0019 TotalNumberOfMhDraws = sum(record.MhDraws(:,1));
0020 FirstMhFile = record.KeepedDraws.FirstMhFile;
0021 NumberOfDraws = TotalNumberOfMhDraws-floor(options_.mh_drop*TotalNumberOfMhDraws);
0022 clear record;
0023
0024 disp(' ')
0025 disp(' ')
0026 disp('ESTIMATION RESULTS')
0027 disp(' ')
0028 disp(sprintf('Log data density is %f.',oo_.MarginalDensity.ModifiedHarmonicMean))
0029 pnames=[' ';'beta ';'gamm ';'norm ';'invg ';'unif ';'invg2'];
0030 tit2 = sprintf('%10s %7s %10s %14s %4s %6s\n',' ','prior mean','post. mean','conf. interval','prior','pstdev');
0031 if np
0032 disp(' ')
0033 disp('parameters')
0034 disp(tit2)
0035 ip = nvx+nvn+ncx+ncn+1;
0036 for i=1:np
0037 Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws);
0038 [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(Draws,1);
0039 name = bayestopt_.name{ip};
0040 disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ...
0041 name, ...
0042 bayestopt_.pmean(ip),post_mean,hpd_interval, ...
0043 pnames(bayestopt_.pshape(ip)+1,:), ...
0044 bayestopt_.pstdev(ip)));
0045 eval(['oo_.posterior_mean.parameters.' name ' = post_mean;']);
0046 eval(['oo_.posterior_hpdinf.parameters.' name ' = hpd_interval(1);']);
0047 eval(['oo_.posterior_hpdsup.parameters.' name ' = hpd_interval(2);']);
0048 eval(['oo_.posterior_median.' name ' = post_median;']);
0049 eval(['oo_.posterior_variance.' name ' = post_var;']);
0050 eval(['oo_.posterior_deciles.' name ' = post_deciles;']);
0051 eval(['oo_.posterior_density.' name ' = density;']);
0052 ip = ip+1;
0053 end
0054 end
0055 if nvx
0056 ip = 1;
0057 disp(' ')
0058 disp('standard deviation of shocks')
0059 disp(tit2)
0060 for i=1:nvx
0061 Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws);
0062 [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(Draws,1);
0063 k = estim_params_.var_exo(i,1);
0064 name = deblank(M_.exo_names(k,:));
0065 disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ...
0066 name,bayestopt_.pmean(ip),post_mean, ...
0067 hpd_interval,pnames(bayestopt_.pshape(ip)+1,:), ...
0068 bayestopt_.pstdev(ip)));
0069 M_.Sigma_e(k,k) = post_mean*post_mean;
0070 eval(['oo_.posterior_mean.shocks_std.' name ' = post_mean;']);
0071 eval(['oo_.posterior_hpdinf.shocks_std.' name ' = hpd_interval(1);']);
0072 eval(['oo_.posterior_hpdsup.shocks_std.' name ' = hpd_interval(2);']);
0073 eval(['oo_.posterior_median.shocks_std.' name ' = post_median;']);
0074 eval(['oo_.posterior_variance.shocks_std.' name ' = post_var;']);
0075 eval(['oo_.posterior_deciles.shocks_std.' name ' = post_deciles;']);
0076 eval(['oo_.posterior_density.shocks_std.' name ' = density;']);
0077 ip = ip+1;
0078 end
0079 end
0080 if nvn
0081 disp(' ')
0082 disp('standard deviation of measurement errors')
0083 disp(tit2)
0084 ip = nvx+1;
0085 for i=1:nvn
0086 Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws);
0087 [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(Draws,1);
0088 name = deblank(options_.varobs(estim_params_.var_endo(i,1),:));
0089 disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', ...
0090 name,...
0091 bayestopt_.pmean(ip), ...
0092 post_mean,hpd_interval, ...
0093 pnames(bayestopt_.pshape(ip)+1,:), ...
0094 bayestopt_.pstdev(ip)));
0095 eval(['oo_.posterior_mean.measurement_errors_std.' name ' = post_mean;']);
0096 eval(['oo_.posterior_hpdinf.measurement_errors_std.' name ' = hpd_interval(1);']);
0097 eval(['oo_.posterior_hpdsup.measurement_errors_std.' name ' = hpd_interval(2);']);
0098 eval(['oo_.posterior_median.measurement_errors_std.' name ' = post_median;']);
0099 eval(['oo_.posterior_variance.measurement_errors_std.' name ' = post_var;']);
0100 eval(['oo_.posterior_deciles.measurement_errors_std.' name ' = post_deciles;']);
0101 eval(['oo_.posterior_density.measurement_errors_std.' name ' = density;']);
0102 ip = ip+1;
0103 end
0104 end
0105 if ncx
0106 disp(' ')
0107 disp('correlation of shocks')
0108 disp(tit2)
0109 ip = nvx+nvn+1;
0110 for i=1:ncx
0111 Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws);
0112 [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(Draws,1);
0113 k1 = estim_params_.corrx(i,1);
0114 k2 = estim_params_.corrx(i,2);
0115 name = [deblank(M_.exo_names(k1,:)) ',' deblank(M_.exo_names(k2,:))];
0116 NAME = [deblank(M_.exo_names(k1,:)) '_' deblank(M_.exo_names(k2,:))];
0117 disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', name, ...
0118 bayestopt_.pmean(ip),post_mean,hpd_interval, ...
0119 pnames(bayestopt_.pshape(ip)+1,:), ...
0120 bayestopt_.pstdev(ip)));
0121 eval(['oo_.posterior_mean.shocks_corr.' NAME ' = post_mean;']);
0122 eval(['oo_.posterior_hpdinf.shocks_corr.' NAME ' = hpd_interval(1);']);
0123 eval(['oo_.posterior_hpdsup.shocks_corr.' NAME ' = hpd_interval(2);']);
0124 eval(['oo_.posterior_median.shocks_corr.' NAME ' = post_median;']);
0125 eval(['oo_.posterior_variance.shocks_corr.' NAME ' = post_var;']);
0126 eval(['oo_.posterior_deciles.shocks_corr.' NAME ' = post_deciles;']);
0127 eval(['oo_.posterior_density.shocks_corr.' NAME ' = density;']);
0128 M_.Sigma_e(k1,k2) = post_mean*sqrt(M_.Sigma_e(k1,k1)*M_.Sigma_e(k2,k2));
0129 M_.Sigma_e(k2,k1) = M_.Sigma_e(k1,k2);
0130 ip = ip+1;
0131 end
0132 end
0133 if ncn
0134 disp(' ')
0135 disp('correlation of measurement errors')
0136 disp(tit2)
0137 ip = nvx+nvn+ncx+1;
0138 for i=1:ncn
0139 Draws = GetAllPosteriorDraws(ip,FirstMhFile,FirstLine,TotalNumberOfMhFiles,NumberOfDraws);
0140 [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(Draws,1);
0141 k1 = estim_params_.corrn(i,1);
0142 k2 = estim_params_.corrn(i,2);
0143 name = [deblank(M_.endo_names(k1,:)) ',' deblank(M_.endo_names(k2,:))];
0144 NAME = [deblank(M_.endo_names(k1,:)) '_' deblank(M_.endo_names(k2,:))];
0145 disp(sprintf('%12s %7.3f %8.4f %7.4f %7.4f %4s %6.4f', name, ...
0146 bayestopt_.pmean(ip),post_mean,hpd_interval, ...
0147 pnames(bayestopt_.pshape(ip)+1,:), ...
0148 bayestopt_.pstdev(ip)));
0149 eval(['oo_.posterior_mean.measurement_errors_corr.' NAME ' = post_mean;']);
0150 eval(['oo_.posterior_hpdinf.measurement_errors_corr.' NAME ' = hpd_interval(1);']);
0151 eval(['oo_.posterior_hpdsup.measurement_errors_corr.' NAME ' = hpd_interval(2);']);
0152 eval(['oo_.posterior_median.measurement_errors_corr.' NAME ' = post_median;']);
0153 eval(['oo_.posterior_variance.measurement_errors_corr.' NAME ' = post_var;']);
0154 eval(['oo_.posterior_deciles.measurement_errors_corr.' NAME ' = post_decile;']);
0155 eval(['oo_.posterior_density.measurement_errors_corr.' NAME ' = density;']);
0156 ip = ip+1;
0157 end
0158 end