def test_missing(): # Datasets endog = np.arange(10).reshape(10,1) endog_pre_na = np.ascontiguousarray(np.c_[ endog.copy() * np.nan, endog.copy() * np.nan, endog, endog]) endog_post_na = np.ascontiguousarray(np.c_[ endog, endog, endog.copy() * np.nan, endog.copy() * np.nan]) endog_inject_na = np.ascontiguousarray(np.c_[ endog, endog.copy() * np.nan, endog, endog.copy() * np.nan]) # Base model mod = KalmanFilter(np.ascontiguousarray(np.c_[endog, endog]), k_states=1, initialization='approximate_diffuse') mod['design', :, :] = 1 mod['obs_cov', :, :] = np.eye(mod.k_endog)*0.5 mod['transition', :, :] = 0.5 mod['selection', :, :] = 1 mod['state_cov', :, :] = 0.5 llf = mod.loglikeobs() # Model with prepended nans mod = KalmanFilter(endog_pre_na, k_states=1, initialization='approximate_diffuse') mod['design', :, :] = 1 mod['obs_cov', :, :] = np.eye(mod.k_endog)*0.5 mod['transition', :, :] = 0.5 mod['selection', :, :] = 1 mod['state_cov', :, :] = 0.5 llf_pre_na = mod.loglikeobs() assert_allclose(llf_pre_na, llf) # Model with appended nans mod = KalmanFilter(endog_post_na, k_states=1, initialization='approximate_diffuse') mod['design', :, :] = 1 mod['obs_cov', :, :] = np.eye(mod.k_endog)*0.5 mod['transition', :, :] = 0.5 mod['selection', :, :] = 1 mod['state_cov', :, :] = 0.5 llf_post_na = mod.loglikeobs() assert_allclose(llf_post_na, llf) # Model with injected nans mod = KalmanFilter(endog_inject_na, k_states=1, initialization='approximate_diffuse') mod['design', :, :] = 1 mod['obs_cov', :, :] = np.eye(mod.k_endog)*0.5 mod['transition', :, :] = 0.5 mod['selection', :, :] = 1 mod['state_cov', :, :] = 0.5 llf_inject_na = mod.loglikeobs() assert_allclose(llf_inject_na, llf)
def test_missing(): # Datasets endog = np.arange(10).reshape(10, 1) endog_pre_na = np.ascontiguousarray(np.c_[endog.copy() * np.nan, endog.copy() * np.nan, endog, endog]) endog_post_na = np.ascontiguousarray(np.c_[endog, endog, endog.copy() * np.nan, endog.copy() * np.nan]) endog_inject_na = np.ascontiguousarray(np.c_[endog, endog.copy() * np.nan, endog, endog.copy() * np.nan]) # Base model mod = KalmanFilter(np.ascontiguousarray(np.c_[endog, endog]), k_states=1, initialization='approximate_diffuse') mod['design', :, :] = 1 mod['obs_cov', :, :] = np.eye(mod.k_endog) * 0.5 mod['transition', :, :] = 0.5 mod['selection', :, :] = 1 mod['state_cov', :, :] = 0.5 llf = mod.loglikeobs() # Model with prepended nans mod = KalmanFilter(endog_pre_na, k_states=1, initialization='approximate_diffuse') mod['design', :, :] = 1 mod['obs_cov', :, :] = np.eye(mod.k_endog) * 0.5 mod['transition', :, :] = 0.5 mod['selection', :, :] = 1 mod['state_cov', :, :] = 0.5 llf_pre_na = mod.loglikeobs() assert_allclose(llf_pre_na, llf) # Model with appended nans mod = KalmanFilter(endog_post_na, k_states=1, initialization='approximate_diffuse') mod['design', :, :] = 1 mod['obs_cov', :, :] = np.eye(mod.k_endog) * 0.5 mod['transition', :, :] = 0.5 mod['selection', :, :] = 1 mod['state_cov', :, :] = 0.5 llf_post_na = mod.loglikeobs() assert_allclose(llf_post_na, llf) # Model with injected nans mod = KalmanFilter(endog_inject_na, k_states=1, initialization='approximate_diffuse') mod['design', :, :] = 1 mod['obs_cov', :, :] = np.eye(mod.k_endog) * 0.5 mod['transition', :, :] = 0.5 mod['selection', :, :] = 1 mod['state_cov', :, :] = 0.5 llf_inject_na = mod.loglikeobs() assert_allclose(llf_inject_na, llf)