dynare/matlab/doc/PosteriorSmoother.html

228 lines
12 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 PosteriorSmoother</title>
<meta name="keywords" content="PosteriorSmoother">
<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; PosteriorSmoother.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>PosteriorSmoother
</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 PosteriorSmoother(Y,gend, 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="DsgeSmoother.html" class="code" title="function [alphahat,etahat,epsilonhat,ahat,SteadyState,trend_coeff,aK] = DsgeSmoother(xparam1,gend,Y)">DsgeSmoother</a> stephane.adjemian@cepremap.cnrs.fr [09-07-2004]</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="resol.html" class="code" title="function [dr,info]=resol(ys,check_flag)">resol</a> Copyright (C) 2001 Michel Juillard</li><li><a href="set_all_parameters.html" class="code" title="function set_all_parameters(xparam1)">set_all_parameters</a> </li></ul>
This function is called by:
<ul style="list-style-image:url(../matlabicon.gif)">
</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 PosteriorSmoother(Y,gend, 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
0005 nvx = estim_params_.nvx;
0006 nvn = estim_params_.nvn;
0007 ncx = estim_params_.ncx;
0008 ncn = estim_params_.ncn;
0009 np = estim_params_.np ;
0010 npar = nvx+nvn+ncx+ncn+np;
0011 offset = npar-np;
0012 naK = length(options_.filter_step_ahead);
0013 <span class="comment">%%</span>
0014 MaxNumberOfPlotPerFigure = 4;<span class="comment">% The square root must be an integer!</span>
0015 MaxNumberOfBytes=options_.MaxNumberOfBytes;
0016 endo_nbr=M_.endo_nbr;
0017 exo_nbr=M_.exo_nbr;
0018 nvobs = size(options_.varobs,1);
0019 nn = sqrt(MaxNumberOfPlotPerFigure);
0020 <span class="comment">%%</span>
0021 <a href="CheckPath.html" class="code" title="function DirectoryName = CheckPath(type)">CheckPath</a>(<span class="string">'Plots/'</span>);
0022 DirectoryName = <a href="CheckPath.html" class="code" title="function DirectoryName = CheckPath(type)">CheckPath</a>(<span class="string">'metropolis'</span>);
0023 load([ DirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_mh_history'</span>])
0024 FirstMhFile = record.KeepedDraws.FirstMhFile;
0025 FirstLine = record.KeepedDraws.FirstLine;
0026 TotalNumberOfMhFiles = sum(record.MhDraws(:,2)); LastMhFile = TotalNumberOfMhFiles;
0027 TotalNumberOfMhDraws = sum(record.MhDraws(:,1));
0028 NumberOfDraws = TotalNumberOfMhDraws-floor(options_.mh_drop*TotalNumberOfMhDraws);
0029 clear record;
0030 MAX_nruns = ceil(options_.MaxNumberOfBytes/(npar+2)/8);
0031 MAX_nsmoo = ceil(MaxNumberOfBytes/((endo_nbr)*gend)/8);
0032 MAX_ninno = ceil(MaxNumberOfBytes/(exo_nbr*gend)/8);
0033 MAX_nerro = ceil(MaxNumberOfBytes/(size(options_.varobs,1)*gend)/8);
0034 MAX_naK = ceil(MaxNumberOfBytes/(size(options_.varobs,1)*length(options_.filter_step_ahead)*gend)/8);
0035 <span class="comment">%%</span>
0036 B = round(0.25*NumberOfDraws);
0037 <span class="comment">%%</span>
0038 varlist = options_.varlist;
0039 <span class="keyword">if</span> isempty(varlist)
0040 varlist = M_.endo_names;
0041 SelecVariables = transpose(1:M_.endo_nbr);
0042 nvar = M_.endo_nbr;
0043 <span class="keyword">else</span>
0044 nvar = size(varlist,1);
0045 SelecVariables = [];
0046 <span class="keyword">for</span> i=1:nvar
0047 <span class="keyword">if</span> ~isempty(strmatch(varlist(i,:),M_.endo_names,<span class="string">'exact'</span>))
0048 SelecVariables = [SelecVariables;strmatch(varlist(i,:),M_.endo_names,<span class="string">'exact'</span>)];
0049 <span class="keyword">end</span>
0050 <span class="keyword">end</span>
0051 <span class="keyword">end</span>
0052
0053 irun1 = 1;
0054 irun2 = 1;
0055 irun3 = 1;
0056 irun4 = 1;
0057 irun5 = 1;
0058 ifil1 = 1;
0059 ifil2 = 1;
0060 ifil3 = 1;
0061 ifil4 = 1;
0062 ifil5 = 1;
0063 h = waitbar(0,<span class="string">'Bayesian smoother...'</span>);
0064 <span class="keyword">if</span> B &lt;= MAX_nruns
0065 stock_param = zeros(B, npar);
0066 stock_logpo = zeros(B,1);
0067 stock_ys = zeros(B,endo_nbr);
0068 <span class="keyword">else</span>
0069 stock_param = zeros(MAX_nruns, npar);
0070 stock_logpo = zeros(MAX_nruns,1);
0071 stock_ys = zeros(MAX_nruns,endo_nbr);
0072 <span class="keyword">end</span>
0073 <span class="keyword">if</span> options_.smoother
0074 <span class="keyword">if</span> B &lt;= MAX_nsmoo
0075 stock_smooth = zeros(endo_nbr,gend,B);
0076 <span class="keyword">else</span>
0077 stock_smooth = zeros(endo_nbr,gend,MAX_nsmoo);
0078 <span class="keyword">end</span>
0079 <span class="keyword">if</span> B &lt;= MAX_ninno
0080 stock_innov = zeros(exo_nbr,gend,B);
0081 <span class="keyword">else</span>
0082 stock_innov = zeros(exo_nbr,gend,MAX_ninno);
0083 <span class="keyword">end</span>
0084 <span class="keyword">if</span> nvn &amp; B &lt;= MAX_nerro
0085 stock_error = zeros(nvobs,gend,B);
0086 <span class="keyword">else</span> nvn &amp; B &gt; MAX_nerro
0087 stock_error = zeros(nvobs,gend,MAX_nerro);
0088 <span class="keyword">end</span>
0089 <span class="keyword">end</span>
0090 <span class="keyword">if</span> options_.filter_step_ahead ~= 0
0091 <span class="keyword">if</span> B &lt;= MAX_naK
0092 stock_filter = zeros(naK,endo_nbr,gend+options_.filter_step_ahead(end),B);
0093 <span class="keyword">else</span>
0094 stock_filter = zeros(naK,endo_nbr,gend+options_.filter_step_ahead(end),MAX_naK);
0095 <span class="keyword">end</span>
0096 <span class="keyword">end</span>
0097 <span class="keyword">for</span> b=1:B
0098 <span class="comment">%deep = GetOneDraw(NumberOfDraws,FirstMhFile,LastMhFile,FirstLine,MAX_nruns,DirectoryName);</span>
0099 [deep, logpo] = <a href="GetOneDraw.html" class="code" title="function [xparams, logpost] = GetOneDraw(type)">GetOneDraw</a>(type);
0100 <a href="set_all_parameters.html" class="code" title="function set_all_parameters(xparam1)">set_all_parameters</a>(deep);
0101 dr = <a href="resol.html" class="code" title="function [dr,info]=resol(ys,check_flag)">resol</a>(oo_.steady_state,0);
0102 [alphahat,etahat,epsilonhat,ahat,SteadyState,trend_coeff,aK] = <a href="DsgeSmoother.html" class="code" title="function [alphahat,etahat,epsilonhat,ahat,SteadyState,trend_coeff,aK] = DsgeSmoother(xparam1,gend,Y)">DsgeSmoother</a>(deep,gend,Y);
0103
0104 stock_smooth(:,:,irun1) = alphahat(1:endo_nbr,:);
0105 <span class="keyword">if</span> nvx
0106 stock_innov(:,:,irun2) = etahat;
0107 <span class="keyword">end</span>
0108 <span class="keyword">if</span> nvn
0109 stock_error(:,:,irun3) = epsilonhat;
0110 <span class="keyword">end</span>
0111 <span class="keyword">if</span> naK
0112 stock_filter(:,:,:,irun4) = aK(options_.filter_step_ahead,1:endo_nbr,:);
0113 <span class="keyword">end</span>
0114 stock_param(irun5,:) = deep;
0115 stock_logpo(irun5,1) = logpo;
0116 stock_ys(irun5,:) = SteadyState';
0117
0118 irun1 = irun1 + 1;
0119 irun2 = irun2 + 1;
0120 irun3 = irun3 + 1;
0121 irun4 = irun4 + 1;
0122 irun5 = irun5 + 1;
0123
0124 <span class="keyword">if</span> irun1 &gt; MAX_nsmoo | b == B
0125 <span class="keyword">if</span> b == B
0126 stock_smooth = stock_smooth(:,:,1:irun1-1);
0127 <span class="keyword">end</span>
0128 stock = stock_smooth;
0129 save([DirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_smooth'</span> int2str(ifil1)],<span class="string">'stock'</span>);
0130 ifil1 = ifil1 + 1;
0131 irun1 = 1;
0132 <span class="keyword">end</span>
0133
0134 <span class="keyword">if</span> nvx &amp; (irun2 &gt; MAX_ninno | b == B)
0135 <span class="keyword">if</span> b == B
0136 stock_innov = stock_innov(:,:,1:irun2-1);
0137 <span class="keyword">end</span>
0138 stock = stock_innov;
0139 save([DirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_inno'</span> int2str(ifil2)],<span class="string">'stock'</span>);
0140 ifil2 = ifil2 + 1;
0141 irun2 = 1;
0142 <span class="keyword">end</span>
0143
0144 <span class="keyword">if</span> nvn &amp; (irun3 &gt; MAX_error | b == B)
0145 <span class="keyword">if</span> b == B
0146 stock_error = stock_error(:,:,1:irun3-1);
0147 <span class="keyword">end</span>
0148 stock = stock_error;
0149 save([DirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_error'</span> int2str(ifil3)],<span class="string">'stock'</span>);
0150 ifil3 = ifil3 + 1;
0151 irun3 = 1;
0152 <span class="keyword">end</span>
0153
0154 <span class="keyword">if</span> naK &amp; (irun4 &gt; MAX_naK | b == B)
0155 <span class="keyword">if</span> b == B
0156 stock_filter = stock_filter(:,:,:,1:irun4-1);
0157 <span class="keyword">end</span>
0158 stock = stock_filter;
0159 save([DirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_filter'</span> int2str(ifil4)],<span class="string">'stock'</span>);
0160 ifil4 = ifil4 + 1;
0161 irun4 = 1;
0162 <span class="keyword">end</span>
0163
0164 <span class="keyword">if</span> irun5 &gt; MAX_nruns | b == B
0165 <span class="keyword">if</span> b == B
0166 stock_param = stock_param(1:irun5-1,:);
0167 stock_logpo = stock_logpo(1:irun5-1,1);
0168 stock_ys = stock_ys(1:irun5-1,:);
0169 <span class="keyword">end</span>
0170 stock = stock_param;
0171 save([DirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_param'</span> int2str(ifil5)],<span class="string">'stock'</span>,<span class="string">'stock_logpo'</span>,<span class="string">'stock_ys'</span>);
0172 ifil5 = ifil5 + 1;
0173 irun5 = 1;
0174 <span class="keyword">end</span>
0175
0176 waitbar(b/B,h);
0177 <span class="keyword">end</span>
0178 close(h)
0179
0180 stock_gend=gend;
0181 stock_data=Y;
0182 save([DirectoryName <span class="string">'/'</span> M_.fname <span class="string">'_data'</span>],<span class="string">'stock_gend'</span>,<span class="string">'stock_data'</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>