dynare/matlab/doc/PosteriorIRF.html

288 lines
19 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<title>Description of PosteriorIRF</title>
<meta name="keywords" content="PosteriorIRF">
<meta name="description" content="stephane.adjemian@ens.fr [09-25-2005]">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">
<meta name="robots" content="index, follow">
<link type="text/css" rel="stylesheet" href="../m2html.css">
</head>
<body>
<a name="_top"></a>
<div><a href="../index.html">Home</a> &gt; <a href="index.html">.</a> &gt; PosteriorIRF.m</div>
<!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png">&nbsp;Master index</a></td>
<td align="right"><a href="index.html">Index for .&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
<h1>PosteriorIRF
</h1>
<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="box"><strong>stephane.adjemian@ens.fr [09-25-2005]</strong></div>
<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="box"><strong>function PosteriorIRF(type) </strong></div>
<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="fragment"><pre class="comment"> stephane.adjemian@ens.fr [09-25-2005]</pre></div>
<!-- crossreference -->
<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
This function calls:
<ul style="list-style-image:url(../matlabicon.gif)">
<li><a href="CheckPath.html" class="code" title="function DirectoryName = CheckPath(type)">CheckPath</a> 06-03-2005</li><li><a href="GetOneDraw.html" class="code" title="function [xparams, logpost] = GetOneDraw(type)">GetOneDraw</a> stephane.adjemian@ens.fr [09-25-2005]</li><li><a href="ReshapeMatFiles.html" class="code" title="function ReshapeMatFiles(type)">ReshapeMatFiles</a> Reshape and sort (along the mcmc simulations) the mat files generated</li><li><a href="irf.html" class="code" title="function y = irf(dr, e1, long, drop, replic, iorder)">irf</a> </li><li><a href="posterior_moments.html" class="code" title="function [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(xx,info)">posterior_moments</a> stephane.adjemian@ens.fr [09-09-2005]</li><li><a href="resol.html" class="code" title="function [dr,info]=resol(ys,check_flag)">resol</a> Copyright (C) 2001 Michel Juillard</li><li><a href="set_parameters.html" class="code" title="function set_parameters(xparam1)">set_parameters</a> </li></ul>
This function is called by:
<ul style="list-style-image:url(../matlabicon.gif)">
<li><a href="dynare_estimation.html" class="code" title="function dynare_estimation(var_list_)">dynare_estimation</a> </li></ul>
<!-- crossreference -->
<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function PosteriorIRF(type)</a>
0002 <span class="comment">% stephane.adjemian@ens.fr [09-25-2005]</span>
0003 <span class="keyword">global</span> options_ estim_params_ oo_ M_
0004 nvx = estim_params_.nvx;
0005 nvn = estim_params_.nvn;
0006 ncx = estim_params_.ncx;
0007 ncn = estim_params_.ncn;
0008 np = estim_params_.np ;
0009 npar = nvx+nvn+ncx+ncn+np;
0010 offset = npar-np;
0011 <span class="comment">%%</span>
0012 MaxNumberOfPlotPerFigure = 9;<span class="comment">% The square root must be an integer!</span>
0013 nn = sqrt(MaxNumberOfPlotPerFigure);
0014 DirectoryName = <a href="CheckPath.html" class="code" title="function DirectoryName = CheckPath(type)">CheckPath</a>(<span class="string">'Output'</span>);
0015 <span class="keyword">if</span> strcmpi(type,<span class="string">'posterior'</span>)
0016 MhDirectoryName = <a href="CheckPath.html" class="code" title="function DirectoryName = CheckPath(type)">CheckPath</a>(<span class="string">'metropolis'</span>);
0017 <span class="keyword">else</span>
0018 MhDirectoryName = <a href="CheckPath.html" class="code" title="function DirectoryName = CheckPath(type)">CheckPath</a>(<span class="string">'prior'</span>);
0019 <span class="keyword">end</span>
0020 MAX_nirfs = ceil(options_.MaxNumberOfBytes/(options_.irf*length(oo_.steady_state)*M_.exo_nbr)/8)+50;
0021 MAX_nruns = ceil(options_.MaxNumberOfBytes/(npar+2)/8);
0022
0023 <span class="keyword">if</span> strcmpi(type,<span class="string">'posterior'</span>)
0024 load([ MhDirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_mh_history'</span>])
0025 TotalNumberOfMhDraws = sum(record.MhDraws(:,1));
0026 NumberOfDraws = TotalNumberOfMhDraws-floor(options_.mh_drop*TotalNumberOfMhDraws);
0027 <span class="keyword">else</span><span class="comment">% type = 'prior'</span>
0028 NumberOfDraws = 500;
0029 <span class="keyword">end</span>
0030 B = min([round(.5*NumberOfDraws),500]); options_.B = B;
0031 <span class="keyword">try</span> delete([MhDirectoryName <span class="string">'\'</span> M_.fname <span class="string">'_IRFs*'</span>]);
0032 <span class="keyword">catch</span> disp(<span class="string">'No _IRFs files to be deleted!'</span>)
0033 <span class="keyword">end</span>
0034 irun = 0;
0035 irun2 = 0;
0036 NumberOfIRFfiles = 1;
0037 ifil2 = 1;
0038 <span class="keyword">if</span> strcmpi(type,<span class="string">'posterior'</span>)
0039 h = waitbar(0,<span class="string">'Bayesian (posterior) IRFs...'</span>);
0040 <span class="keyword">else</span>
0041 h = waitbar(0,<span class="string">'Bayesian (prior) IRFs...'</span>);
0042 <span class="keyword">end</span>
0043 <span class="keyword">if</span> B &lt;= MAX_nruns
0044 stock_param = zeros(B, npar);
0045 <span class="keyword">else</span>
0046 stock_param = zeros(MAX_nruns, npar);
0047 <span class="keyword">end</span>
0048 <span class="keyword">if</span> B &gt;= MAX_nirfs
0049 stock_irf = zeros(options_.irf,M_.endo_nbr,M_.exo_nbr,MAX_nirfs);
0050 <span class="keyword">else</span>
0051 stock_irf = zeros(options_.irf,M_.endo_nbr,M_.exo_nbr,B);
0052 <span class="keyword">end</span>
0053 <span class="keyword">for</span> b=1:B
0054 irun = irun+1;
0055 irun2 = irun2+1;
0056 deep = <a href="GetOneDraw.html" class="code" title="function [xparams, logpost] = GetOneDraw(type)">GetOneDraw</a>(type);
0057 stock_param(irun2,:) = deep;
0058 <a href="set_parameters.html" class="code" title="function set_parameters(xparam1)">set_parameters</a>(deep);
0059 dr = <a href="resol.html" class="code" title="function [dr,info]=resol(ys,check_flag)">resol</a>(oo_.steady_state,0);
0060 SS(M_.exo_names_orig_ord,M_.exo_names_orig_ord) = M_.Sigma_e+1e-14*eye(M_.exo_nbr);
0061 SS = transpose(chol(SS));
0062 <span class="keyword">for</span> i = 1:M_.exo_nbr
0063 <span class="keyword">if</span> SS(i,i) &gt; 1e-13
0064 y=<a href="irf.html" class="code" title="function y = irf(dr, e1, long, drop, replic, iorder)">irf</a>(dr,SS(M_.exo_names_orig_ord,i), options_.irf, options_.drop,options_.replic,options_.order);
0065 <span class="keyword">if</span> options_.relative_irf
0066 y = 100*y/cs(i,i);
0067 <span class="keyword">end</span>
0068 <span class="keyword">for</span> j = 1:M_.endo_nbr
0069 <span class="keyword">if</span> max(y(j,:)) - min(y(j,:)) &gt; 1e-10
0070 stock_irf(:,j,i,irun) = transpose(y(j,:));
0071 <span class="keyword">end</span>
0072 <span class="keyword">end</span>
0073 <span class="keyword">end</span>
0074 <span class="keyword">end</span>
0075 <span class="keyword">if</span> irun == MAX_nirfs | irun == B | b == B
0076 <span class="keyword">if</span> b == B
0077 stock_irf = stock_irf(:,:,:,1:irun);
0078 <span class="keyword">end</span>
0079 save([MhDirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_irf'</span> int2str(NumberOfIRFfiles)],<span class="string">'stock_irf'</span>);
0080 NumberOfIRFfiles = NumberOfIRFfiles+1;
0081 irun = 0;
0082 <span class="keyword">end</span>
0083 <span class="keyword">if</span> irun2 &gt; MAX_nruns | b == B
0084 <span class="keyword">if</span> b == B
0085 stock_param = stock_param(1:irun2,:);
0086 <span class="keyword">end</span>
0087 stock = stock_param;
0088 save([MhDirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_param_irf'</span> int2str(ifil2)],<span class="string">'stock'</span>);
0089 ifil2 = ifil2 + 1;
0090 irun2 = 1;
0091 <span class="keyword">end</span>
0092 waitbar(b/B,h);
0093 <span class="keyword">end</span>
0094 NumberOfIRFfiles = NumberOfIRFfiles-1;
0095 ifil2 = ifil2-1;
0096 close(h);
0097
0098 <a href="ReshapeMatFiles.html" class="code" title="function ReshapeMatFiles(type)">ReshapeMatFiles</a>(<span class="string">'irf'</span>)
0099
0100 varlist = options_.varlist;
0101 <span class="keyword">if</span> isempty(varlist)
0102 varlist = M_.endo_names;
0103 SelecVariables = transpose(1:M_.endo_nbr);
0104 nvar = M_.endo_nbr;
0105 <span class="keyword">else</span>
0106 nvar = size(varlist,1);
0107 SelecVariables = [];
0108 <span class="keyword">for</span> i=1:nvar
0109 <span class="keyword">if</span> ~isempty(strmatch(varlist(i,:),M_.endo_names,<span class="string">'exact'</span>))
0110 SelecVariables = [SelecVariables;strmatch(varlist(i,:),M_.endo_names,<span class="string">'exact'</span>)];
0111 <span class="keyword">end</span>
0112 <span class="keyword">end</span>
0113 <span class="keyword">end</span>
0114
0115 MeanIRF = zeros(options_.irf,nvar,M_.exo_nbr);
0116 MedianIRF = zeros(options_.irf,nvar,M_.exo_nbr);
0117 StdIRF = zeros(options_.irf,nvar,M_.exo_nbr);
0118 DistribIRF = zeros(options_.irf,9,nvar,M_.exo_nbr);
0119 HPDIRF = zeros(options_.irf,2,nvar,M_.exo_nbr);
0120
0121 <span class="keyword">if</span> options_.TeX
0122 varlist_TeX = [];
0123 <span class="keyword">for</span> i=1:nvar
0124 varlist_TeX = strvcat(varlist_TeX,M_.endo_names_tex(SelecVariables(i),:));
0125 <span class="keyword">end</span>
0126 <span class="keyword">end</span>
0127
0128 fprintf(<span class="string">'MH: Posterior IRFs...\n'</span>);
0129 tit(M_.exo_names_orig_ord,:) = M_.exo_names;
0130 kdx = 0;
0131 <span class="keyword">for</span> file = 1:NumberOfIRFfiles
0132 load([MhDirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_IRFs'</span> int2str(file)]);
0133 <span class="keyword">for</span> i = 1:M_.exo_nbr
0134 <span class="keyword">for</span> j = 1:nvar
0135 <span class="keyword">for</span> k = 1:size(STOCK_IRF,1)
0136 kk = k+kdx;
0137 [MeanIRF(kk,j,i),MedianIRF(kk,j,i),VarIRF(kk,j,i),HPDIRF(kk,:,j,i),DistribIRF(kk,:,j,i)] = <span class="keyword">...</span>
0138 <a href="posterior_moments.html" class="code" title="function [post_mean, post_median, post_var, hpd_interval, post_deciles, density] = posterior_moments(xx,info)">posterior_moments</a>(squeeze(STOCK_IRF(k,SelecVariables(j),i,:)),0);
0139 <span class="keyword">end</span>
0140 <span class="keyword">end</span>
0141 <span class="keyword">end</span>
0142 kdx = kdx + size(STOCK_IRF,1);
0143 <span class="keyword">end</span>
0144 clear STOCK_IRF;
0145
0146 <span class="keyword">for</span> i = 1:M_.exo_nbr
0147 <span class="keyword">for</span> j = 1:nvar
0148 name = [deblank(M_.endo_names(SelecVariables(j),:)) <span class="string">'_'</span> deblank(tit(i,:))];
0149 eval([<span class="string">'oo_.PosteriorIRF.Mean.'</span> name <span class="string">' = MeanIRF(:,j,i);'</span>]);
0150 eval([<span class="string">'oo_.PosteriorIRF.Median.'</span> name <span class="string">' = MedianIRF(:,j,i);'</span>]);
0151 eval([<span class="string">'oo_.PosteriorIRF.Var.'</span> name <span class="string">' = VarIRF(:,j,i);'</span>]);
0152 eval([<span class="string">'oo_.PosteriorIRF.Distribution.'</span> name <span class="string">' = DistribIRF(:,:,j,i);'</span>]);
0153 eval([<span class="string">'oo_.PosteriorIRF.HPDinf.'</span> name <span class="string">' = HPDIRF(:,1,j,i);'</span>]);
0154 eval([<span class="string">'oo_.PosteriorIRF.HPDsup.'</span> name <span class="string">' = HPDIRF(:,2,j,i);'</span>]);
0155 <span class="keyword">end</span>
0156 <span class="keyword">end</span>
0157 <span class="comment">%%</span>
0158 <span class="comment">%% Finally i build the plots.</span>
0159 <span class="comment">%%</span>
0160 <span class="keyword">if</span> options_.TeX
0161 fidTeX = fopen([DirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_BayesianIRF.TeX'</span>],<span class="string">'w'</span>);
0162 fprintf(fidTeX,<span class="string">'%% TeX eps-loader file generated by PosteriorIRF.m (Dynare).\n'</span>);
0163 fprintf(fidTeX,[<span class="string">'%% '</span> datestr(now,0) <span class="string">'\n'</span>]);
0164 fprintf(fidTeX,<span class="string">' \n'</span>);
0165 titTeX(M_.exo_names_orig_ord,:) = M_.exo_names_tex;
0166 <span class="keyword">end</span>
0167 <span class="comment">%%</span>
0168 subplotnum = 0;
0169 <span class="keyword">for</span> i=1:M_.exo_nbr
0170 NAMES = [];
0171 <span class="keyword">if</span> options_.TeX
0172 TEXNAMES = [];
0173 <span class="keyword">end</span>
0174 figunumber = 0;
0175 <span class="keyword">for</span> j=1:nvar
0176 <span class="keyword">if</span> max(abs(MeanIRF(:,j,i))) &gt; 10^(-6)
0177 subplotnum = subplotnum+1;
0178 <span class="keyword">if</span> options_.nograph
0179 <span class="keyword">if</span> subplotnum == 1 &amp; options_.relative_irf
0180 hh = figure(<span class="string">'Name'</span>,[<span class="string">'Relative response to orthogonalized shock to '</span> tit(i,:)],<span class="string">'Visible'</span>,<span class="string">'off'</span>);
0181 <span class="keyword">elseif</span> subplotnum == 1 &amp; ~options_.relative_irf
0182 hh = figure(<span class="string">'Name'</span>,[<span class="string">'Orthogonalized shock to '</span> tit(i,:)],<span class="string">'Visible'</span>,<span class="string">'off'</span>);
0183 <span class="keyword">end</span>
0184 <span class="keyword">else</span>
0185 <span class="keyword">if</span> subplotnum == 1 &amp; options_.relative_irf
0186 hh = figure(<span class="string">'Name'</span>,[<span class="string">'Relative response to orthogonalized shock to '</span> tit(i,:)]);
0187 <span class="keyword">elseif</span> subplotnum == 1 &amp; ~options_.relative_irf
0188 hh = figure(<span class="string">'Name'</span>,[<span class="string">'Orthogonalized shock to '</span> tit(i,:)]);
0189 <span class="keyword">end</span>
0190 <span class="keyword">end</span>
0191 set(0,<span class="string">'CurrentFigure'</span>,hh)
0192 subplot(nn,nn,subplotnum);
0193 plot([1 options_.irf],[0 0],<span class="string">'-r'</span>,<span class="string">'linewidth'</span>,0.5);
0194 hold on
0195 <span class="keyword">for</span> k = 1:9
0196 plot(1:options_.irf,DistribIRF(:,k,j,i),<span class="string">'-g'</span>,<span class="string">'linewidth'</span>,0.5)
0197 <span class="keyword">end</span>
0198 plot(1:options_.irf,MeanIRF(:,j,i),<span class="string">'-k'</span>,<span class="string">'linewidth'</span>,1)
0199 xlim([1 options_.irf]);
0200 hold off
0201 name = deblank(varlist(j,:));
0202 NAMES = strvcat(NAMES,name);
0203 <span class="keyword">if</span> options_.TeX
0204 texname = deblank(varlist_TeX(j,:));
0205 TEXNAMES = strvcat(TEXNAMES,[<span class="string">'$'</span> texname <span class="string">'$'</span>]);
0206 <span class="keyword">end</span>
0207 title(name,<span class="string">'Interpreter'</span>,<span class="string">'none'</span>)
0208 <span class="keyword">end</span>
0209 <span class="keyword">if</span> subplotnum == MaxNumberOfPlotPerFigure | (j == nvar &amp; subplotnum&gt;0)
0210 figunumber = figunumber+1;
0211 set(hh,<span class="string">'visible'</span>,<span class="string">'on'</span>)
0212 eval([<span class="string">'print -depsc2 '</span> DirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_Bayesian_IRF_'</span> deblank(tit(i,:)) <span class="string">'_'</span> int2str(figunumber)]);
0213 eval([<span class="string">'print -dpdf '</span> DirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_Bayesian_IRF_'</span> deblank(tit(i,:)) <span class="string">'_'</span> int2str(figunumber)]);
0214 saveas(hh,[DirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_Bayesian_IRF_'</span> deblank(tit(i,:)) <span class="string">'_'</span> int2str(figunumber) <span class="string">'.fig'</span>]);
0215 set(hh,<span class="string">'visible'</span>,<span class="string">'off'</span>)
0216 <span class="keyword">if</span> options_.nograph, close(hh), <span class="keyword">end</span>
0217 <span class="keyword">if</span> options_.TeX
0218 fprintf(fidTeX,<span class="string">'\\begin{figure}[H]\n'</span>);
0219 <span class="keyword">for</span> jj = 1:size(TEXNAMES,1)
0220 fprintf(fidTeX,[<span class="string">'\\psfrag{%s}[1][][0.5][0]{%s}\n'</span>],deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
0221 <span class="keyword">end</span>
0222 fprintf(fidTeX,<span class="string">'\\centering \n'</span>);
0223 fprintf(fidTeX,<span class="string">'\\includegraphics[scale=0.5]{%s_Bayesian_IRF_%s}\n'</span>,M_.fname,deblank(tit(i,:)));
0224 <span class="keyword">if</span> options_.relative_irf
0225 fprintf(fidTeX,[<span class="string">'\\caption{Bayesian relative IRF.}'</span>]);
0226 <span class="keyword">else</span>
0227 fprintf(fidTeX,<span class="string">'\\caption{Bayesian IRF.}'</span>);
0228 <span class="keyword">end</span>
0229 fprintf(fidTeX,<span class="string">'\\label{Fig:BayesianIRF:%s}\n'</span>,deblank(tit(i,:)));
0230 fprintf(fidTeX,<span class="string">'\\end{figure}\n'</span>);
0231 fprintf(fidTeX,<span class="string">' \n'</span>);
0232 <span class="keyword">end</span>
0233 subplotnum = 0;
0234 <span class="keyword">end</span>
0235 <span class="keyword">end</span><span class="comment">% loop over selected endo_var</span>
0236 <span class="keyword">end</span><span class="comment">% loop over exo_var</span>
0237 <span class="comment">%%</span>
0238 <span class="keyword">if</span> options_.TeX
0239 fprintf(fidTeX,<span class="string">'%% End of TeX file.\n'</span>);
0240 fclose(fidTeX);
0241 <span class="keyword">end</span>
0242 fprintf(<span class="string">'MH: Posterior IRFs, done!\n'</span>);</pre></div>
<hr><address>Generated on Fri 16-Jun-2006 09:09:06 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
</body>
</html>