Linear covariance analysis
Monte Carlo tells you what happened in 10,000 particular universes. Linear covariance analysis (LinCov) tells you the statistics directly, in one deterministic run, by propagating covariance instead of samples. Its real value is not merely speed — it is that LinCov can compute the thing Monte Carlo cannot easily isolate: the difference between how big the error actually is and how big the filter thinks it is.
Symbols used on this page are defined in the Nomenclature → estimation & filtering.
1 · Why not just run Monte Carlo
| Monte Carlo | Linear covariance | |
|---|---|---|
| Cost | $N$ full simulations; tail statistics need large $N$ | one pass of matrix recursions |
| Statistical error | $\sigma$ estimate converges as $1/\sqrt{N}$ — 10,000 runs gives ~1% on $\sigma$, much worse on tails | exact for the linear model (no sampling error at all) |
| Nonlinearity | handles it fully | first-order only |
| Non-Gaussian, saturation, discrete logic | captured | not captured |
| Error budget by source | awkward — needs a separate campaign per source | falls out directly and additively |
| True vs filter-believed error | computable but requires care | structurally separated (§3) |
| Rare-event / tail behaviour | the only real option | Gaussian tails by assumption |
So the two are used at different stages rather than in competition: LinCov for design, trade studies and error budgets — where you need to iterate quickly and understand why a number is what it is — and Monte Carlo for verification, where nonlinearity, discrete mode logic and saturation must be exercised before you believe the answer. A LinCov result that disagrees with Monte Carlo is itself informative: it localises exactly where the linearity assumption broke.
2 · The basic propagation
Linearise the dynamics and measurements about a reference trajectory. With $\delta\mathbf x$ the error state:
$$ \delta\mathbf x_{k+1}=\Phi_k\,\delta\mathbf x_k+B_k\mathbf w_k,\qquad \delta\mathbf z_k=H_k\,\delta\mathbf x_k+\mathbf v_k $$Covariance then propagates and updates with no random draws anywhere:
$$ P^-_{k+1}=\Phi_k P_k\Phi_k^\top+Q_k,\qquad K_k=P^-_kH_k^\top\big(H_kP^-_kH_k^\top+R_k\big)^{-1} $$ $$ P_k=(I-K_kH_k)P^-_k(I-K_kH_k)^\top+K_kR_kK_k^\top $$Because $\Phi,H,Q,R$ depend only on the reference trajectory and not on the realised errors, the whole sequence is deterministic and can be run forward once. Note that this is the same recursion a Kalman filter runs — the insight of LinCov is that the covariance half of a Kalman filter does not need the measurement half. You can predict performance before any data exists, which is precisely what you need during design.
3 · The part that matters: dual covariance
A filter's own $P$ is not the truth — it is the filter's opinion, and it is only correct if every model is correct. Real systems always have errors the filter does not model: unmodelled biases, mistuned $Q$, imperfect $R$, neglected states, linearisation error. The essential LinCov construct is to track two covariances simultaneously:
| Quantity | Meaning | Who sees it |
|---|---|---|
| $P_{filt}$ | the filter's believed covariance, computed from its own (possibly wrong) models | what the flight software reports and what downstream consumers trust |
| $P_{true}$ | the actual covariance of the true error, including effects the filter is blind to | reality; only an analysis (or flight data) reveals it |
Partition the world into the states the filter estimates, $\delta\mathbf x$, and the error parameters it does not, $\delta\mathbf p$ (the "consider" parameters). The true system couples them:
$$ \begin{bmatrix}\delta\mathbf x\\ \delta\mathbf p\end{bmatrix}_{k+1} =\begin{bmatrix}\Phi_{xx} & \Phi_{xp}\\ \mathbf 0 & I\end{bmatrix} \begin{bmatrix}\delta\mathbf x\\ \delta\mathbf p\end{bmatrix}_k+\dots $$while the filter's gain $K$ was computed from a model that omits $\delta\mathbf p$ entirely. Propagating the augmented true covariance with that sub-optimal gain gives $P_{true}$, and the comparison is the whole point:
$$ P_{true}\;\succeq\;P_{filt} \quad\Longrightarrow\quad \text{the filter is }\textbf{optimistic}\text{ — it is more confident than it should be} $$4 · Error budgets fall out for free
Because the propagation is linear, independent error sources contribute additively in covariance. Run the recursion with only source $i$ active and you get its individual contribution:
$$ P_{total}=\sum_i P^{(i)} \qquad\Longrightarrow\qquad \text{contribution}_i=\frac{\operatorname{tr}\big(\Lambda P^{(i)}\big)}{\operatorname{tr}\big(\Lambda P_{total}\big)} $$for a selection matrix $\Lambda$ picking the metric you care about (e.g. insertion velocity error). This produces the table every design review actually wants:
| Error source | Contribution to metric | Design implication |
|---|---|---|
| Initial attitude (alignment) | large early, decays if aided | drives alignment time/quality requirement |
| Gyro bias | grows with unaided duration | drives sensor grade — expensive to fix |
| Accelerometer bias | $t^2$ in coast | drives in-flight calibration strategy |
| Measurement noise | usually small | rarely the binding constraint |
| Geometry / DOP | episodic | antenna placement, scheduling |
| Unmodelled (consider) params | the $P_{true}-P_{filt}$ gap | either model them, or inflate $Q$ honestly |
Two things this enables that Monte Carlo makes painful: sensitivity analysis — $\partial P/\partial(\text{spec})$ tells you which requirement to negotiate — and requirement flow-down, allocating a top-level accuracy requirement to individual sensor specs with margin. Both are iterative activities, which is exactly where a single-run method wins.
5 · When LinCov stops being valid
The method is only as good as its linearity assumption, and it fails silently — the matrices still multiply cleanly and produce a confident, wrong answer. Known failure modes:
| Violation | Example | Symptom |
|---|---|---|
| Large errors | coarse alignment with tens of degrees of heading error | second-order terms non-negligible; small-angle algebra invalid |
| Discrete logic | mode switches, measurement rejection, M-of-N voting | not differentiable; LinCov cannot represent a branch |
| Saturation / limits | actuator limits, gimbal stops, rate limits | gain is state-dependent in a way the linearisation ignores |
| Non-Gaussian sources | multipath, quantisation, bounded-but-not-normal errors | covariance is an incomplete description; tails wrong |
| Trajectory dispersion | guided vehicle flies a materially different path per case | a single reference trajectory no longer represents the ensemble |
| Filter divergence | the real filter can diverge; LinCov's cannot | LinCov structurally cannot predict its own worst failure mode |
Standard practice, therefore: use LinCov to design and to build the budget, then validate against Monte Carlo at the design points. Agreement builds confidence in both; disagreement tells you precisely which assumption broke, which is more useful than either result alone.
6 · Practical notes
- Keep it symmetric and positive-definite. Use the Joseph form above, or propagate a factor (UDU/square-root). Long propagations are where asymmetry creeps in and produces negative variances.
- Watch conditioning. Mixing metres of position with $10^{-8}$ rad/s of gyro bias makes $P$ badly scaled; non-dimensionalise or factorise.
- Report the metric, not the state. Consumers want a scalar with a physical meaning — insertion velocity error, miss distance, $3\sigma$ landing radius — which is a projection $\Lambda$ of $P$, so define $\Lambda$ before arguing about numbers.
- Include the sub-optimal gain. A LinCov run that assumes the optimal gain everywhere will not reveal the $P_{true}$ vs $P_{filt}$ gap, and that gap is the most valuable output.
7 · Further reading
- Maybeck, Stochastic Models, Estimation and Control, Vol. 1 — covariance analysis, consider parameters and sensitivity analysis.
- Gelb (ed.), Applied Optimal Estimation — the classic treatment of error-budget covariance analysis.
- Geller, "Linear Covariance Techniques for Orbital Rendezvous Analysis and Autonomous Onboard Mission Planning" (JGCD, 2006) — the standard modern reference for dual-covariance LinCov in aerospace.
- Carpenter & D'Souza, Navigation Filter Best Practices (NASA/TP-2018-219822) — consider states and covariance realism. Summary.
- Bierman, Factorization Methods for Discrete Sequential Estimation — numerically sound covariance propagation.
Related: FDI decision functions · Joint observability · Filtering · NASA filter best practices · back to Misc.