# Ensemble Kalman filter

The ensemble Kalman filter (EnKF) is a recursive filter suitable for problems with a large number of variables, such as discretizations of partial differential equations in geophysical models. The EnKF originated as a version of the Kalman filter for large problems (essentially, the covariance matrix is replaced by the sample covariance), and it is now an important data assimilation component of ensemble forecasting. EnKF is related to the particle filter (in this context, a particle is the same thing as an ensemble member) but the EnKF makes the assumption that all probability distributions involved are Gaussian; when it is applicable, it is much more efficient than the particle filter.

## Introduction

The ensemble Kalman filter (EnKF) is a Monte Carlo implementation of the Bayesian update problem: given a probability density function (PDF) of the state of the modeled system (the prior, called often the forecast in geosciences) and the data likelihood, Bayes' theorem is used to obtain the PDF after the data likelihood has been taken into account (the posterior, often called the analysis). This is called a Bayesian update. The Bayesian update is combined with advancing the model in time, incorporating new data from time to time. The original Kalman filter, introduced in 1960, assumes that all PDFs are Gaussian (the Gaussian assumption) and provides algebraic formulas for the change of the mean and the covariance matrix by the Bayesian update, as well as a formula for advancing the mean and covariance in time provided the system is linear. However, maintaining the covariance matrix is not feasible computationally for high-dimensional systems. For this reason, EnKFs were developed. EnKFs represent the distribution of the system state using a collection of state vectors, called an ensemble, and replace the covariance matrix by the sample covariance computed from the ensemble. The ensemble is operated with as if it were a random sample, but the ensemble members are really not independent, as they all share the EnKF. One advantage of EnKFs is that advancing the PDF in time is achieved by simply advancing each member of the ensemble.

## Derivation
### Kalman filter

Let $\mathbf {x}$ denote the $n$-dimensional state vector of a model, and assume that it has Gaussian probability distribution with mean $\mathbf {\mu }$ and covariance $Q$, i.e., its PDF is
    $p(\mathbf {x} )\propto \exp \left(-{\frac {1}{2}}(\mathbf {x} -\mathbf {\mu } )^{\mathrm {T} }Q^{-1}(\mathbf {x} -\mathbf {\mu } )\right).$
Here and below, $\propto$ means proportional; a PDF is always scaled so that its integral over the whole space is one. This $p(\mathbf {x} )$, called the prior, was evolved in time by running the model and now is to be updated to account for new data. It is natural to assume that the error distribution of the data is known; data have to come with an error estimate, otherwise they are meaningless. Here, the data $\mathbf {d}$ is assumed to have Gaussian PDF with covariance $R$ and mean $H\mathbf {x}$, where $H$ is the so-called observation matrix. The covariance matrix $R$ describes the estimate of the error of the data; if the random errors in the entries of the data vector $\mathbf {d}$ are independent, $R$ is diagonal and its diagonal entries are the squares of the standard deviation (“error size”) of the error of the corresponding entries of the data vector $\mathbf {d}$. The value $H\mathbf {x}$ is what the value of the data would be for the state $\mathbf {x}$ in the absence of data errors. Then the probability density $p(\mathbf {d} |\mathbf {x} )$ of the data $\mathbf {d}$ conditional of the system state $\mathbf {x}$, called the data likelihood, is
    $p\left(\mathbf {d} |\mathbf {x} \right)\propto \exp \left(-{\frac {1}{2}}(\mathbf {d} -H\mathbf {x} )^{\mathrm {T} }R^{-1}(\mathbf {d} -H\mathbf {x} )\right).$
The PDF of the state and the data likelihood are combined to give the new probability density of the system state $\mathbf {x}$ conditional on the value of the data $\mathbf {d}$ (the posterior) by the Bayes theorem,
    $p\left(\mathbf {x} |\mathbf {d} \right)\propto p\left(\mathbf {d} |\mathbf {x} \right)p(\mathbf {x} ).$
The data $\mathbf {d}$ is fixed once it is received, so denote the posterior state by $\mathbf {\hat {x}}$ instead of $\mathbf {x} |\mathbf {d}$ and the posterior PDF by $p\left(\mathbf {\hat {x}} \right)$. It can be shown by algebraic manipulations that the posterior PDF is also Gaussian,
    $p\left(\mathbf {\hat {x}} \right)\propto \exp \left(-{\frac {1}{2}}(\mathbf {\hat {x}} -\mathbf {\hat {\mu }} )^{\mathrm {T} }{\hat {Q}}^{-1}(\mathbf {\hat {x}} -\mathbf {\hat {\mu }} )\right),$
with the posterior mean $\mathbf {\hat {\mu }}$ and covariance ${\hat {Q}}$ given by the Kalman update formulas
    $\mathbf {\hat {\mu }} =\mathbf {\mu } +K\left(\mathbf {d} -H\mathbf {\mu } \right),\quad {\hat {Q}}=\left(I-KH\right)Q,$
where
    $K=QH^{\mathrm {T} }\left(HQH^{\mathrm {T} }+R\right)^{-1}$
is the so-called Kalman gain matrix.

### Ensemble Kalman Filter

The EnKF is a Monte Carlo approximation of the Kalman filter, which avoids evolving the covariance matrix of the PDF of the state vector $\mathbf {x}$. Instead, the PDF is represented by an ensemble
    $X=\left[\mathbf {x} _{1},\ldots ,\mathbf {x} _{N}\right]=\left[\mathbf {x} _{i}\right].$
$X$ is an $n\times N$ matrix whose columns are the ensemble members, and it is called the prior ensemble. Ideally, ensemble members would form a sample from the prior distribution. However, the ensemble members are not in general independent except in the initial ensemble, since every EnKF step ties them together. They are deemed to be approximately independent, and all calculations proceed as if they actually were independent.
Replicate the data $\mathbf {d}$ into an $m\times N$ matrix
    $D=\left[\mathbf {d} _{1},\ldots ,\mathbf {d} _{N}\right]=\left[\mathbf {d} _{i}\right],\quad \mathbf {d} _{i}=\mathbf {d} +\mathbf {\epsilon _{i}} ,\quad \mathbf {\epsilon _{i}} \sim N(0,R),$
so that each column $\mathbf {d} _{i}$ consists of the data vector $\mathbf {d}$ plus a random vector from the $m$-dimensional normal distribution $N(0,R)$. If, in addition, the columns of $X$ are a sample from the prior probability distribution, then the columns of
    ${\hat {X}}=X+K(D-HX)$
form a sample from the posterior probability distribution. To see this in the scalar case with $H=1$: Let $x_{i}=\mu +\xi _{i},\;\xi _{i}\sim N(0,\sigma _{x}^{2})$, and $d_{i}=d+\epsilon _{i},\;\epsilon _{i}\sim N(0,\sigma _{d}^{2}).$ Then
    ${\hat {x}}_{i}=\left({\frac {1/\sigma _{x}^{2}}{1/\sigma _{x}^{2}+1/\sigma _{d}^{2}}}\mu +{\frac {1/\sigma _{d}^{2}}{1/\sigma _{x}^{2}+1/\sigma _{d}^{2}}}d\right)+\left({\frac {1/\sigma _{x}^{2}}{1/\sigma _{x}^{2}+1/\sigma _{d}^{2}}}\xi _{i}+{\frac {1/\sigma _{d}^{2}}{1/\sigma _{x}^{2}+1/\sigma _{d}^{2}}}\epsilon _{i}\right)$.
The first sum is the posterior mean, and the second sum, in view of the independence, has a variance
    $\left({\frac {1/\sigma _{x}^{2}}{1/\sigma _{x}^{2}+1/\sigma _{d}^{2}}}\right)^{2}\sigma _{x}^{2}+\left({\frac {1/\sigma _{d}^{2}}{1/\sigma _{x}^{2}+1/\sigma _{d}^{2}}}\right)^{2}\sigma _{d}^{2}={\frac {1}{1/\sigma _{x}^{2}+1/\sigma _{d}^{2}}}$,
which is the posterior variance.
The EnKF is now obtained simply by replacing the state covariance $Q$ in Kalman gain matrix $K$ by the sample covariance $C$ computed from the ensemble members (called the ensemble covariance), that is: $K=CH^{\mathrm {T} }\left(HCH^{\mathrm {T} }+R\right)^{-1}$

## Implementation
### Basic formulation

Here we follow. Suppose the ensemble matrix $X$ and the data matrix $D$ are as above. The ensemble mean and the covariance are
    $E\left(X\right)={\frac {1}{N}}\sum _{k=1}^{N}\mathbf {x} _{k},\quad C={\frac {AA^{T}}{N-1}},$
where
    $A=X-E\left(X\right)\mathbf {e} _{1\times N}=X-{\frac {1}{N}}\left(X\mathbf {e} _{N\times 1}\right)\mathbf {e} _{1\times N},$
and $\mathbf {e}$ denotes the matrix of all ones of the indicated size.
The posterior ensemble $X^{p}$ is then given by
    $X^{p}=X+CH^{T}\left(HCH^{T}+R\right)^{-1}(D-HX),$
where the perturbed data matrix $D$ is as above.
Note that since $R$ is a covariance matrix, it is always positive semidefinite and usually positive definite, so the inverse above exists and the formula can be implemented by the Cholesky decomposition. In, $R$ is replaced by the sample covariance ${\tilde {D}}{\tilde {D}}^{T}/\left(N-1\right)$ where ${\tilde {D}}=D-{\frac {1}{N}}d\,\mathbf {e} _{1\times N}$and the inverse is replaced by a pseudoinverse, computed using the singular-value decomposition (SVD) .
Since these formulas are matrix operations with dominant Level 3 operations, they are suitable for efficient implementation using software packages such as LAPACK (on serial and shared memory computers) and ScaLAPACK (on distributed memory computers). Instead of computing the inverse of a matrix and multiplying by it, it is much better (several times cheaper and also more accurate) to compute the Cholesky decomposition of the matrix and treat the multiplication by the inverse as solution of a linear system with many simultaneous right-hand sides.

### Observation matrix-free implementation

Since we have replaced the covariance matrix with ensemble covariance, this leads to a simpler formula where ensemble observations are directly used without explicitly specifying the matrix $H$. More specifically, define a function $h(\mathbf {x} )$ of the form
    $h(\mathbf {x} )=H\mathbf {x} .$
The function $h$ is called the observation function or, in the inverse problems context, the forward operator. The value of $h(\mathbf {x} )$ is what the value of the data would be for the state $\mathbf {x}$ assuming the measurement is exact. Then the posterior ensemble can be rewritten as
    $X^{p}=X+{\frac {1}{N-1}}A\left(HA\right)^{T}P^{-1}(D-HX)$
where
    $HA=HX-{\frac {1}{N}}\left(\left(HX\right)\mathbf {e} _{N\times 1}\right)\mathbf {e} _{1\times N},$
and
    $P={\frac {1}{N-1}}HA\left(HA\right)^{T}+R,$
with
    $\left[HA\right]_{i}=H\mathbf {x} _{i}-H{\frac {1}{N}}\sum _{j=1}^{N}\mathbf {x} _{j}\ =h\left(\mathbf {x} _{i}\right)-{\frac {1}{N}}\sum _{j=1}^{N}h\left(\mathbf {x} _{j}\right).$
Consequently, the ensemble update can be computed by evaluating the observation function $h$ on each ensemble member once and the matrix $H$ does not need to be known explicitly. This formula holds also for an observation function $h(\mathbf {x} )=H\mathbf {x+f}$ with a fixed offset $\mathbf {f}$, which also does not need to be known explicitly. The above formula has been commonly used for a nonlinear observation function $h$, such as the position of a hurricane vortex. In that case, the observation function is essentially approximated by a linear function from its values at ensemble members.

### Implementation for a large number of data points

For a large number $m$ of data points, the multiplication by $P^{-1}$ becomes a bottleneck. The following alternative formula is advantageous when the number of data points $m$ is large (such as when assimilating gridded or pixel data) and the data error covariance matrix $R$ is diagonal (which is the case when the data errors are uncorrelated), or cheap to decompose (such as banded due to limited covariance distance). Using the Sherman–Morrison–Woodbury formula
    $(R+UV^{T})^{-1}=R^{-1}-R^{-1}U(I+V^{T}R^{-1}U)^{-1}V^{T}R^{-1},$
with
    $U={\frac {1}{N-1}}HA,\quad V=HA,$
gives
    ${\begin{aligned}P^{-1}&=\left(R+{\frac {1}{N-1}}HA\left(HA\right)^{T}\right)^{-1}\ =\\&=R^{-1}\left[I-{\frac {1}{N-1}}\left(HA\right)\left(I+\left(HA\right)^{T}R^{-1}{\frac {1}{N-1}}\left(HA\right)\right)^{-1}\left(HA\right)^{T}R^{-1}\right],\end{aligned}}$
which requires only the solution of systems with the matrix $R$ (assumed to be cheap) and of a system of size $N$ with $m$ right-hand sides. See for operation counts.

## Further extensions

The EnKF version described here involves randomization of data. For filters without randomization of data, see.
Since the ensemble covariance is rank deficient (there are many more state variables, typically millions, than the ensemble members, typically less than a hundred), it has large terms for pairs of points that are spatially distant. Since in reality the values of physical fields at distant locations are not that much correlated, the covariance matrix is tapered off artificially based on the distance, which gives rise to localized EnKF algorithms. These methods modify the covariance matrix used in the computations and, consequently, the posterior ensemble is no longer made only of linear combinations of the prior ensemble.
For nonlinear problems, EnKF can create posterior ensemble with non-physical states. This can be alleviated by regularization, such as penalization of states with large spatial gradients.
For problems with coherent features, such as hurricanes, thunderstorms, firelines, squall lines, and rain fronts, there is a need to adjust the numerical model state by deforming the state in space (its grid) as well as by correcting the state amplitudes additively. In 2007, Ravela et al. introduce the joint position-amplitude adjustment model using ensembles, and systematically derive a sequential approximation which can be applied to both EnKF and other formulations. Their method does not make the assumption that amplitudes and position errors are independent or jointly Gaussian, as others do. The morphing EnKF employs intermediate states, obtained by techniques borrowed from image registration and morphing, instead of linear combinations of states.
Formally, EnKFs rely on the Gaussian assumption. In practice they can also be used for nonlinear problems, where the Gaussian assumption may not be satisfied. Related filters attempting to relax the Gaussian assumption in EnKF while preserving its advantages include filters that fit the state PDF with multiple Gaussian kernels, filters that approximate the state PDF by Gaussian mixtures, a variant of the particle filter with computation of particle weights by density estimation, and a variant of the particle filter with thick tailed data PDF to alleviate particle filter degeneracy.