KalmanFilter
¶
-
class
pykalman.
KalmanFilter
(transition_matrices=None, observation_matrices=None, transition_covariance=None, observation_covariance=None, transition_offsets=None, observation_offsets=None, initial_state_mean=None, initial_state_covariance=None, random_state=None, em_vars=['transition_covariance', 'observation_covariance', 'initial_state_mean', 'initial_state_covariance'], n_dim_state=None, n_dim_obs=None)¶ Implements the Kalman Filter, Kalman Smoother, and EM algorithm.
This class implements the Kalman Filter, Kalman Smoother, and EM Algorithm for a Linear Gaussian model specified by,
x_{t+1} &= A_{t} x_{t} + b_{t} + \text{Normal}(0, Q_{t}) \\ z_{t} &= C_{t} x_{t} + d_{t} + \text{Normal}(0, R_{t})
The Kalman Filter is an algorithm designed to estimate P(x_t | z_{0:t}). As all state transitions and observations are linear with Gaussian distributed noise, these distributions can be represented exactly as Gaussian distributions with mean filtered_state_means[t] and covariances filtered_state_covariances[t].
Similarly, the Kalman Smoother is an algorithm designed to estimate P(x_t | z_{0:T-1}).
The EM algorithm aims to find for \theta = (A, b, C, d, Q, R, \mu_0, \Sigma_0)
\max_{\theta} P(z_{0:T-1}; \theta)
If we define L(x_{0:T-1},\theta) = \log P(z_{0:T-1}, x_{0:T-1}; \theta), then the EM algorithm works by iteratively finding,
P(x_{0:T-1} | z_{0:T-1}, \theta_i)
then by maximizing,
\theta_{i+1} = \arg\max_{\theta} \mathbb{E}_{x_{0:T-1}} [ L(x_{0:T-1}, \theta)| z_{0:T-1}, \theta_i ]
Parameters: transition_matrices : [n_timesteps-1, n_dim_state, n_dim_state] or [n_dim_state,n_dim_state] array-like
Also known as A. state transition matrix between times t and t+1 for t in [0…n_timesteps-2]
observation_matrices : [n_timesteps, n_dim_obs, n_dim_state] or [n_dim_obs, n_dim_state] array-like
Also known as C. observation matrix for times [0…n_timesteps-1]
transition_covariance : [n_dim_state, n_dim_state] array-like
Also known as Q. state transition covariance matrix for times [0…n_timesteps-2]
observation_covariance : [n_dim_obs, n_dim_obs] array-like
Also known as R. observation covariance matrix for times [0…n_timesteps-1]
transition_offsets : [n_timesteps-1, n_dim_state] or [n_dim_state] array-like
Also known as b. state offsets for times [0…n_timesteps-2]
observation_offsets : [n_timesteps, n_dim_obs] or [n_dim_obs] array-like
Also known as d. observation offset for times [0…n_timesteps-1]
initial_state_mean : [n_dim_state] array-like
Also known as \mu_0. mean of initial state distribution
initial_state_covariance : [n_dim_state, n_dim_state] array-like
Also known as \Sigma_0. covariance of initial state distribution
random_state : optional, numpy random state
random number generator used in sampling
em_vars : optional, subset of [‘transition_matrices’, ‘observation_matrices’, ‘transition_offsets’, ‘observation_offsets’, ‘transition_covariance’, ‘observation_covariance’, ‘initial_state_mean’, ‘initial_state_covariance’] or ‘all’
if em_vars is an iterable of strings only variables in em_vars will be estimated using EM. if em_vars == ‘all’, then all variables will be estimated.
n_dim_state: optional, integer
the dimensionality of the state space. Only meaningful when you do not specify initial values for transition_matrices, transition_offsets, transition_covariance, initial_state_mean, or initial_state_covariance.
n_dim_obs: optional, integer
the dimensionality of the observation space. Only meaningful when you do not specify initial values for observation_matrices, observation_offsets, or observation_covariance.
Methods
em
(X[, y, n_iter, em_vars])Apply the EM algorithm filter
(X)Apply the Kalman Filter filter_update
(filtered_state_mean, …[, …])Update a Kalman Filter state estimate loglikelihood
(X)Calculate the log likelihood of all observations sample
(n_timesteps[, initial_state, …])Sample a state sequence n_{\text{timesteps}} timesteps in length. smooth
(X)Apply the Kalman Smoother -
em
(X, y=None, n_iter=10, em_vars=None)¶ Apply the EM algorithm
Apply the EM algorithm to estimate all parameters specified by em_vars. Note that all variables estimated are assumed to be constant for all time. See
_em()
for details.Parameters: X : [n_timesteps, n_dim_obs] array-like
observations corresponding to times [0…n_timesteps-1]. If X is a masked array and any of X[t]’s components is masked, then X[t] will be treated as a missing observation.
n_iter : int, optional
number of EM iterations to perform
em_vars : iterable of strings or ‘all’
variables to perform EM over. Any variable not appearing here is left untouched.
-
filter
(X)¶ Apply the Kalman Filter
Apply the Kalman Filter to estimate the hidden state at time t for t = [0...n_{\text{timesteps}}-1] given observations up to and including time t. Observations are assumed to correspond to times [0...n_{\text{timesteps}}-1]. The output of this method corresponding to time n_{\text{timesteps}}-1 can be used in
KalmanFilter.filter_update()
for online updating.Parameters: X : [n_timesteps, n_dim_obs] array-like
observations corresponding to times [0…n_timesteps-1]. If X is a masked array and any of X[t] is masked, then X[t] will be treated as a missing observation.
Returns: filtered_state_means : [n_timesteps, n_dim_state]
mean of hidden state distributions for times [0…n_timesteps-1] given observations up to and including the current time step
filtered_state_covariances : [n_timesteps, n_dim_state, n_dim_state] array
covariance matrix of hidden state distributions for times [0…n_timesteps-1] given observations up to and including the current time step
-
filter_update
(filtered_state_mean, filtered_state_covariance, observation=None, transition_matrix=None, transition_offset=None, transition_covariance=None, observation_matrix=None, observation_offset=None, observation_covariance=None)¶ Update a Kalman Filter state estimate
Perform a one-step update to estimate the state at time t+1 give an observation at time t+1 and the previous estimate for time t given observations from times [0...t]. This method is useful if one wants to track an object with streaming observations.
Parameters: filtered_state_mean : [n_dim_state] array
mean estimate for state at time t given observations from times [1…t]
filtered_state_covariance : [n_dim_state, n_dim_state] array
covariance of estimate for state at time t given observations from times [1…t]
observation : [n_dim_obs] array or None
observation from time t+1. If observation is a masked array and any of observation’s components are masked or if observation is None, then observation will be treated as a missing observation.
transition_matrix : optional, [n_dim_state, n_dim_state] array
state transition matrix from time t to t+1. If unspecified, self.transition_matrices will be used.
transition_offset : optional, [n_dim_state] array
state offset for transition from time t to t+1. If unspecified, self.transition_offset will be used.
transition_covariance : optional, [n_dim_state, n_dim_state] array
state transition covariance from time t to t+1. If unspecified, self.transition_covariance will be used.
observation_matrix : optional, [n_dim_obs, n_dim_state] array
observation matrix at time t+1. If unspecified, self.observation_matrices will be used.
observation_offset : optional, [n_dim_obs] array
observation offset at time t+1. If unspecified, self.observation_offset will be used.
observation_covariance : optional, [n_dim_obs, n_dim_obs] array
observation covariance at time t+1. If unspecified, self.observation_covariance will be used.
Returns: next_filtered_state_mean : [n_dim_state] array
mean estimate for state at time t+1 given observations from times [1…t+1]
next_filtered_state_covariance : [n_dim_state, n_dim_state] array
covariance of estimate for state at time t+1 given observations from times [1…t+1]
-
loglikelihood
(X)¶ Calculate the log likelihood of all observations
Parameters: X : [n_timesteps, n_dim_obs] array
observations for time steps [0…n_timesteps-1]
Returns: likelihood : float
likelihood of all observations
-
sample
(n_timesteps, initial_state=None, random_state=None)¶ Sample a state sequence n_{\text{timesteps}} timesteps in length.
Parameters: n_timesteps : int
number of timesteps
Returns: states : [n_timesteps, n_dim_state] array
hidden states corresponding to times [0…n_timesteps-1]
observations : [n_timesteps, n_dim_obs] array
observations corresponding to times [0…n_timesteps-1]
-
smooth
(X)¶ Apply the Kalman Smoother
Apply the Kalman Smoother to estimate the hidden state at time t for t = [0...n_{\text{timesteps}}-1] given all observations. See
_smooth()
for more complex outputParameters: X : [n_timesteps, n_dim_obs] array-like
observations corresponding to times [0…n_timesteps-1]. If X is a masked array and any of X[t] is masked, then X[t] will be treated as a missing observation.
Returns: smoothed_state_means : [n_timesteps, n_dim_state]
mean of hidden state distributions for times [0…n_timesteps-1] given all observations
smoothed_state_covariances : [n_timesteps, n_dim_state]
covariances of hidden state distributions for times [0…n_timesteps-1] given all observations
-
-
class
pykalman.sqrt.
CholeskyKalmanFilter
(transition_matrices=None, observation_matrices=None, transition_covariance=None, observation_covariance=None, transition_offsets=None, observation_offsets=None, initial_state_mean=None, initial_state_covariance=None, random_state=None, em_vars=['transition_covariance', 'observation_covariance', 'initial_state_mean', 'initial_state_covariance'], n_dim_state=None, n_dim_obs=None)¶ Kalman Filter based on Cholesky decomposition
Parameters: transition_matrices : [n_timesteps-1, n_dim_state, n_dim_state] or [n_dim_state,n_dim_state] array-like
Also known as A. state transition matrix between times t and t+1 for t in [0…n_timesteps-2]
observation_matrices : [n_timesteps, n_dim_obs, n_dim_obs] or [n_dim_obs, n_dim_obs] array-like
Also known as C. observation matrix for times [0…n_timesteps-1]
transition_covariance : [n_dim_state, n_dim_state] array-like
Also known as Q. state transition covariance matrix for times [0…n_timesteps-2]
observation_covariance : [n_dim_obs, n_dim_obs] array-like
Also known as R. observation covariance matrix for times [0…n_timesteps-1]
transition_offsets : [n_timesteps-1, n_dim_state] or [n_dim_state] array-like
Also known as b. state offsets for times [0…n_timesteps-2]
observation_offsets : [n_timesteps, n_dim_obs] or [n_dim_obs] array-like
Also known as d. observation offset for times [0…n_timesteps-1]
initial_state_mean : [n_dim_state] array-like
Also known as \mu_0. mean of initial state distribution
initial_state_covariance : [n_dim_state, n_dim_state] array-like
Also known as \Sigma_0. covariance of initial state distribution
random_state : optional, numpy random state
random number generator used in sampling
em_vars : optional, subset of [‘transition_matrices’, ‘observation_matrices’, ‘transition_offsets’, ‘observation_offsets’, ‘transition_covariance’, ‘observation_covariance’, ‘initial_state_mean’, ‘initial_state_covariance’] or ‘all’
if em_vars is an iterable of strings only variables in em_vars will be estimated using EM. if em_vars == ‘all’, then all variables will be estimated.
n_dim_state: optional, integer
the dimensionality of the state space. Only meaningful when you do not specify initial values for transition_matrices, transition_offsets, transition_covariance, initial_state_mean, or initial_state_covariance.
n_dim_obs: optional, integer
the dimensionality of the observation space. Only meaningful when you do not specify initial values for observation_matrices, observation_offsets, or observation_covariance.
Methods
em
(X[, y, n_iter, em_vars])Apply the EM algorithm filter
(X)Apply the Kalman Filter filter_update
(filtered_state_mean, …[, …])Update a Kalman Filter state estimate loglikelihood
(X)Calculate the log likelihood of all observations sample
(n_timesteps[, initial_state, …])Sample a state sequence n_{\text{timesteps}} timesteps in length. smooth
(X)Apply the Kalman Smoother
-
class
pykalman.sqrt.
BiermanKalmanFilter
(transition_matrices=None, observation_matrices=None, transition_covariance=None, observation_covariance=None, transition_offsets=None, observation_offsets=None, initial_state_mean=None, initial_state_covariance=None, random_state=None, em_vars=['transition_covariance', 'observation_covariance', 'initial_state_mean', 'initial_state_covariance'], n_dim_state=None, n_dim_obs=None)¶ Kalman Filter based on UDU’ decomposition
Parameters: transition_matrices : [n_timesteps-1, n_dim_state, n_dim_state] or [n_dim_state,n_dim_state] array-like
Also known as A. state transition matrix between times t and t+1 for t in [0…n_timesteps-2]
observation_matrices : [n_timesteps, n_dim_obs, n_dim_obs] or [n_dim_obs, n_dim_obs] array-like
Also known as C. observation matrix for times [0…n_timesteps-1]
transition_covariance : [n_dim_state, n_dim_state] array-like
Also known as Q. state transition covariance matrix for times [0…n_timesteps-2]
observation_covariance : [n_dim_obs, n_dim_obs] array-like
Also known as R. observation covariance matrix for times [0…n_timesteps-1]
transition_offsets : [n_timesteps-1, n_dim_state] or [n_dim_state] array-like
Also known as b. state offsets for times [0…n_timesteps-2]
observation_offsets : [n_timesteps, n_dim_obs] or [n_dim_obs] array-like
Also known as d. observation offset for times [0…n_timesteps-1]
initial_state_mean : [n_dim_state] array-like
Also known as \mu_0. mean of initial state distribution
initial_state_covariance : [n_dim_state, n_dim_state] array-like
Also known as \Sigma_0. covariance of initial state distribution
random_state : optional, numpy random state
random number generator used in sampling
em_vars : optional, subset of [‘transition_matrices’, ‘observation_matrices’, ‘transition_offsets’, ‘observation_offsets’, ‘transition_covariance’, ‘observation_covariance’, ‘initial_state_mean’, ‘initial_state_covariance’] or ‘all’
if em_vars is an iterable of strings only variables in em_vars will be estimated using EM. if em_vars == ‘all’, then all variables will be estimated.
n_dim_state: optional, integer
the dimensionality of the state space. Only meaningful when you do not specify initial values for transition_matrices, transition_offsets, transition_covariance, initial_state_mean, or initial_state_covariance.
n_dim_obs: optional, integer
the dimensionality of the observation space. Only meaningful when you do not specify initial values for observation_matrices, observation_offsets, or observation_covariance.
Methods
em
(X[, y, n_iter, em_vars])Apply the EM algorithm filter
(X)Apply the Kalman Filter filter_update
(filtered_state_mean, …[, …])Update a Kalman Filter state estimate loglikelihood
(X)Calculate the log likelihood of all observations sample
(n_timesteps[, initial_state, …])Sample a state sequence n_{\text{timesteps}} timesteps in length. smooth
(X)Apply the Kalman Smoother
UnscentedKalmanFilter
¶
-
class
pykalman.
UnscentedKalmanFilter
(transition_functions=None, observation_functions=None, transition_covariance=None, observation_covariance=None, initial_state_mean=None, initial_state_covariance=None, n_dim_state=None, n_dim_obs=None, random_state=None)¶ Implements the General (aka Augmented) Unscented Kalman Filter governed by the following equations,
x_0 &\sim \text{Normal}(\mu_0, \Sigma_0) \\ x_{t+1} &= f_t(x_t, \text{Normal}(0, Q)) \\ z_{t} &= g_t(x_t, \text{Normal}(0, R))
Notice that although the input noise to the state transition equation and the observation equation are both normally distributed, any non-linear transformation may be applied afterwards. This allows for greater generality, but at the expense of computational complexity. The complexity of
UnscentedKalmanFilter.filter()
is O(T(2n+m)^3) where T is the number of time steps, n is the size of the state space, and m is the size of the observation space.If your noise is simply additive, consider using the
AdditiveUnscentedKalmanFilter
Parameters: transition_functions : function or [n_timesteps-1] array of functions
transition_functions[t] is a function of the state and the transition noise at time t and produces the state at time t+1. Also known as f_t.
observation_functions : function or [n_timesteps] array of functions
observation_functions[t] is a function of the state and the observation noise at time t and produces the observation at time t. Also known as g_t.
transition_covariance : [n_dim_state, n_dim_state] array
transition noise covariance matrix. Also known as Q.
observation_covariance : [n_dim_obs, n_dim_obs] array
observation noise covariance matrix. Also known as R.
initial_state_mean : [n_dim_state] array
mean of initial state distribution. Also known as \mu_0
initial_state_covariance : [n_dim_state, n_dim_state] array
covariance of initial state distribution. Also known as \Sigma_0
n_dim_state: optional, integer
the dimensionality of the state space. Only meaningful when you do not specify initial values for transition_covariance, or initial_state_mean, initial_state_covariance.
n_dim_obs: optional, integer
the dimensionality of the observation space. Only meaningful when you do not specify initial values for observation_covariance.
random_state : optional, int or RandomState
seed for random sample generation
Methods
filter
(Z)Run Unscented Kalman Filter filter_update
(filtered_state_mean, …[, …])Update a Kalman Filter state estimate sample
(n_timesteps[, initial_state, …])Sample from model defined by the Unscented Kalman Filter smooth
(Z)Run Unscented Kalman Smoother -
filter
(Z)¶ Run Unscented Kalman Filter
Parameters: Z : [n_timesteps, n_dim_state] array
Z[t] = observation at time t. If Z is a masked array and any of Z[t]’s elements are masked, the observation is assumed missing and ignored.
Returns: filtered_state_means : [n_timesteps, n_dim_state] array
filtered_state_means[t] = mean of state distribution at time t given observations from times [0, t]
filtered_state_covariances : [n_timesteps, n_dim_state, n_dim_state] array
filtered_state_covariances[t] = covariance of state distribution at time t given observations from times [0, t]
-
filter_update
(filtered_state_mean, filtered_state_covariance, observation=None, transition_function=None, transition_covariance=None, observation_function=None, observation_covariance=None)¶ Update a Kalman Filter state estimate
Perform a one-step update to estimate the state at time t+1 give an observation at time t+1 and the previous estimate for time t given observations from times [0...t]. This method is useful if one wants to track an object with streaming observations.
Parameters: filtered_state_mean : [n_dim_state] array
mean estimate for state at time t given observations from times [1…t]
filtered_state_covariance : [n_dim_state, n_dim_state] array
covariance of estimate for state at time t given observations from times [1…t]
observation : [n_dim_obs] array or None
observation from time t+1. If observation is a masked array and any of observation’s components are masked or if observation is None, then observation will be treated as a missing observation.
transition_function : optional, function
state transition function from time t to t+1. If unspecified, self.transition_functions will be used.
transition_covariance : optional, [n_dim_state, n_dim_state] array
state transition covariance from time t to t+1. If unspecified, self.transition_covariance will be used.
observation_function : optional, function
observation function at time t+1. If unspecified, self.observation_functions will be used.
observation_covariance : optional, [n_dim_obs, n_dim_obs] array
observation covariance at time t+1. If unspecified, self.observation_covariance will be used.
Returns: next_filtered_state_mean : [n_dim_state] array
mean estimate for state at time t+1 given observations from times [1…t+1]
next_filtered_state_covariance : [n_dim_state, n_dim_state] array
covariance of estimate for state at time t+1 given observations from times [1…t+1]
-
sample
(n_timesteps, initial_state=None, random_state=None)¶ Sample from model defined by the Unscented Kalman Filter
Parameters: n_timesteps : int
number of time steps
initial_state : optional, [n_dim_state] array
initial state. If unspecified, will be sampled from initial state distribution.
random_state : optional, int or Random
random number generator
-
smooth
(Z)¶ Run Unscented Kalman Smoother
Parameters: Z : [n_timesteps, n_dim_state] array
Z[t] = observation at time t. If Z is a masked array and any of Z[t]’s elements are masked, the observation is assumed missing and ignored.
Returns: smoothed_state_means : [n_timesteps, n_dim_state] array
filtered_state_means[t] = mean of state distribution at time t given observations from times [0, n_timesteps-1]
smoothed_state_covariances : [n_timesteps, n_dim_state, n_dim_state] array
filtered_state_covariances[t] = covariance of state distribution at time t given observations from times [0, n_timesteps-1]
-
AdditiveUnscentedKalmanFilter
¶
-
class
pykalman.
AdditiveUnscentedKalmanFilter
(transition_functions=None, observation_functions=None, transition_covariance=None, observation_covariance=None, initial_state_mean=None, initial_state_covariance=None, n_dim_state=None, n_dim_obs=None, random_state=None)¶ Implements the Unscented Kalman Filter with additive noise. Observations are assumed to be generated from the following process,
x_0 &\sim \text{Normal}(\mu_0, \Sigma_0) \\ x_{t+1} &= f_t(x_t) + \text{Normal}(0, Q) \\ z_{t} &= g_t(x_t) + \text{Normal}(0, R)
While less general the general-noise Unscented Kalman Filter, the Additive version is more computationally efficient with complexity O(Tn^3) where T is the number of time steps and n is the size of the state space.
Parameters: transition_functions : function or [n_timesteps-1] array of functions
transition_functions[t] is a function of the state at time t and produces the state at time t+1. Also known as f_t.
observation_functions : function or [n_timesteps] array of functions
observation_functions[t] is a function of the state at time t and produces the observation at time t. Also known as g_t.
transition_covariance : [n_dim_state, n_dim_state] array
transition noise covariance matrix. Also known as Q.
observation_covariance : [n_dim_obs, n_dim_obs] array
observation noise covariance matrix. Also known as R.
initial_state_mean : [n_dim_state] array
mean of initial state distribution. Also known as \mu_0.
initial_state_covariance : [n_dim_state, n_dim_state] array
covariance of initial state distribution. Also known as \Sigma_0.
n_dim_state: optional, integer
the dimensionality of the state space. Only meaningful when you do not specify initial values for transition_covariance, or initial_state_mean, initial_state_covariance.
n_dim_obs: optional, integer
the dimensionality of the observation space. Only meaningful when you do not specify initial values for observation_covariance.
random_state : optional, int or RandomState
seed for random sample generation
Methods
filter
(Z)Run Unscented Kalman Filter filter_update
(filtered_state_mean, …[, …])Update a Kalman Filter state estimate sample
(n_timesteps[, initial_state, …])Sample from model defined by the Unscented Kalman Filter smooth
(Z)Run Unscented Kalman Smoother -
filter
(Z)¶ Run Unscented Kalman Filter
Parameters: Z : [n_timesteps, n_dim_state] array
Z[t] = observation at time t. If Z is a masked array and any of Z[t]’s elements are masked, the observation is assumed missing and ignored.
Returns: filtered_state_means : [n_timesteps, n_dim_state] array
filtered_state_means[t] = mean of state distribution at time t given observations from times [0, t]
filtered_state_covariances : [n_timesteps, n_dim_state, n_dim_state] array
filtered_state_covariances[t] = covariance of state distribution at time t given observations from times [0, t]
-
filter_update
(filtered_state_mean, filtered_state_covariance, observation=None, transition_function=None, transition_covariance=None, observation_function=None, observation_covariance=None)¶ Update a Kalman Filter state estimate
Perform a one-step update to estimate the state at time t+1 give an observation at time t+1 and the previous estimate for time t given observations from times [0...t]. This method is useful if one wants to track an object with streaming observations.
Parameters: filtered_state_mean : [n_dim_state] array
mean estimate for state at time t given observations from times [1…t]
filtered_state_covariance : [n_dim_state, n_dim_state] array
covariance of estimate for state at time t given observations from times [1…t]
observation : [n_dim_obs] array or None
observation from time t+1. If observation is a masked array and any of observation’s components are masked or if observation is None, then observation will be treated as a missing observation.
transition_function : optional, function
state transition function from time t to t+1. If unspecified, self.transition_functions will be used.
transition_covariance : optional, [n_dim_state, n_dim_state] array
state transition covariance from time t to t+1. If unspecified, self.transition_covariance will be used.
observation_function : optional, function
observation function at time t+1. If unspecified, self.observation_functions will be used.
observation_covariance : optional, [n_dim_obs, n_dim_obs] array
observation covariance at time t+1. If unspecified, self.observation_covariance will be used.
Returns: next_filtered_state_mean : [n_dim_state] array
mean estimate for state at time t+1 given observations from times [1…t+1]
next_filtered_state_covariance : [n_dim_state, n_dim_state] array
covariance of estimate for state at time t+1 given observations from times [1…t+1]
-
sample
(n_timesteps, initial_state=None, random_state=None)¶ Sample from model defined by the Unscented Kalman Filter
Parameters: n_timesteps : int
number of time steps
initial_state : optional, [n_dim_state] array
initial state. If unspecified, will be sampled from initial state distribution.
-
smooth
(Z)¶ Run Unscented Kalman Smoother
Parameters: Z : [n_timesteps, n_dim_state] array
Z[t] = observation at time t. If Z is a masked array and any of Z[t]’s elements are masked, the observation is assumed missing and ignored.
Returns: smoothed_state_means : [n_timesteps, n_dim_state] array
filtered_state_means[t] = mean of state distribution at time t given observations from times [0, n_timesteps-1]
smoothed_state_covariances : [n_timesteps, n_dim_state, n_dim_state] array
filtered_state_covariances[t] = covariance of state distribution at time t given observations from times [0, n_timesteps-1]
-
-
class
pykalman.sqrt.
AdditiveUnscentedKalmanFilter
(transition_functions=None, observation_functions=None, transition_covariance=None, observation_covariance=None, initial_state_mean=None, initial_state_covariance=None, n_dim_state=None, n_dim_obs=None, random_state=None)¶ Implements the Unscented Kalman Filter with additive noise. Observations are assumed to be generated from the following process,
x_0 &\sim \text{Normal}(\mu_0, \Sigma_0) \\ x_{t+1} &= f_t(x_t) + \text{Normal}(0, Q) \\ z_{t} &= g_t(x_t) + \text{Normal}(0, R)
While less general the general-noise Unscented Kalman Filter, the Additive version is more computationally efficient with complexity O(Tn^3) where T is the number of time steps and n is the size of the state space.
Parameters: transition_functions : function or [n_timesteps-1] array of functions
transition_functions[t] is a function of the state at time t and produces the state at time t+1. Also known as f_t.
observation_functions : function or [n_timesteps] array of functions
observation_functions[t] is a function of the state at time t and produces the observation at time t. Also known as g_t.
transition_covariance : [n_dim_state, n_dim_state] array
transition noise covariance matrix. Also known as Q.
observation_covariance : [n_dim_obs, n_dim_obs] array
observation noise covariance matrix. Also known as R.
initial_state_mean : [n_dim_state] array
mean of initial state distribution. Also known as \mu_0.
initial_state_covariance : [n_dim_state, n_dim_state] array
covariance of initial state distribution. Also known as \Sigma_0.
n_dim_state: optional, integer
the dimensionality of the state space. Only meaningful when you do not specify initial values for transition_covariance, or initial_state_mean, initial_state_covariance.
n_dim_obs: optional, integer
the dimensionality of the observation space. Only meaningful when you do not specify initial values for observation_covariance.
random_state : optional, int or RandomState
seed for random sample generation
Methods
filter
(Z)Run Unscented Kalman Filter filter_update
(filtered_state_mean, …[, …])Update a Kalman Filter state estimate sample
(n_timesteps[, initial_state, …])Sample from model defined by the Unscented Kalman Filter smooth
(Z)Run Unscented Kalman Smoother