コード例 #1
0
ファイル: test_filter.py プロジェクト: DanyangSu/linkalman
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
コード例 #2
0
ファイル: test_filter.py プロジェクト: DanyangSu/linkalman
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
コード例 #3
0
ファイル: test_filter.py プロジェクト: DanyangSu/linkalman
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
コード例 #4
0
ファイル: test_filter.py プロジェクト: DanyangSu/linkalman
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']
コード例 #5
0
ファイル: test_filter.py プロジェクト: DanyangSu/linkalman
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']
コード例 #6
0
ファイル: test_filter.py プロジェクト: DanyangSu/linkalman
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']