# 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

M2html is a tool that documents automatically Matlab functions. In particular, it gives easy access to the other functions that call a particular functions and to the functions called by a particular function. http://www.dynare.org/dynare-matlab-m2html

## 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:

- initialization of the structural parameters
computation of the solution of the linear rational expectation model by dynare_resolve.m

- initialization of the Kalman filter
- call the appropriate Kalman filter routine:
- stationary initialization
- multivariate filter
missing observations : missing_observations_kalman_filter.m

no missing observations : kalman_filter.m

- univariate filter
correlated shocks : univariate_kalman_filter_corr.m

non-correlated shocks : univariate_kalman_filter.m

- multivariate filter
- diffuse initialization
- multivariate filter
missing observations : missing_observations_diffuse_kalman_filter.m

no missing observations : diffuse_kalman_filter.m

- univariate filter
correlated shocks : univariate_diffuse_kalman_filter_corr.m

non-correlated shocks : univariate_diffuse_kalman_filter.m

- multivariate filter

- stationary initialization
- evaluation of priors if necessary

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:

- initialization of the structural parameters
computation of the solution of the linear rational expectation model by dynare_resolve.m

- initialization of the Kalman filter
- 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 : missing_DiffuseKalmanSmoother1.m

no missing observations : DiffuseKalmanSmoother1.m

- univariate filter
missing observations : missing_DiffuseKalmanSmoother3.m

no missing observations : DiffuseKalmanSmoother3.m

- multivariate filter
- diffuse initialization
- multivariate filter
missing observations : missing_DiffuseKalmanSmoother1_Z.m

no missing observations : DiffuseKalmanSmoother1_Z.m

- univariate filter
missing observations : missing_DiffuseKalmanSmoother3_Z.m

no missing observations : DiffuseKalmanSmoother3_Z.m

- multivariate filter

- stationary initialization
- measurement error
- stationary initialization
- multivariate filter
- missing observations : N/A
no missing observations: DiffuseKalmanSmootherH1corr.m

- univariate filter
- missing observations : N/A
- no missing observations
correlated shocks: DiffuseKalmanSmootherH3corr.m

correlated shocks: DiffuseKalmanSmootherH3.m

- multivariate filter
- diffuse initialization
- multivariate filter
- missing observations : N/A
no missing observations: DiffuseKalmanSmootherH1_Z.m

- univariate filter
- missing observations : N/A
- no missing observations
- correlated shocks: N/A
no correlated shocks: DiffuseKalmanSmootherH3_Z.m

- multivariate filter

- stationary initialization

- no measurement error