When the dynamics model and the observation model of a state space model are both Gaussian, we have a linear gaussian ssm,

The latent dynamics model is written as

with the observation model

variablevariable descriptionshape
state vector(N_states, 1)
observation vector at time (N_obs, 1)
dynamics (transition) matrix(N_states, N_states)
covariance matrix of dynamics (system) noise(N_states, N_states)
emission (observation) matrix(N_obs, N_states)
covariance function for emission (observation) noise(N_obs, N_obs)

extracts the relevant parts of the state vector . are exogenous inputs.

Inference can be performed efficiently using kalman filtering and smoothing. These models have applications in object tracking and structural time series models.

jax implementation (cuthbert)

cuthbert provides an exact Kalman filter and smoother in square-root form via cuthbert.gaussian.kalman.

from cuthbert import filter, smoother
from cuthbert.gaussian import kalman
 
filter_obj = kalman.build_filter(
    get_init_params=lambda inputs: (m0, chol_P0),          # p(x_0)
    get_dynamics_params=lambda inputs: (F, c, chol_Q),     # p(x_t | x_{t-1})
    get_observation_params=lambda inputs: (H, d, chol_R, y),  # p(y_t | x_t)
)
 
states = filter(filter_obj, model_inputs, parallel=True)

The filter supports temporal parallelisation via jax.lax.associative_scan (associative Kalman filter, cuthbert parallelization example).

See also ssm in dynamax and ssm resources.

canonical Bayesian system identification

When the system matrices are time-invariant (, , etc.), the LGSSM is a linear time-invariant (LTI) system – the standard object studied in control theory and system identification.

Bryutkin et al. (2025) show that Bayesian inference over the standard parameterisation suffers from non-identifiability: for any invertible , the transformed system produces an identical likelihood. The Kalman filter marginalises out the latent states, and all observation-space quantities are invariant:

  • Eigenvalues: via the multiplicative property of the determinant
  • Transfer function: as and cancel in pairs
  • Likelihood: the Kalman innovation mean and covariance are unchanged

There are infinitely many such equivalent systems (one per invertible ), so putting priors on matrix entries creates a posterior with infinitely many equivalent modes that are hard to sample with MCMC.

canonical form (, SISO)

The controller canonical form fixes a unique representative. For with eigenvalues , the characteristic polynomial is , giving and (Vieta’s formulas). The canonical system is:

The free parameters are just — five scalars instead of the entries of . To enforce stability, set a prior on eigenvalues with (e.g., for real eigenvalues) and push forward through Vieta’s to get the prior on .

Note, the paper focuses on SISO systems. MIMO canonical forms (needed for e.g. structural time series models) are more complex and depend on the system’s Kronecker indices.

key results

Canonical forms resolve the non-identifiability by providing a unique, minimal representative per equivalence class. Three key results:

  1. Posteriors over any similarity-invariant quantity (eigenvalues, transfer functions, predictive distributions) are identical whether computed from the canonical or standard parameterisation – the canonical space just has fewer parameters ( for SISO vs ).
  2. Canonical coefficients relate to eigenvalues via Vieta’s formulas (invertible, with Vandermonde Jacobian), enabling tractable eigenvalue priors (e.g., for stability) – intractable with the full matrix.
  3. The canonical posterior satisfies Bernstein-von Mises: it converges to as . The standard parameterisation cannot, because its Fisher information is singular along similarity-transform directions.