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,
The Kalman Filter is an algorithm designed to estimate . 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 .
The EM algorithm aims to find for
If we define , then the EM algorithm works by iteratively finding,
then by maximizing,
Parameters :  transition_matrices : [n_timesteps1, n_dim_state, n_dim_state] or [n_dim_state,n_dim_state] arraylike
observation_matrices : [n_timesteps, n_dim_obs, n_dim_obs] or [n_dim_obs, n_dim_obs] arraylike
transition_covariance : [n_dim_state, n_dim_state] arraylike
observation_covariance : [n_dim_obs, n_dim_obs] arraylike
transition_offsets : [n_timesteps1, n_dim_state] or [n_dim_state] arraylike
observation_offsets : [n_timesteps, n_dim_obs] or [n_dim_obs] arraylike
initial_state_mean : [n_dim_state] arraylike
initial_state_covariance : [n_dim_state, n_dim_state] arraylike
random_state : optional, numpy random state
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’
n_dim_state: optional, integer :
n_dim_obs: optional, integer :


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 timesteps in length. 
smooth(X)  Apply the Kalman Smoother 
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] arraylike
n_iter : int, optional
em_vars : iterable of strings or ‘all’


Apply the Kalman Filter
Apply the Kalman Filter to estimate the hidden state at time for given observations up to and including time t. Observations are assumed to correspond to times . The output of this method corresponding to time can be used in KalmanFilter.filter_update() for online updating.
Parameters :  X : [n_timesteps, n_dim_obs] arraylike


Returns :  filtered_state_means : [n_timesteps, n_dim_state]
filtered_state_covariances : [n_timesteps, n_dim_state, n_dim_state] array

Update a Kalman Filter state estimate
Perform a onestep update to estimate the state at time give an observation at time and the previous estimate for time given observations from times . This method is useful if one wants to track an object with streaming observations.
Parameters :  filtered_state_mean : [n_dim_state] array
filtered_state_covariance : [n_dim_state, n_dim_state] array
observation : [n_dim_obs] array or None
transition_matrix : optional, [n_dim_state, n_dim_state] array
transition_offset : optional, [n_dim_state] array
transition_covariance : optional, [n_dim_state, n_dim_state] array
observation_matrix : optional, [n_dim_obs, n_dim_state] array
observation_offset : optional, [n_dim_obs] array
observation_covariance : optional, [n_dim_obs, n_dim_obs] array


Returns :  next_filtered_state_mean : [n_dim_state] array
next_filtered_state_covariance : [n_dim_state, n_dim_state] array

Calculate the log likelihood of all observations
Parameters :  X : [n_timesteps, n_dim_obs] array


Returns :  likelihood : float

Sample a state sequence timesteps in length.
Parameters :  n_timesteps : int


Returns :  states : [n_timesteps, n_dim_state] array
observations : [n_timesteps, n_dim_obs] array

Apply the Kalman Smoother
Apply the Kalman Smoother to estimate the hidden state at time for given all observations. See _smooth() for more complex output
Parameters :  X : [n_timesteps, n_dim_obs] arraylike


Returns :  smoothed_state_means : [n_timesteps, n_dim_state]
smoothed_state_covariances : [n_timesteps, n_dim_state]

Implements the General (aka Augmented) Unscented Kalman Filter governed by the following equations,
Notice that although the input noise to the state transition equation and the observation equation are both normally distributed, any nonlinear transformation may be applied afterwards. This allows for greater generality, but at the expense of computational complexity. The complexity of UnscentedKalmanFilter.filter() is where is the number of time steps, is the size of the state space, and is the size of the observation space.
If your noise is simply additive, consider using the AdditiveUnscentedKalmanFilter
Parameters :  transition_functions : function or [n_timesteps1] array of functions
observation_functions : function or [n_timesteps] array of functions
transition_covariance : [n_dim_state, n_dim_state] array
observation_covariance : [n_dim_obs, n_dim_obs] array
initial_state_mean : [n_dim_state] array
initial_state_covariance : [n_dim_state, n_dim_state] array
n_dim_state: optional, integer :
n_dim_obs: optional, integer :
random_state : optional, int or RandomState


Methods
filter(Z)  Run Unscented Kalman Filter 
sample(n_timesteps[, initial_state, ...])  Sample from model defined by the Unscented Kalman Filter 
smooth(Z)  Run Unscented Kalman Smoother 
Run Unscented Kalman Filter
Parameters :  Z : [n_timesteps, n_dim_state] array


Returns :  filtered_state_means : [n_timesteps, n_dim_state] array
filtered_state_covariances : [n_timesteps, n_dim_state, n_dim_state] array

Sample from model defined by the Unscented Kalman Filter
Parameters :  n_timesteps : int
initial_state : optional, [n_dim_state] array
random_state : optional, int or Random


Run Unscented Kalman Smoother
Parameters :  Z : [n_timesteps, n_dim_state] array


Returns :  smoothed_state_means : [n_timesteps, n_dim_state] array
smoothed_state_covariances : [n_timesteps, n_dim_state, n_dim_state] array

Implements the Unscented Kalman Filter with additive noise. Observations are assumed to be generated from the following process,
While less general the generalnoise Unscented Kalman Filter, the Additive version is more computationally efficient with complexity where is the number of time steps and is the size of the state space.
Parameters :  transition_functions : function or [n_timesteps1] array of functions
observation_functions : function or [n_timesteps] array of functions
transition_covariance : [n_dim_state, n_dim_state] array
observation_covariance : [n_dim_obs, n_dim_obs] array
initial_state_mean : [n_dim_state] array
initial_state_covariance : [n_dim_state, n_dim_state] array
n_dim_state: optional, integer :
n_dim_obs: optional, integer :
random_state : optional, int or RandomState


Methods
filter(Z)  Run Unscented Kalman Filter 
sample(n_timesteps[, initial_state, ...])  Sample from model defined by the Unscented Kalman Filter 
smooth(Z)  Run Unscented Kalman Smoother 
Run Unscented Kalman Filter
Parameters :  Z : [n_timesteps, n_dim_state] array


Returns :  filtered_state_means : [n_timesteps, n_dim_state] array
filtered_state_covariances : [n_timesteps, n_dim_state, n_dim_state] array

Sample from model defined by the Unscented Kalman Filter
Parameters :  n_timesteps : int
initial_state : optional, [n_dim_state] array


Run Unscented Kalman Smoother
Parameters :  Z : [n_timesteps, n_dim_state] array


Returns :  smoothed_state_means : [n_timesteps, n_dim_state] array
smoothed_state_covariances : [n_timesteps, n_dim_state, n_dim_state] array
