def test_kalman_fit(): # check against MATLAB dataset kf = KalmanFilter( data.transition_matrix, data.observation_matrix, data.initial_transition_covariance, data.initial_observation_covariance, data.transition_offsets, data.observation_offset, data.initial_state_mean, data.initial_state_covariance, em_vars=['transition_covariance', 'observation_covariance']) loglikelihoods = np.zeros(5) for i in range(len(loglikelihoods)): loglikelihoods[i] = kf.loglikelihood(data.observations) kf.em(X=data.observations, n_iter=1) assert_true(np.allclose(loglikelihoods, data.loglikelihoods[:5])) # check that EM for all parameters is working kf.em_vars = 'all' n_timesteps = 30 for i in range(len(loglikelihoods)): kf.em(X=data.observations[0:n_timesteps], n_iter=1) loglikelihoods[i] = kf.loglikelihood(data.observations[0:n_timesteps]) for i in range(len(loglikelihoods) - 1): assert_true(loglikelihoods[i] < loglikelihoods[i + 1])