% ----------------------------------------------------------------
% AMS-LaTeX Paper ************************************************
% **** -----------------------------------------------------------
\documentclass{amsart}
\usepackage{graphicx}
% ----------------------------------------------------------------
\vfuzz2pt % Don't report over-full v-boxes if over-edge is small
\hfuzz2pt % Don't report over-full h-boxes if over-edge is small
% THEOREMS -------------------------------------------------------
\newtheorem{thm}{Theorem}[section]
\newtheorem{cor}[thm]{Corollary}
\newtheorem{lem}[thm]{Lemma}
\newtheorem{prop}[thm]{Proposition}
\theoremstyle{definition}
\newtheorem{defn}[thm]{Definition}
\theoremstyle{remark}
\newtheorem{rem}[thm]{Remark}
\numberwithin{equation}{section}
% MATH -----------------------------------------------------------
\newcommand{\norm}[1]{\left\Vert#1\right\Vert}
\newcommand{\abs}[1]{\left\vert#1\right\vert}
\newcommand{\set}[1]{\left\{#1\right\}}
\newcommand{\Real}{\mathbb R}
\newcommand{\eps}{\varepsilon}
\newcommand{\To}{\longrightarrow}
\newcommand{\BX}{\mathbf{B}(X)}
\newcommand{\A}{\mathcal{A}}
% ----------------------------------------------------------------
\begin{document}

\title{Kalman filtering and smoothing in Dynare}%
% ----------------------------------------------------------------
\maketitle
% ----------------------------------------------------------------

\section*{Introduction}

\noindent \textbf{``Filtering and Smoothing of State Vector for
Diffuse State Space Models''}, S.J. Koopman and J. Durbin (2003,
in \textit{Journal of Time Series Analysis}, vol. 24(1), pp.
85-98).\newline

\noindent \textbf{``Fast Filtering and Smoothing for Multivariate
State Space Models''}, S.J. Koopman and J. Durbin (2000, in
\textit{Journal of Time Series Analysis}, vol. 21(3), pp.
282-296).\newline


\bigskip

\noindent \textsc{The State-Space Model}\footnote{Note that in
Dynare, matrices $T$, $Z$, $R$, $H$ and $Q$ are assumed to be time
invariant.}:

\[y_t =   Z\alpha_t + \varepsilon_t\]
\[\alpha_{t+1} = T \alpha_t + R\eta_t\]
with:
\[\alpha_1 = a + A\delta + R_0\eta_0\]

\noindent $m\times q$ matrix $A$ and $m\times(m-q)$ matrix $R_0$
are selection matrices (their columns constitue all the columns of
the $m\times m$ identity matrix) so that $A'R_0 = 0$ and
$A'\alpha_1 = \delta$. We assume that the vector $\delta$ is
distributed as a $\mathcal{N}(0,\kappa I_q)$ for a given  $\kappa
> 0$. So that the expectation of $\alpha_1$ is a and its variance
is $P$, with

\[ P = \kappa P_{\infty} + P_{\star}\]
\[           P_{\infty} = A A'\]
\[ P_{\star}  = R_0 Q_0 R_0'\]

\noindent $P_{\infty}$ is a $m\times m$ diagonal matrix with $q$
ones and $m-q$ zeros. and where: $y_t$ is a $pp\times 1$ vector,
$\alpha_t$ is a $mm\times 1$ vector, $\varepsilon_t$ is a
$pp\times 1$ multivariate random variable (iid
$\mathcal{N}(0,H)$), $\eta_t$ is a $rr\times 1$ multivariate
random variable (iid $\mathcal{N}(0,Q)$), $a_1$ is a $mm\times 1$
vector, $Z_t$ is a $pp\times mm$ matrix, $T$ is a $mm \times mm$
matrix, $H$ is a $pp\times pp$ matrix, $R$ is a $mm\times rr$
matrix, $Q$ is a $rr\times rr$ matrix and $P_1$ is a $mm\times mm$
matrix. \newline

\section{Filtering}

\noindent The filtering equations are given by:
\begin{equation}
\begin{split}
v_t &= y_t - Z  a_t\\
F_t &= Z P_t Z' + H\\
K_t &= P_t Z' F_t^{-1}\\
a_{t+1} &= T (a_t + K_t v_t)\\
P_{t+1} &= T (P_t - P_tZ'K') T' + R Q R'\\
\end{split}
\end{equation}
$\{F_t\}$ and $\{v_t\}$ are used to evaluate the likelihood. A
potentially faster algorithm (unfortunately not with matlab) is to
consider a univariate approach to the multivariate Kalman filter
(the covariance matrix associated to the measurement errors has to
be diagonal: $H=diag(\sigma_1^2,\dots,\sigma_{pp}^2)$). Let $Z_i$
be line $i$ of the selection matrix $Z$. The univariate algorithm
is as follows :
\begin{equation}
\begin{split}
v_{t,i} &= y_{t,i} - Z_i  a_t^{(i)}\\
F_t^{(i)} &= Z_i P_t^{(i)} Z_i' + \sigma_{i}^2\\
K_t^{(i)} &= P_t^{(i)} Z_i'\\
a_{t}^{(i+1)} &= a_t^{(i)} + K_t^{(i)} v_{t,i} / F_t^{(i)}\\
P_{t}^{(i+1)} &= P_{t}^{(i)} - K_{t}^{(i)} \left.K_t^{(i)}\right.' / F_t^{(i)}\\
a_{t+1}^{(1)} &= T a_t^{(pp)}\\
P_{t+1}^{(1)} &= T P_t^{(pp)} T' + R Q R'\\
\end{split}
\end{equation}
when $F_t^{(i)}$ is equal to zero we simply have
$a_{t}^{(i+1)}=a_{t}^{(i)}$ and $P_{t}^{(i+1)}=P_{t}^{(i)}$. The
log-likelihood is evaluated as follows:
\begin{equation}
\mathcal{L}_T = const -\frac{1}{2}\sum_{i=1}^{pp}\sum_{t=1}^n \log
F_{t}^{(i)} + v_{t,i}^2 / F_{t}^{(i)}
\end{equation}

\bigskip

\noindent The diffuse filtering equations are given by:
\begin{equation}
\begin{split}
v_t &= y_t - Z  a_t\\
F_{\infty,t} &= Z P_{\infty,t} Z' + H\\
K_{\infty,t} &= P_{\infty,t} Z' F_{\infty,t}^{-1}\\
F_{\ast,t} &= Z P_{\ast,t} Z' + H\\
K_{\ast,t} &= \left(P_{\ast,t} Z' - K_{\infty,t}F_{\ast,t}\right)F_{\infty,t}^{-1}\\
P_{\ast,t+1} &= T (P_{\ast,t}-P_{\ast,t}Z'K_{\infty,t}' - P_{\infty,t}Z'K_{\ast,t}') T' + R Q R'\\
P_{\infty,t+1} &= T(P_{\infty,t}-P_{\infty,t}Z'K_{\infty,t}')T'\\
a_{t+1} &= T (a_t + K_{\infty,t} v_t)\\
\end{split}
\end{equation}
When the condition $rank(P_{\infty,t+1})=0$ is satisfied we set
$d=t$ and go back to the standard Kalman filtering equations. Here
$F_{\infty,t}$ is assumed to be a full rank matrix. If this is not
the case we switch to another algorithm. If $F_{\infty,t}=0$:
\begin{equation}
\begin{split}
v_t &= y_t - Z  a_t\\
F_{\ast,t} &= Z P_{\ast,t} Z' + H\\
K_{\ast,t} &= P_{\ast,t} Z'F_{\infty,t}^{-1}\\
P_{\ast,t+1} &= T (P_{\ast,t}-P_{\ast,t}Z'K_{\ast,t}') T' + R Q R'\\
P_{\infty,t+1} &= TP_{\infty,t}T'\\
a_{t+1} &= T (a_t + K_{\ast,t} v_t)\\
L_t &= T(I - K_t Z)\\
\end{split}
\end{equation}
otherwise, we consider a diffuse version of the univariate
approach described above.

\section{Smoothing}

\noindent The smoothing equations are given by:
\begin{equation}
\begin{split}
r_{t-1} &= Z' F_t^{-1}v_t + L_t' r_t\\
\widehat{\alpha}_t &= a_t + P_t r_{t-1} \\
\widehat{\eta}_t &= Q R r_t\\
\widehat{\varepsilon}_t &= H \left(F_t^{-1}v_t-K_t'r_t\right)\\
\end{split}
\end{equation}
initializing with $r_n = 0$ and with $L_t = T-K_tZ$. The diffuse
smoothing equations are given by :
\begin{equation}
\begin{split}
r_{t-1}^{(0)} &= L_{\infty,t}r_{t}^{(0)}\\
r_{t-1}^{(1)} &= Z' F_{\infty,t}^{-1}v_t - K_{\ast,t}'r_{t}^{(0)}+ L_{\infty,t}' r_t^{(1)}\\
\widehat{\alpha}_t &= a_t + P_{\ast,t} r_{t-1}^{(0)} + P_{\infty,t}r_{t-1}^{(1)}\\
\widehat{\eta}_t &= Q R r_t^{(0)}\\
\widehat{\varepsilon}_t &= -H K_{\infty,t}'r_t^{(0)}\\
\end{split}
\end{equation}
for $t = d,d-1,...,1$, where $d$ is such that $P_{\infty,d+1}=0$.
This backward recurrence is initialized with $r_{d}^{(0)}=r_{d}$,
obtained from the non diffuse Kalman smoother, and
$r_{d}^{(1)}=0$. $L_{\infty,t} = T-K_{\infty,t}Z$.\newline


\noindent A univariate smoothing algorithm has to be coded... In
the smoothing part the matrix $F_t$ (or $F_{\infty,t}$) is assumed
to be full rank...





% ----------------------------------------------------------------
%\bibliographystyle{amsplain}
%\bibliography{}
\end{document}
% ----------------------------------------------------------------


