0001 function [nvar,vartan,NumberOfDecompFiles] = ...
0002 dsge_simulated_theoretical_variance_decomposition(SampleSize,M_,options_,oo_,type)
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036 nodecomposition = 0;
0037
0038
0039 if strcmpi(type,'posterior')
0040 DrawsFiles = dir([M_.dname '/metropolis/' M_.fname '_' type '_draws*' ]);
0041 posterior = 1;
0042 elseif strcmpi(type,'prior')
0043 DrawsFiles = dir([M_.dname '/prior/draws/' type '_draws*' ]);
0044 CheckPath('prior/moments',M_.dname);
0045 posterior = 0;
0046 else
0047 disp('dsge_simulated_theoretical_variance_decomposition:: Unknown type!')
0048 error()
0049 end
0050 NumberOfDrawsFiles = length(DrawsFiles);
0051
0052
0053 if ~posterior
0054 if isfield(options_,'varlist')
0055 temp = options_.varlist;
0056 end
0057 options_.varlist = options_.prior_analysis_endo_var_list;
0058 end
0059 [ivar,vartan,options_] = set_stationary_variables_list(options_,M_);
0060 if ~posterior
0061 if exist('temp','var')
0062 options_.varlist = temp;
0063 end
0064 end
0065 nvar = length(ivar);
0066
0067
0068 nar = options_.ar;
0069 options_.ar = 0;
0070
0071
0072
0073 nexo = M_.exo_nbr;
0074
0075 NumberOfDrawsFiles = rows(DrawsFiles);
0076 NumberOfSavedElementsPerSimulation = nvar*(nexo+1);
0077 MaXNumberOfDecompLines = ceil(options_.MaxNumberOfBytes/NumberOfSavedElementsPerSimulation/8);
0078
0079 if SampleSize<=MaXNumberOfDecompLines
0080 Decomposition_array = zeros(SampleSize,nvar*nexo);
0081 NumberOfDecompFiles = 1;
0082 else
0083 Decomposition_array = zeros(MaXNumberOfDecompLines,nvar*nexo);
0084 NumberOfLinesInTheLastDecompFile = mod(SampleSize,MaXNumberOfDecompLines);
0085 NumberOfDecompFiles = ceil(SampleSize/MaXNumberOfDecompLines);
0086 end
0087
0088 NumberOfDecompLines = rows(Decomposition_array);
0089 DecompFileNumber = 1;
0090
0091
0092
0093 linea = 0;
0094 for file = 1:NumberOfDrawsFiles
0095 if posterior
0096 load([M_.dname '/metropolis/' DrawsFiles(file).name ]);
0097 else
0098 load([M_.dname '/prior/draws/' DrawsFiles(file).name ]);
0099 end
0100 isdrsaved = columns(pdraws)-1;
0101 NumberOfDraws = rows(pdraws);
0102 for linee = 1:NumberOfDraws
0103 linea = linea+1;
0104 if isdrsaved
0105 dr = pdraws{linee,2};
0106 else
0107 set_parameters(pdraws{linee,1});
0108 [dr,info,M_,options_,oo_] = resol(0,M_,options_,oo_);
0109 end
0110 tmp = th_autocovariances(dr,ivar,M_,options_,nodecomposition);
0111 for i=1:nvar
0112 for j=1:nexo
0113 Decomposition_array(linea,(i-1)*nexo+j) = tmp{2}(i,j);
0114 end
0115 end
0116 if linea == NumberOfDecompLines
0117 if posterior
0118 save([M_.dname '/metropolis/' M_.fname '_PosteriorVarianceDecomposition' int2str(DecompFileNumber) '.mat' ],'Decomposition_array');
0119 else
0120 save([M_.dname '/prior/moments/' M_.fname '_PriorVarianceDecomposition' int2str(DecompFileNumber) '.mat' ],'Decomposition_array');
0121 end
0122 DecompFileNumber = DecompFileNumber + 1;
0123 linea = 0;
0124 test = DecompFileNumber-NumberOfDecompFiles;
0125 if ~test
0126 Decomposition_array = zeros(NumberOfLinesInTheLastDecompFile,nvar*nexo);
0127 NumberOfDecompLines = NumberOfLinesInTheLastDecompFile;
0128 DecompFileNumber = DecompFileNumber - 1;
0129 elseif test<0;
0130 Decomposition_array = zeros(MaXNumberOfDecompLines,nvar*nexo);
0131 else
0132 clear('Decomposition_array');
0133 end
0134 end
0135 end
0136 end
0137
0138 options_.ar = nar;