Back to models
Transformer

KalmanFilterTransformerPK

Kalman Filter, from pykalman (sktime native maintenance fork).

Quickstart

python
from sktime.transformations.kalman_filter import KalmanFilterTransformerPK

estimator = KalmanFilterTransformerPK(state_dim, state_transition=None, transition_offsets=None, measurement_offsets=None, process_noise=None, measurement_noise=None, measurement_function=None, initial_state=None, initial_state_covariance=None, estimate_matrices=None, denoising=False)

Parameters(11)

state_dimint
System state feature dimension.
state_transitionnp.ndarray, optional (default=None)

of shape (state_dim, state_dim) or (time_steps, state_dim, state_dim). State transition matrix, also referred to as F, is a matrix which describes the way the underlying series moves through successive time periods.

process_noisenp.ndarray, optional (default=None)

of shape (state_dim, state_dim) or (time_steps, state_dim, state_dim). Process noise matrix, also referred to as Q, the uncertainty of the dynamic model.

measurement_noisenp.ndarray, optional (default=None)

of shape (measurement_dim, measurement_dim) or (time_steps, measurement_dim, measurement_dim). Measurement noise matrix, also referred to as R, represents the uncertainty of the measurements.

measurement_functionnp.ndarray, optional (default=None)

of shape (measurement_dim, state_dim) or (time_steps, measurement_dim, state_dim). Measurement equation matrix, also referred to as H, adjusts dimensions of measurements to match dimensions of state.

initial_statenp.ndarray, optional (default=None)

of shape (state_dim,). Initial estimated system state, also referred to as X0.

initial_state_covariancenp.ndarray, optional (default=None)

of shape (state_dim, state_dim). Initial estimated system state covariance, also referred to as P0.

transition_offsetsnp.ndarray, optional (default=None)

of shape (state_dim,) or (time_steps, state_dim). State offsets, also referred to as b, as described in pykalman.

measurement_offsetsnp.ndarray, optional (default=None)

of shape (measurement_dim,) or (time_steps, measurement_dim). Observation (measurement) offsets, also referred to as d, as described in pykalman.

denoisingbool, optional (default=False).

This parameter affects transform. If False, then transform will be inferring hidden state. If True, uses pykalman smooth for denoising.

estimate_matricesstr or list of str, optional (default=None).

Subset of [state_transition, measurement_function, process_noise, measurement_noise, initial_state, initial_state_covariance, transition_offsets, measurement_offsets] or - all. If estimate_matrices is an iterable of strings, only matrices in estimate_matrices will be estimated using EM algorithm, like described in pykalman. If estimate_matrices is all, then all matrices will be estimated using EM algorithm.

Note - parameters estimated by EM algorithm assumed to be constant.

References

  1. [1 ] Greg Welch and Gary Bishop, “An Introduction to the Kalman Filter”, 2006 https://www.cs.unc.edu/~welch/media/pdf/kalman_intro.pdf [2 ] R.H.Shumway and D.S.Stoffer “An Approach to time Series Smoothing and Forecasting Using the EM Algorithm”, 1982 https://www.stat.pitt.edu/stoffer/dss_files/em.pdf >>> import numpy as np >>> import sktime.transformations.kalman_filter as kf >>> time_steps, state_dim, measurement_dim = 10, 2, 3 >>> >>> X = np. random. rand (time_steps, measurement_dim) * 10 >>> transformer = kf. KalmanFilterTransformerPK (state_dim = state_dim) >>> X_transformed = transformer. fit_transform (X = X) Example of - denoising, matrix estimation and missing values: >>> import numpy as np >>> import sktime.transformations.kalman_filter as kf >>> time_steps, state_dim, measurement_dim = 10, 2, 2 >>> >>> X = np. random. rand (time_steps, measurement_dim) >>> # missing value >>> X [0 ][0 ] = np. nan >>> >>> # If matrices estimation is required, elements of ``estimate_matrices`` >>> # are assumed to be constants. >>> transformer = kf. KalmanFilterTransformerPK (... state_dim = state_dim,... measurement_noise = np. eye (measurement_dim),... denoising = True,... estimate_matrices = ['measurement_noise' ]...) >>> >>> X_transformed = transformer. fit_transform (X = X) Example of - dynamic inputs (matrix per time-step) and missing values: >>> import numpy as np >>> import sktime.transformations.kalman_filter as kf >>> time_steps, state_dim, measurement_dim = 10, 4, 4 >>> >>> X = np. random. rand (time_steps, measurement_dim) >>> # missing values >>> X [0 ] = [np. nan for i in range (measurement_dim)] >>> >>> # Dynamic input - >>> # ``state_transition`` provide different matrix for each time step. >>> transformer = kf. KalmanFilterTransformerPK (... state_dim = state_dim,... state_transition = np. random. rand (time_steps, state_dim, state_dim),... estimate_matrices = ['initial_state', 'initial_state_covariance' ]...) >>> >>> X_transformed = transformer. fit_transform (X = X)