def test_likelihood_kalman(self): ma_model = PureARMA(theta=[0.5]) ma_data = [0, 1] ma_ts = ARMA(ma_data, subtract_mean=False) likelihood = (2 * np.pi) ** -1 * np.exp(-0.5) self.assertAlmostEqual(ma_ts.get_likelihood(model=ma_model, method="kalman"), likelihood)
def test_likelihood_inno(self): ma_model = PureARMA(theta=[-0.9], sigma_sq=1) ma_data = [-2.58, 1.62, -0.96, 2.62, -1.36] ma = ARMA(ma_data, subtract_mean=False) model_arma11 = PureARMA([0.2], [0.4], sigma_sq=1) zeros = np.zeros(6) non_zeros = [0, 0, 0, 0, 0, 1] zero_ts = ARMA(zeros) non_zero_ts = ARMA(non_zeros, subtract_mean=False) likelihood_zeros = (2 * np.pi) ** -3 * (1.375 * 1.0436 * 1.0067 * 1.0011 * 1.0002) ** -0.5 likelihood_non_zeros = likelihood_zeros * np.exp(-0.5 * (1 / 1.0002)) # self.assertAlmostEqual(ma.get_likelihood(ma_model), 0.0035943790355147075, 4) self.assertAlmostEqual(zero_ts.get_likelihood(model_arma11, method="innovations_algo"), likelihood_zeros) self.assertAlmostEqual( non_zero_ts.get_likelihood(model_arma11, method="innovations_algo"), likelihood_non_zeros, 6 )