Differences between revisions 3 and 4
Revision 3 as of 2009-09-11 13:00:51
Size: 7095
Comment:
Revision 4 as of 2009-09-11 13:18:22
Size: 7113
Comment:
Deletions are marked like this. Additions are marked like this.
Line 55: Line 55:
[[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/DsgeSmoother.html | DsgeSmoother.m]] computes the smoother of the model. The smoother is computed by first running the Kalman filter (forward in time), then the smoother (backward in time). [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/DsgeSmoother.html | DsgeSmoother.m]] computes the smoother of the model. The smoother is computed by first running the Kalman filter (forward in time), then the smoother (backward in time).  
Line 61: Line 61:
 * call the appropriate Kalman filter/smoother routine:
   * stationary initialization
     * multivariate filter
       * missing observations : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/kalman/likelihood/missing_observations_kalman_filter.html | missing_observations_kalman_filter.m]]
       * no missing observations : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/kalman/likelihood/kalman_filter.html | kalman_filter.m]]
     * univariate filter
       * correlated shocks : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/kalman/likelihood/univariat_kalman_filter_corr.html | univariate_kalman_filter_corr.m]]
       * non-correlated shocks : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/kalman/likelihood/univariat_kalman_filter.html | univariate_kalman_filter.m]]
   * diffuse initialization
     * multivariate filter
       * missing observations : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/kalman/likelihood/missing_observations_diffuse_kalman_filter.html | missing_observations_diffuse_kalman_filter.m]]
       * no missing observations : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/kalman/likelihood/diffuse_kalman_filter.html | diffuse_kalman_filter.m]]
     * univariate filter
       * correlated shocks : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/kalman/likelihood/univariat_diffuse_kalman_filter_corr.html | univariate_diffuse_kalman_filter_corr.m]]
       * non-correlated shocks : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/kalman/likelihood/univariat_diffuse_kalman_filter.html | univariate_diffuse_kalman_filter.m]]
 * call the appropriate Kalman filter/smoother function (The structure of the smoother routines is different from the filter ones, because we are in the middle of the repackaging this code):
   * no measurement error
     *
stationary initialization
       * multivariate filter
   * missing observations : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/missing_DiffuseKalmanSmoother1.html | missing_DiffuseKalmanSmoother1.m]]
         * no missing observations : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/DiffuseKalmanSmoother1.html | DiffuseKalmanSmoother1.m]]
       * univariate filter
         * missing observations : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/missing_DiffuseKalmanSmoother3.m | missing_DiffuseKalmanSmoother3.m]]
         * no missing observations : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/DiffuseKalmanSmoother3.m | DiffuseKalmanSmoother3.m]]
     * diffuse initialization
       * multivariate filter
   * missing observations : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/missing_DiffuseKalmanSmoother1_Z.html | missing_DiffuseKalmanSmoother1_Z.m]]
         * no missing observations : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/DiffuseKalmanSmoother1_Z.html | DiffuseKalmanSmoother1_Z.m]]
       * univariate filter
         * missing observations : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/missing_DiffuseKalmanSmoother3_Z.m | missing_DiffuseKalmanSmoother3_Z.m]]
         * no missing observations : [[http://www.dynare.org/dynare/doc/dynare-matlab-m2html/matlab/DiffuseKalmanSmoother3_Z.m | DiffuseKalmanSmoother3_Z.m]]

Dynare M files

This is the start of a documentation of the Matlab files (M files) that are at the heart of Dynare. Complete documentation will take some time. But we will do our best to add regularly to this page.

M2HTML documentation

Starting Dynare processing

  • Function dynare.m

  • executes Dynare preprocessor dynare_m that creates <fname>.m, <fname>_static.m, <fname>_dynamic.m

  • executes <fname>.m

The estimation block

  • Dynare keyword estimation is translated by a call to Matlab function dynare_estimation.m.

  • dynare_estimation.m handles recursive estimation over several samples, when option nobs contains several values.

  • For one sample, estimation is done by dynare_estimation_1.m

  • The big parts of dynare_estimation_1.m are as follows:

    • initialization and data preparation
    • computation of maximum likelihood or posterior mode (starts around line 347)
    • runs MCMC (starts around line 1003)
    • computes the posterior distributions of various statistics (starts around line 1038)
    • computes smooth values at the last point estimate of the parameters (maximum likelihood, posterior mode or posterior mean) (starts around line 1052)

The likelihood / posterior function

DsgeLikelihood.m computes the likelihood of the model and if necessary evaluates the priors in order to compute the posterior. The likelihood is computed with the Kalman filter, but the implementation called here keeps only those elements necessary to the computation of the likelihood, for efficiency reasons. A fuller version of the Kalman filter is called by DsgeSmoother.m.

The main steps are:

When the multivariate filter encounters a singularity, Dynare switches automatically to the univariate filter.

The Smoother function

DsgeSmoother.m computes the smoother of the model. The smoother is computed by first running the Kalman filter (forward in time), then the smoother (backward in time).

The main steps are:

DynareWiki: DynareToolbox (last edited 2009-12-23 12:49:23 by SébastienVillemot)