Bug corrections and cosmetic changes.
git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@1897 ac1d8469-bf42-47a9-8791-bf33cf982152time-shift
parent
66c5c66e2f
commit
f12c2f4ed6
|
@ -0,0 +1,2 @@
|
||||||
|
function n = check_name(vartan,varname)
|
||||||
|
n = strmatch(varname,vartan,'exact');
|
|
@ -49,7 +49,7 @@ function [info,description] = check_posterior_analysis_data(type,M_)
|
||||||
otherwise
|
otherwise
|
||||||
disp('This feature is not yest implemented!')
|
disp('This feature is not yest implemented!')
|
||||||
end
|
end
|
||||||
pdfinfo = dir([ M_.dname '/metropolis/' M_.fname '_' generic_post_data_file_name '*'])
|
pdfinfo = dir([ M_.dname '/metropolis/' M_.fname '_' generic_post_data_file_name '*']);
|
||||||
if isempty(pdfinfo)
|
if isempty(pdfinfo)
|
||||||
info = 4; % posterior draws have to be processed.
|
info = 4; % posterior draws have to be processed.
|
||||||
if nargout>1
|
if nargout>1
|
||||||
|
@ -59,9 +59,9 @@ function [info,description] = check_posterior_analysis_data(type,M_)
|
||||||
else
|
else
|
||||||
number_of_the_last_post_data_file = length(pdfinfo);
|
number_of_the_last_post_data_file = length(pdfinfo);
|
||||||
name_of_the_last_post_data_file = ...
|
name_of_the_last_post_data_file = ...
|
||||||
[ M_.dname ...
|
[ './' M_.dname ...
|
||||||
'/metropolis/' ...
|
'/metropolis/' ...
|
||||||
M_.dname ...
|
M_.fname '_' ...
|
||||||
generic_post_data_file_name ...
|
generic_post_data_file_name ...
|
||||||
int2str(number_of_the_last_post_data_file) ...
|
int2str(number_of_the_last_post_data_file) ...
|
||||||
'.mat' ];
|
'.mat' ];
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
function c = cols(M)
|
||||||
|
c = size(M,2);
|
|
@ -0,0 +1,56 @@
|
||||||
|
function oo_ = covariance_posterior_analysis(NumberOfSimulations,dname,fname,vartan,nvar,var1,var2,mh_conf_sig,oo_)
|
||||||
|
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
|
||||||
|
[post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ...
|
||||||
|
posterior_moments(tmp,1,mh_conf_sig);
|
||||||
|
name = [var1 '.' var2];
|
||||||
|
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;']);
|
|
@ -41,7 +41,7 @@ NumberOfDrawsFiles = length(DrawsFiles);
|
||||||
MaXNumberOfCovarLines = ceil(options_.MaxNumberOfBytes/(nvar*(nvar+1)/2)/8);
|
MaXNumberOfCovarLines = ceil(options_.MaxNumberOfBytes/(nvar*(nvar+1)/2)/8);
|
||||||
|
|
||||||
if SampleSize<=MaXNumberOfCovarLines
|
if SampleSize<=MaXNumberOfCovarLines
|
||||||
Covariance_matrix = zeros(NumberOfSimulations,nvar*(nvar+1)/2);
|
Covariance_matrix = zeros(SampleSize,nvar*(nvar+1)/2);
|
||||||
NumberOfCovarFiles = 1;
|
NumberOfCovarFiles = 1;
|
||||||
else
|
else
|
||||||
Covariance_matrix = zeros(MaXNumberOfCovarLines,nvar*(nvar+1)/2);
|
Covariance_matrix = zeros(MaXNumberOfCovarLines,nvar*(nvar+1)/2);
|
||||||
|
@ -55,7 +55,7 @@ CovarFileNumber = 1;
|
||||||
% Compute 2nd order moments and save them in *_Posterior2ndOrderMoments* files
|
% Compute 2nd order moments and save them in *_Posterior2ndOrderMoments* files
|
||||||
linea = 0;
|
linea = 0;
|
||||||
for file = 1:NumberOfDrawsFiles
|
for file = 1:NumberOfDrawsFiles
|
||||||
load([MhDirectoryName '/' DrawsFiles(file).name]);
|
load([M_.dname '/metropolis/' DrawsFiles(file).name]);
|
||||||
NumberOfDraws = rows(pdraws);
|
NumberOfDraws = rows(pdraws);
|
||||||
isdrsaved = cols(pdraws)-1;
|
isdrsaved = cols(pdraws)-1;
|
||||||
for linee = 1:NumberOfDraws
|
for linee = 1:NumberOfDraws
|
||||||
|
@ -73,7 +73,7 @@ for file = 1:NumberOfDrawsFiles
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if linea == NumberOfCovarLines
|
if linea == NumberOfCovarLines
|
||||||
save([fname '_Posterior2ndOrderMoments' int2str(CovarFileNumber)],'Covariance_matrix');
|
save([ M_.dname '/metropolis/' M_.fname '_Posterior2ndOrderMoments' int2str(CovarFileNumber)],'Covariance_matrix');
|
||||||
CovarFileNumber = CovarFileNumber + 1;
|
CovarFileNumber = CovarFileNumber + 1;
|
||||||
linea = 0;
|
linea = 0;
|
||||||
test = CovarFileNumber-NumberOfCovarFiles;
|
test = CovarFileNumber-NumberOfCovarFiles;
|
||||||
|
@ -90,11 +90,4 @@ for file = 1:NumberOfDrawsFiles
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
options_.ar = nar;
|
options_.ar = nar;
|
||||||
|
|
||||||
|
|
||||||
function r = rows(M)
|
|
||||||
r = size(M,1);
|
|
||||||
|
|
||||||
function c = cols(M)
|
|
||||||
c = size(M,2);
|
|
|
@ -42,13 +42,13 @@ NumberOfDrawsFiles = rows(DrawsFiles);
|
||||||
NumberOfSavedElementsPerSimulation = nvar*(nexo+1);
|
NumberOfSavedElementsPerSimulation = nvar*(nexo+1);
|
||||||
MaXNumberOfDecompLines = ceil(options_.MaxNumberOfBytes/NumberOfSavedElementsPerSimulation/8);
|
MaXNumberOfDecompLines = ceil(options_.MaxNumberOfBytes/NumberOfSavedElementsPerSimulation/8);
|
||||||
|
|
||||||
if NumberOfSimulations<=MaXNumberOfDecompLines
|
if SampleSize<=MaXNumberOfDecompLines
|
||||||
Decomposition_array = zeros(NumberOfSimulations,nvar*(nexo+1));
|
Decomposition_array = zeros(SampleSize,nvar*nexo);
|
||||||
NumberOfDecompFiles = 1;
|
NumberOfDecompFiles = 1;
|
||||||
else
|
else
|
||||||
Decomposition_array = zeros(MaXNumberOfDecompLines,nvar*(nexo+1));
|
Decomposition_array = zeros(MaXNumberOfDecompLines,nvar*nexo);
|
||||||
NumberOfLinesInTheLastDecompFile = mod(NumberOfSimulations,MaXNumberOfDecompLines);
|
NumberOfLinesInTheLastDecompFile = mod(SampleSize,MaXNumberOfDecompLines);
|
||||||
NumberOfDecompFiles = ceil(NumberOfSimulations/MaXNumberOfDecompLines);
|
NumberOfDecompFiles = ceil(SampleSize/MaXNumberOfDecompLines);
|
||||||
end
|
end
|
||||||
|
|
||||||
NumberOfDecompLines = rows(Decomposition_array);
|
NumberOfDecompLines = rows(Decomposition_array);
|
||||||
|
@ -59,7 +59,7 @@ DecompFileNumber = 1;
|
||||||
% implied by each structural shock.
|
% implied by each structural shock.
|
||||||
linea = 0;
|
linea = 0;
|
||||||
for file = 1:NumberOfDrawsFiles
|
for file = 1:NumberOfDrawsFiles
|
||||||
load([MhDirectoryName '/' DrawsFiles(file).name]);
|
load([M_.dname '/metropolis/' DrawsFiles(file).name]);
|
||||||
isdrsaved = cols(pdraws)-1;
|
isdrsaved = cols(pdraws)-1;
|
||||||
NumberOfDraws = rows(pdraws);
|
NumberOfDraws = rows(pdraws);
|
||||||
for linee = 1:NumberOfDraws
|
for linee = 1:NumberOfDraws
|
||||||
|
@ -71,26 +71,22 @@ for file = 1:NumberOfDrawsFiles
|
||||||
[dr,info] = resol(oo_.steady_state,0);
|
[dr,info] = resol(oo_.steady_state,0);
|
||||||
end
|
end
|
||||||
tmp = th_autocovariances(dr,ivar,M_,options_);
|
tmp = th_autocovariances(dr,ivar,M_,options_);
|
||||||
%for i=1:nvar
|
|
||||||
% Decomposition_array(linea,i) = tmp{1}(i,i);
|
|
||||||
%end
|
|
||||||
Decomposition_array(linea,:) = transpose(tmp{1});
|
|
||||||
for i=1:nvar
|
for i=1:nvar
|
||||||
for j=1:nexo
|
for j=1:nexo
|
||||||
Decomposition_array(linea,nvar+(i-1)*nexo+j) = tmp{2}(i,j);
|
Decomposition_array(linea,(i-1)*nexo+j) = tmp{2}(i,j);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if linea == NumberOfDecompLines
|
if linea == NumberOfDecompLines
|
||||||
save([fname '_PosteriorVarianceDecomposition' int2str(DecompFileNumber)],'Decomposition_array');
|
save([M_.dname '/metropolis/' M_.fname '_PosteriorVarianceDecomposition' int2str(DecompFileNumber)],'Decomposition_array');
|
||||||
DecompFileNumber = DecompFileNumber + 1;
|
DecompFileNumber = DecompFileNumber + 1;
|
||||||
linea = 0;
|
linea = 0;
|
||||||
test = DecompFileNumber-NumberOfDecompFiles;
|
test = DecompFileNumber-NumberOfDecompFiles;
|
||||||
if ~test% Prepare the last round...
|
if ~test% Prepare the last round...
|
||||||
Decomposition_array = zeros(NumberOfLinesInTheLastDecompFile,nvar*(nexo+1));
|
Decomposition_array = zeros(NumberOfLinesInTheLastDecompFile,nvar*nexo);
|
||||||
NumberOfDecompLines = NumberOfLinesInTheLastDecompFile;
|
NumberOfDecompLines = NumberOfLinesInTheLastDecompFile;
|
||||||
DecompFileNumber = DecompFileNumber - 1;
|
DecompFileNumber = DecompFileNumber - 1;
|
||||||
elseif test<0;
|
elseif test<0;
|
||||||
Decomposition_array = zeros(MaXNumberOfDecompLines,nvar*(nexo+1));
|
Decomposition_array = zeros(MaXNumberOfDecompLines,nvar*nexo);
|
||||||
else
|
else
|
||||||
clear('Decomposition_array');
|
clear('Decomposition_array');
|
||||||
end
|
end
|
||||||
|
@ -98,10 +94,4 @@ for file = 1:NumberOfDrawsFiles
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
options_.ar = nar;% Useless because options_ is not a global anymore...
|
options_.ar = nar;
|
||||||
|
|
||||||
function r = rows(M)
|
|
||||||
r = size(M,1);
|
|
||||||
|
|
||||||
function c = cols(M)
|
|
||||||
c = size(M,2);
|
|
|
@ -1,15 +1,14 @@
|
||||||
function posterior_analysis(type,arg1,arg2,options_,M_,oo_)
|
function oo_ = posterior_analysis(type,arg1,arg2,options_,M_,oo_)
|
||||||
% part of DYNARE, copyright Dynare Team (2008)
|
% part of DYNARE, copyright Dynare Team (2008)
|
||||||
% Gnu Public License.
|
% Gnu Public License.
|
||||||
|
|
||||||
info = check_posterior_analysis_data(type,M_);
|
info = check_posterior_analysis_data(type,M_);
|
||||||
|
SampleSize = options_.PosteriorSampleSize;
|
||||||
switch info
|
switch info
|
||||||
case 0
|
case 0
|
||||||
disp('check_posterior_analysis_data:: Can''t find any mcmc file!')
|
disp('check_posterior_analysis_data:: Can''t find any mcmc file!')
|
||||||
error('Check the options of the estimation command...')
|
error('Check the options of the estimation command...')
|
||||||
case {1,2}
|
case {1,2}
|
||||||
SampleSize = options_.PosteriorSampleSize;
|
|
||||||
MaxMegaBytes = options_.MaximumNumberOfMegaBytes;
|
MaxMegaBytes = options_.MaximumNumberOfMegaBytes;
|
||||||
drsize = size_of_the_reduced_form_model(oo_.dr);
|
drsize = size_of_the_reduced_form_model(oo_.dr);
|
||||||
if drsize*SampleSize>MaxMegaBytes
|
if drsize*SampleSize>MaxMegaBytes
|
||||||
|
@ -21,117 +20,29 @@ function posterior_analysis(type,arg1,arg2,options_,M_,oo_)
|
||||||
case 'variance'
|
case 'variance'
|
||||||
[nvar,vartan,NumberOfFiles] = ...
|
[nvar,vartan,NumberOfFiles] = ...
|
||||||
dsge_posterior_theoretical_covariance(SampleSize,M_,options_,oo_);
|
dsge_posterior_theoretical_covariance(SampleSize,M_,options_,oo_);
|
||||||
|
oo_ = covariance_posterior_analysis(SampleSize,M_.dname,M_.fname,...
|
||||||
|
vartan,nvar,arg1,arg2,options_.mh_conf_sig,oo_);
|
||||||
case 'decomposition'
|
case 'decomposition'
|
||||||
[nvar,vartan,NumberOfFiles] = ...
|
[nvar,vartan,NumberOfFiles] = ...
|
||||||
dsge_posterior_theoretical_variance_decomposition(SampleSize,M_,options_,oo_);
|
dsge_posterior_theoretical_variance_decomposition(SampleSize,M_,options_,oo_);
|
||||||
|
oo_ = variance_decomposition_posterior_analysis(SampleSize,M_.dname,M_.fname,...
|
||||||
|
M_.exo_names,arg2,vartan,arg1,options_.mh_conf_sig,oo_);
|
||||||
otherwise
|
otherwise
|
||||||
disp('Not yet implemented')
|
disp('Not yet implemented')
|
||||||
end
|
end
|
||||||
case 6
|
case 6
|
||||||
|
[ivar,vartan] = set_stationary_variables_list;
|
||||||
|
nvar = length(ivar);
|
||||||
switch type
|
switch type
|
||||||
case 'variance'
|
case 'variance'
|
||||||
covariance_posterior_analysis(NumberOfFiles,SampleSize,M_.dname,M_.fname,...
|
oo_ = covariance_posterior_analysis(SampleSize,M_.dname,M_.fname,...
|
||||||
vartan,nvar,arg1,arg2);
|
vartan,nvar,arg1,arg2,options_.mh_conf_sig,oo_);
|
||||||
case 'decomposition'
|
case 'decomposition'
|
||||||
variance_decomposition_posterior_analysis(NumberOfFiles,SampleSize,M_.dname,M_.fname,...
|
oo_ = variance_decomposition_posterior_analysis(SampleSize,M_.dname,M_.fname,...
|
||||||
M_.exo_names,arg2,vartan,nvar,arg1);
|
M_.exo_names,arg2,vartan,arg1,options_.mh_conf_sig,oo_);
|
||||||
otherwise
|
otherwise
|
||||||
disp('Not yet implemented')
|
disp('Not yet implemented')
|
||||||
end
|
end
|
||||||
otherwise
|
otherwise
|
||||||
error(['posterior_analysis:: Check_posterior_analysis_data gave a meaningless output!'])
|
error(['posterior_analysis:: Check_posterior_analysis_data gave a meaningless output!'])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function covariance_posterior_analysis(NumberOfFiles,NumberOfSimulations,dname,fname,vartan,nvar,var1,var2)
|
|
||||||
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
|
|
||||||
i1 = 1; tmp = zeros(NumberOfSimulations,1);
|
|
||||||
for file = 1:CovarFileNumber
|
|
||||||
load([ dname '/metropolis/' fname '_Posterior2ndOrderMoments' int2str(file)]);
|
|
||||||
i2 = i1 + rows(Covariance_matrix) - 1;
|
|
||||||
tmp(i1:i2) = Covariance_matrix(:,symmetric_matrix_index(indx1,indx2,nvar));
|
|
||||||
i1 = i2+1;
|
|
||||||
end
|
|
||||||
[post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ...
|
|
||||||
posterior_moments(tmp,1,options_.mh_conf_sig);
|
|
||||||
if strcmpi(var1,var2)
|
|
||||||
name = var1;
|
|
||||||
else
|
|
||||||
name = [var1 '.' var2];
|
|
||||||
end
|
|
||||||
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;']);
|
|
||||||
|
|
||||||
|
|
||||||
function variance_decomposition_posterior_analysis(NumberOfFiles,NumberOfSimulations,dname,fname, ...
|
|
||||||
exonames,exo,vartan,nvar,var)
|
|
||||||
indx1 = check_name(vartan,var)
|
|
||||||
if isempty(indx)
|
|
||||||
disp(['posterior_analysis:: ' var ' is not a stationary endogenous variable!'])
|
|
||||||
return
|
|
||||||
end
|
|
||||||
jndx = check_name(exonames,exo);
|
|
||||||
if isempty(jndx)
|
|
||||||
disp(['posterior_analysis:: ' exo ' is not a declared exogenous variable!'])
|
|
||||||
return
|
|
||||||
end
|
|
||||||
i1 = 1; tmp = zeros(NumberOfSimulations,1);
|
|
||||||
for file = 1:NumberOfFiles
|
|
||||||
load([fname '_PosteriorVarianceDecomposition' int2str(file)]);
|
|
||||||
i2 = i1 + rows(Decomposition_array) - 1;
|
|
||||||
tmp(i1:i2) = Decomposition_array(:,nvar+(i-1)*nexo+j);
|
|
||||||
i1 = i2+1;
|
|
||||||
end
|
|
||||||
name = [ var '.' exo ];
|
|
||||||
t1 = min(tmp); t2 = max(tmp);
|
|
||||||
t3 = t2-t1;% How to normalize ? t1 and t2 may be zero...
|
|
||||||
if t3<1.0e-12
|
|
||||||
if t1<1.0e-12
|
|
||||||
t1 = 0;
|
|
||||||
end
|
|
||||||
if abs(t1-1)<1.0e-12
|
|
||||||
t1 = 1;
|
|
||||||
end
|
|
||||||
post_mean = t1;
|
|
||||||
post_median = t1;
|
|
||||||
post_var = 0;
|
|
||||||
hpd_interval = NaN(2,1);
|
|
||||||
post_deciles = NaN(9,1);
|
|
||||||
density = NaN;
|
|
||||||
else
|
|
||||||
[post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ...
|
|
||||||
posterior_moments(tmp,1,options_.mh_conf_sig);
|
|
||||||
end
|
|
||||||
eval(['oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.mean.' name ' = post_mean;']);
|
|
||||||
eval(['oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.median.' name ' = post_median;']);
|
|
||||||
eval(['oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.variance.' name ' = post_var;']);
|
|
||||||
eval(['oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.hpdinf.' name ' = hpd_interval(1);']);
|
|
||||||
eval(['oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.hpdsup.' name ' = hpd_interval(2);']);
|
|
||||||
eval(['oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.deciles.' name ' = post_deciles;']);
|
|
||||||
eval(['oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.density.' name ' = density;']);
|
|
||||||
|
|
||||||
|
|
||||||
function n = check_name(vartan,varname)
|
|
||||||
n = strmatch(varname,vartan,'exact')
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
function oo_ = variance_decomposition_posterior_analysis(NumberOfSimulations,dname,fname, ...
|
||||||
|
exonames,exo,vartan,var,mh_conf_sig,oo_)
|
||||||
|
indx = check_name(vartan,var);
|
||||||
|
if isempty(indx)
|
||||||
|
disp(['posterior_analysis:: ' var ' is not a stationary endogenous variable!'])
|
||||||
|
return
|
||||||
|
end
|
||||||
|
jndx = check_name(exonames,exo);
|
||||||
|
if isempty(jndx)
|
||||||
|
disp(['posterior_analysis:: ' exo ' is not a declared exogenous variable!'])
|
||||||
|
return
|
||||||
|
end
|
||||||
|
tmp = dir([ dname '/metropolis/' fname '_PosteriorVarianceDecomposition*.mat']);
|
||||||
|
NumberOfFiles = length(tmp);
|
||||||
|
i1 = 1; tmp = zeros(NumberOfSimulations,1);
|
||||||
|
indice = (indx-1)*rows(exonames)+jndx;
|
||||||
|
for file = 1:NumberOfFiles
|
||||||
|
load([dname '/metropolis/' fname '_PosteriorVarianceDecomposition' int2str(file) '.mat']);
|
||||||
|
i2 = i1 + rows(Decomposition_array) - 1;
|
||||||
|
tmp(i1:i2) = Decomposition_array(:,indice);
|
||||||
|
i1 = i2+1;
|
||||||
|
end
|
||||||
|
name = [ var '.' exo ];
|
||||||
|
if isfield(oo_,'PosteriorTheoreticalMoments')
|
||||||
|
if isfield(oo_.PosteriorTheoreticalMoments,'dsge')
|
||||||
|
if isfield(oo_.PosteriorTheoreticalMoments.dsge,'VarianceDecomposition')
|
||||||
|
if isfield(oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.mean,name)
|
||||||
|
% Nothing to do.
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
t1 = min(tmp); t2 = max(tmp);
|
||||||
|
t3 = t2-t1;% How to normalize ? t1 and t2 may be zero...
|
||||||
|
if t3<1.0e-12
|
||||||
|
if t1<1.0e-12
|
||||||
|
t1 = 0;
|
||||||
|
end
|
||||||
|
if abs(t1-1)<1.0e-12
|
||||||
|
t1 = 1;
|
||||||
|
end
|
||||||
|
post_mean = t1;
|
||||||
|
post_median = t1;
|
||||||
|
post_var = 0;
|
||||||
|
hpd_interval = NaN(2,1);
|
||||||
|
post_deciles = NaN(9,1);
|
||||||
|
density = NaN;
|
||||||
|
else
|
||||||
|
[post_mean, post_median, post_var, hpd_interval, post_deciles, density] = ...
|
||||||
|
posterior_moments(tmp,1,mh_conf_sig);
|
||||||
|
end
|
||||||
|
eval(['oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.mean.' name ' = post_mean;']);
|
||||||
|
eval(['oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.median.' name ' = post_median;']);
|
||||||
|
eval(['oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.variance.' name ' = post_var;']);
|
||||||
|
eval(['oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.hpdinf.' name ' = hpd_interval(1);']);
|
||||||
|
eval(['oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.hpdsup.' name ' = hpd_interval(2);']);
|
||||||
|
eval(['oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.deciles.' name ' = post_deciles;']);
|
||||||
|
eval(['oo_.PosteriorTheoreticalMoments.dsge.VarianceDecomposition.density.' name ' = density;']);
|
Loading…
Reference in New Issue