def test_laplace_bbvi_elbo(): """ Tests that the ELBO increases """ model = pf.GAS(data=data, ar=1, sc=1, family=pf.Laplace()) x = model.fit('BBVI', iterations=100, record_elbo=True, map_start=False) assert (x.elbo_records[-1] > x.elbo_records[0])
def test_poisson_bbvi_elbo(): """ Tests that the ELBO increases """ model = pf.GAS(data=countdata, ar=1, sc=1, family=pf.Poisson()) x = model.fit('BBVI', iterations=200, record_elbo=True, map_start=False) assert (x.elbo_records[-1] > x.elbo_records[0])
def test_exponential_bbvi_elbo(): """ Tests that the ELBO increases """ model = pf.GAS(data=exponentialdata, ar=1, sc=1, family=pf.Exponential()) x = model.fit('BBVI', iterations=200, record_elbo=True, map_start=False) assert (x.elbo_records[-1] > x.elbo_records[0])
def test_cauchy_bbvi_mini_batch_elbo(): """ Tests that the ELBO increases """ model = pf.GAS(data=data, ar=1, sc=1, family=pf.Cauchy()) x = model.fit('BBVI', iterations=100, mini_batch=32, record_elbo=True) assert (x.elbo_records[-1] > x.elbo_records[0])
def test_laplace_predict_is_length(): """ Tests that the prediction IS dataframe length is equal to the number of steps h """ model = pf.GAS(data=data, ar=2, sc=2, family=pf.Laplace()) x = model.fit() assert (model.predict_is(h=5).shape[0] == 5)
def test_bbvi_elbo(): """ Tests that the ELBO increases """ model = pf.GAS(data=data, ar=1, sc=1, family=pf.Normal()) x = model.fit('BBVI', iterations=100, record_elbo=True) assert (x.elbo_records[-1] > x.elbo_records[0])
def test_poisson_predict_length(): """ Tests that the prediction dataframe length is equal to the number of steps h """ model = pf.GAS(data=countdata, ar=2, sc=2, family=pf.Poisson()) x = model.fit() x.summary() assert (model.predict(h=5).shape[0] == 5)
def test_poisson_predict_is_nans(): """ Tests that the in-sample predictions are not nans """ model = pf.GAS(data=countdata, ar=2, sc=2, family=pf.GASPoisson()) x = model.fit() x.summary() assert(len(model.predict_is(h=5).values[np.isnan(model.predict_is(h=5).values)]) == 0)
def test_laplace_predict_nans(): """ Tests that the predictions are not nans """ model = pf.GAS(data=data, ar=2, sc=2, family=pf.GASLaplace()) x = model.fit() x.summary() assert(len(model.predict(h=5).values[np.isnan(model.predict(h=5).values)]) == 0)
def test_skewt_predict_is_nans(): """ Tests that the in-sample predictions are not nans """ model = pf.GAS(data=data, ar=1, sc=1, family=pf.GASSkewt()) x = model.fit() x.summary() assert(len(model.predict_is(h=5).values[np.isnan(model.predict_is(h=5).values)]) == 0)
def test_skewt_predict_length(): """ Tests that the prediction dataframe length is equal to the number of steps h """ model = pf.GAS(data=data, ar=1, sc=1, family=pf.GASSkewt()) x = model.fit() x.summary() assert(model.predict(h=5).shape[0] == 5)
def gasy(self, topic_index=0): model = pf.GAS(ar=2, sc=2, data=self.topic_counts[topic_index], family=pf.Poisson()) x = model.fit() x.summary() model.plot_fit()
def test_exponential_ppc(): """ Tests PPC value """ model = pf.GAS(data=exponentialdata, ar=1, sc=1, family=pf.Exponential()) x = model.fit('BBVI', iterations=100) p_value = model.ppc() assert (0.0 <= p_value <= 1.0)
def test_exponential_predict_length(): """ Tests that the prediction dataframe length is equal to the number of steps h """ model = pf.GAS(data=exponentialdata, ar=2, sc=2, family=pf.Exponential()) x = model.fit() x.summary() assert (model.predict(h=5).shape[0] == 5)
def test_poisson_ppc(): """ Tests PPC value """ model = pf.GAS(data=countdata, ar=1, sc=1, family=pf.Poisson()) x = model.fit('BBVI', iterations=200) p_value = model.ppc() assert (0.0 <= p_value <= 1.0)
def test_laplace_ppc(): """ Tests PPC value """ model = pf.GAS(data=data, ar=1, sc=1, family=pf.Laplace()) x = model.fit('BBVI', iterations=100) p_value = model.ppc() assert (0.0 <= p_value <= 1.0)
def test_exponential_predict_nans(): """ Tests that the predictions are not nans """ model = pf.GAS(data=exponentialdata, ar=2, sc=2, family=pf.Exponential()) x = model.fit() x.summary() assert (len( model.predict(h=5).values[np.isnan(model.predict(h=5).values)]) == 0)
def test_poisson_sample_model(): """ Tests sampling function """ model = pf.GAS(data=countdata, ar=1, sc=1, family=pf.Poisson()) x = model.fit('BBVI', iterations=200) sample = model.sample(nsims=100) assert (sample.shape[0] == 100) assert (sample.shape[1] == len(data) - 1)
def test_laplace_predict_is_nonconstant(): """ We should not really have predictions that are constant (should be some difference)... This captures bugs with the predict function not iterating forward """ model = pf.GAS(data=data, ar=1, sc=1, family=pf.Laplace()) x = model.fit() predictions = model.predict_is(h=10, intervals=False) assert (not np.all(predictions.values == predictions.values[0]))
def test_laplace_sample_model(): """ Tests sampling function """ model = pf.GAS(data=data, ar=1, sc=1, family=pf.Laplace()) x = model.fit('BBVI', iterations=100) sample = model.sample(nsims=100) assert (sample.shape[0] == 100) assert (sample.shape[1] == len(data) - 1)
def test_laplace_mh(): """ Tests an GAS model estimated with Metropolis-Hastings and that the length of the latent variable list is correct, and that the estimated latent variables are not nan """ model = pf.GAS(data=data, ar=1, sc=1, family=pf.Laplace()) x = model.fit('M-H', nsims=300) assert (len(model.latent_variables.z_list) == 4) lvs = np.array([i.value for i in model.latent_variables.z_list]) assert (len(lvs[np.isnan(lvs)]) == 0)
def test_exponential_bbvi(): """ Tests an GAS model estimated with BBVI and that the length of the latent variable list is correct, and that the estimated latent variables are not nan """ model = pf.GAS(data=exponentialdata, ar=1, sc=1, family=pf.Exponential()) x = model.fit('BBVI', iterations=100, map_start=False) assert (len(model.latent_variables.z_list) == 3) lvs = np.array([i.value for i in model.latent_variables.z_list]) assert (len(lvs[np.isnan(lvs)]) == 0)
def test_laplace_bbvi_mini_batch(): """ Tests an ARIMA model estimated with BBVI and that the length of the latent variable list is correct, and that the estimated latent variables are not nan """ model = pf.GAS(data=data, ar=1, sc=1, family=pf.Laplace()) x = model.fit('BBVI', iterations=100, mini_batch=32) assert (len(model.latent_variables.z_list) == 4) lvs = np.array([i.value for i in model.latent_variables.z_list]) assert (len(lvs[np.isnan(lvs)]) == 0)
def test_skewt_bbvi(): """ Tests an GAS model estimated with BBVI and that the length of the latent variable list is correct, and that the estimated latent variables are not nan """ model = pf.GAS(data=data, ar=1, sc=1, family=pf.GASSkewt()) x = model.fit('BBVI',iterations=100) assert(len(model.latent_variables.z_list) == 6) lvs = np.array([i.value for i in model.latent_variables.z_list]) assert(len(lvs[np.isnan(lvs)]) == 0)
def test_laplace_pml(): """ Tests a PML model estimated with Laplace approximation and that the length of the latent variable list is correct, and that the estimated latent variables are not nan """ model = pf.GAS(data=data, ar=1, sc=1, family=pf.Laplace()) x = model.fit('PML') assert (len(model.latent_variables.z_list) == 4) lvs = np.array([i.value for i in model.latent_variables.z_list]) assert (len(lvs[np.isnan(lvs)]) == 0)
def test_poisson_bbvi_mini_batch(): """ Tests an ARIMA model estimated with BBVI and that the length of the latent variable list is correct, and that the estimated latent variables are not nan """ model = pf.GAS(data=countdata, ar=1, sc=1, family=pf.Poisson()) x = model.fit('BBVI', iterations=200, mini_batch=32, map_start=False) assert (len(model.latent_variables.z_list) == 3) lvs = np.array([i.value for i in model.latent_variables.z_list]) assert (len(lvs[np.isnan(lvs)]) == 0)
def test_laplace_couple_terms_integ(): """ Tests an GAS model with 1 AR and 1 SC term, integrated once, and that the latent variable list length is correct, and that the estimated latent variables are not nan """ model = pf.GAS(data=data, ar=1, sc=1, integ=1, family=pf.Laplace()) x = model.fit() assert (len(model.latent_variables.z_list) == 4) lvs = np.array([i.value for i in model.latent_variables.z_list]) assert (len(lvs[np.isnan(lvs)]) == 0)
def test_poisson_couple_terms(): """ Tests an GAS model with 1 AR and 1 SC term and that the latent variable list length is correct, and that the estimated latent variables are not nan """ model = pf.GAS(data=countdata, ar=1, sc=1, family=pf.Poisson()) x = model.fit() assert (len(model.latent_variables.z_list) == 3) lvs = np.array([i.value for i in model.latent_variables.z_list]) assert (len(lvs[np.isnan(lvs)]) == 0)
def test_laplace_no_terms(): """ Tests an GAS model with no AR or SC terms, and that the latent variable list length is correct, and that the estimated latent variables are not nan """ model = pf.GAS(data=data, ar=0, sc=0, family=pf.Laplace()) x = model.fit() assert (len(model.latent_variables.z_list) == 2) lvs = np.array([i.value for i in model.latent_variables.z_list]) assert (len(lvs[np.isnan(lvs)]) == 0)
def test_laplace_predict_is_intervals_mh(): """ Tests prediction intervals are ordered correctly """ model = pf.GAS(data=data, ar=1, sc=1, family=pf.Laplace()) x = model.fit('M-H', nsims=400) predictions = model.predict_is(h=10, intervals=True) assert (np.all(predictions['99% Prediction Interval'].values > predictions['95% Prediction Interval'].values)) assert (np.all(predictions['95% Prediction Interval'].values > predictions['5% Prediction Interval'].values)) assert (np.all(predictions['5% Prediction Interval'].values > predictions['1% Prediction Interval'].values))