def test_get_filtered_state_not_fitted(ft_ll_mvar_diffuse, Yt_mvar_diffuse_missing, theta_ll_mvar_diffuse): kf = Filter(ft_ll_mvar_diffuse, Yt_mvar_diffuse_missing, for_smoother=True) t = 6 with pytest.raises(ValueError) as error: result = kf.get_filtered_state(t) expected_result = 'Kalman filter is not fitted yet' result = str(error.value) assert expected_result == result
def test_get_filtered_state_max(ft_ll_mvar_diffuse, Yt_mvar_diffuse_missing, theta_ll_mvar_diffuse): kf = Filter(ft_ll_mvar_diffuse, Yt_mvar_diffuse_missing, for_smoother=True) kf.fit(theta_ll_mvar_diffuse) t = 6 with pytest.raises(ValueError) as error: result = kf.get_filtered_state(t) expected_result = 'Maximum t allowed is 4' result = str(error.value) assert expected_result == result
def test_get_filtered_state_diffuse(ft_ll_mvar_diffuse, Yt_mvar_diffuse_missing, theta_ll_mvar_diffuse): kf = Filter(ft_ll_mvar_diffuse, Yt_mvar_diffuse_missing, for_smoother=True) kf.fit(theta_ll_mvar_diffuse) t = 1 with pytest.raises(ValueError) as error: result = kf.get_filtered_state(t) expected_result = 'Diffuse state at time 1' result = str(error.value) assert expected_result == result
def test_get_filtered_state_T(ft_ll_mvar_diffuse, Yt_mvar_diffuse_missing, theta_ll_mvar_diffuse): kf = Filter(ft_ll_mvar_diffuse, Yt_mvar_diffuse_missing, for_smoother=True) kf.fit(theta_ll_mvar_diffuse) t = kf.T result = kf.get_filtered_state(t) expected_result = { 'P_star_t': kf.P_T1, 'P_inf_t': np.zeros([2, 2]), 'xi_t': kf.xi_T1, 'q': 0 } for i in ['P_star_t', 'P_inf_t', 'xi_t']: np.testing.assert_array_equal(result[i], expected_result[i]) assert result['q'] == expected_result['q']
def test_get_filtered_state_t(ft_ll_mvar_diffuse, Yt_mvar_diffuse_missing, theta_ll_mvar_diffuse): """ get values at t < self.T """ kf = Filter(ft_ll_mvar_diffuse, Yt_mvar_diffuse_missing, for_smoother=True) kf.fit(theta_ll_mvar_diffuse) t = kf.T - 1 result = kf.get_filtered_state(t) expected_result = { 'P_star_t': kf.P_star_t[t][0], 'P_inf_t': kf.P_inf_t[t][0], 'xi_t': kf.xi_t[t][0], 'q': 0 } for i in ['P_star_t', 'P_inf_t', 'xi_t']: np.testing.assert_array_equal(result[i], expected_result[i]) assert result['q'] == expected_result['q']
def test_over_ride(ft_ll_mvar_diffuse, Yt_mvar_diffuse_missing, theta_ll_mvar_diffuse): """ Force a diffuse kalman filter to become regular filter """ init_val = { 'P_star_t': np.zeros([2, 2]), 'xi_t': 100 * np.ones([2, 1]), 'q': 0 } kf = Filter(ft_ll_mvar_diffuse, Yt_mvar_diffuse_missing, for_smoother=True) kf.fit(theta_ll_mvar_diffuse, init_state=init_val) t = 0 result = kf.get_filtered_state(t) expected_result = { 'P_star_t': np.zeros([2, 2]), 'P_inf_t': np.zeros([2, 2]), 'xi_t': 100 * np.ones([2, 1]), 'q': 0 } for i in ['P_star_t', 'P_inf_t', 'xi_t']: np.testing.assert_array_equal(result[i], expected_result[i]) assert result['q'] == expected_result['q']