예제 #1
0
def test_predict_is_nans():
    """
    Tests that the in-sample predictions are not nans
    """
    model = pf.ARIMA(data=data, ar=2, ma=2, family=pf.Skewt())
    x = model.fit()
    assert(len(model.predict_is(h=5).values[np.isnan(model.predict_is(h=5).values)]) == 0)
def test_skewt_predict_is_length():
    """
	Tests that the prediction IS dataframe length is equal to the number of steps h
	"""
    model = pf.GASLLEV(data=data, family=pf.Skewt())
    x = model.fit()
    assert (model.predict_is(h=5).shape[0] == 5)
예제 #3
0
def test2_bbvi_mini_batch_elbo():
    """
    Tests that the ELBO increases
    """
    model = pf.GASX(formula="y ~ x1 + x2", data=data, ar=1, sc=1, family=pf.Skewt())
    x = model.fit('BBVI',iterations=500, mini_batch=32, record_elbo=True, map_start=False)
    assert(x.elbo_records[-1]>x.elbo_records[0])
예제 #4
0
def test_bbvi_elbo():
    """
    Tests that the ELBO increases
    """
    model = pf.ARIMA(data=data, ar=1, ma=1, family=pf.Skewt())
    x = model.fit('BBVI',iterations=400, record_elbo=True)
    assert(x.elbo_records[-1]>x.elbo_records[0])
def test_skewt_bbvi_mini_batch_elbo():
    """
    Tests that the ELBO increases
    """
    model = pf.GASLLEV(data=data, family=pf.Skewt())
    x = model.fit('BBVI', iterations=100, mini_batch=32, record_elbo=True)
    assert (x.elbo_records[-1] > x.elbo_records[0])
예제 #6
0
def test_predict_length():
    """
    Tests that the prediction dataframe length is equal to the number of steps h
    """
    model = pf.ARIMA(data=data, ar=2, ma=2, family=pf.Skewt())
    x = model.fit()
    assert(model.predict(h=5).shape[0] == 5)
예제 #7
0
def test_skewt_ppc():
    """
    Tests PPC value
    """
    model = pf.GAS(data=data, ar=1, sc=1, family=pf.Skewt())
    x = model.fit('BBVI', iterations=100)
    p_value = model.ppc()
    assert (0.0 <= p_value <= 1.0)
예제 #8
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.Skewt())
    x = model.fit()
    x.summary()
    assert (model.predict(h=5).shape[0] == 5)
예제 #9
0
def test2_ppc():
    """
    Tests PPC value
    """
    model = pf.GASX(formula="y ~ x1 + x2", data=data, ar=1, sc=1, family=pf.Skewt())
    x = model.fit('BBVI', iterations=100)
    p_value = model.ppc()
    assert(0.0 <= p_value <= 1.0)
예제 #10
0
def test_ppc():
    """
    Tests PPC value
    """
    model = pf.ARIMA(data=data, ar=2, ma=2, family=pf.Skewt())
    x = model.fit('BBVI', iterations=100)
    p_value = model.ppc(nsims=40)
    assert(0.0 <= p_value <= 1.0)
def test_skewt_predict_length():
    """
	Tests that the length of the predict dataframe is equal to no of steps h
	"""
    model = pf.GASReg(formula="y ~ x1", data=data, family=pf.Skewt())
    x = model.fit()
    x.summary()
    assert (model.predict(h=5, oos_data=data_oos).shape[0] == 5)
예제 #12
0
def test_sample_model():
    """
    Tests sampling function
    """
    model = pf.ARIMA(data=data, ar=2, ma=2, family=pf.Skewt())
    x = model.fit('BBVI', iterations=100)
    sample = model.sample(nsims=40)
    assert(sample.shape[0]==40)
    assert(sample.shape[1]==len(data)-2)
예제 #13
0
def test_skewt_sample_model():
    """
    Tests sampling function
    """
    model = pf.GAS(data=data, ar=1, sc=1, family=pf.Skewt())
    x = model.fit('BBVI', iterations=100)
    sample = model.sample(nsims=100)
    assert (sample.shape[0] == 100)
    assert (sample.shape[1] == len(data) - 1)
예제 #14
0
def test_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.ARIMA(data=data, ar=2, ma=2, family=pf.Skewt())
    x = model.fit()
    predictions = model.predict_is(h=10, intervals=False)
    assert(not np.all(predictions.values==predictions.values[0]))
예제 #15
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.Skewt())
    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_skewt_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.GASLLEV(data=data, family=pf.Skewt())
    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)
예제 #17
0
def test_mh():
    """
    Tests an GASX model estimated with Metropolis-Hastings, and tests that the latent variable
    vector length is correct, and that value are not nan
    """
    model = pf.GASX(formula="y ~ x1", data=data, ar=1, sc=1, family=pf.Skewt())
    x = model.fit('M-H',nsims=300)
    assert(len(model.latent_variables.z_list) == 7)
    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 GASReg model estimated with BBVI, and tests that the latent variable
	vector length is correct, and that value are not nan
	"""
    model = pf.GASReg(formula="y ~ x1", data=data, family=pf.Skewt())
    x = model.fit('BBVI', iterations=100)
    assert (len(model.latent_variables.z_list) == 5)
    lvs = np.array([i.value for i in model.latent_variables.z_list])
    assert (len(lvs[np.isnan(lvs)]) == 0)
def test_skewt_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.GASLLEV(data=data, family=pf.Skewt())
    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_skewt_basic():
    """
	Tests the length of the latent variable vector for an GASReg model
	with no AR or MA terms, and tests that the values are not nan
	"""
    model = pf.GASReg(formula="y ~ x1", data=data, family=pf.Skewt())
    x = model.fit()
    assert (len(model.latent_variables.z_list) == 5)
    lvs = np.array([i.value for i in model.latent_variables.z_list])
    assert (len(lvs[np.isnan(lvs)]) == 0)
def test_skewt_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.GASLLEV(data=data, family=pf.Skewt())
    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)
예제 #22
0
def test2_pml():
    """
    Tests an GASX model estimated with PML, with multiple predictors, and 
    tests that the latent variable vector length is correct, and that value are not nan
    """
    model = pf.GASX(formula="y ~ x1 + x2", data=data, ar=1, sc=1, family=pf.Skewt())
    x = model.fit('PML')
    assert(len(model.latent_variables.z_list) == 7)
    lvs = np.array([i.value for i in model.latent_variables.z_list])
    assert(len(lvs[np.isnan(lvs)]) == 0)
def test_skewt_predict_nans():
    """
	Tests that the predictions are not nans
	model = pf.GASLLEV(data=data, family=pf.Skewt())
	"""
    model = pf.GASLLEV(data=data, family=pf.Skewt())
    x = model.fit()
    x.summary()
    assert (len(
        model.predict(h=5).values[np.isnan(model.predict(h=5).values)]) == 0)
def test_skewt_couple_terms_integ():
    """
	Tests latent variable list length is correct, and that the estimated
	latent variables are not nan
	"""
    model = pf.GASLLEV(data=data, integ=1, family=pf.Skewt())
    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)
예제 #25
0
def test_bbvi_mini_batch():
    """
    Tests an GASX 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.GASX(formula="y ~ x1", data=data, ar=1, sc=1, family=pf.Skewt())
    x = model.fit('BBVI',iterations=500, mini_batch=32)
    assert(len(model.latent_variables.z_list) == 7)
    lvs = np.array([i.value for i in model.latent_variables.z_list])
    assert(len(lvs[np.isnan(lvs)]) == 0)
예제 #26
0
def test_laplace():
    """
    Tests an ARIMA 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.ARIMA(data=data, ar=1, ma=1, family=pf.Skewt())
    x = model.fit('Laplace')
    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)
예제 #27
0
def test2_predict_is_length():
    """
    Tests that the length of the predict IS dataframe is equal to no of steps h
    """
    model = pf.ARIMAX(formula="y ~ x1 + x2",
                      data=data,
                      ar=2,
                      ma=2,
                      family=pf.Skewt())
    x = model.fit()
    assert (model.predict_is(h=5).shape[0] == 5)
예제 #28
0
def test_bbvi_mini_batch_elbo():
    """
    Tests that the ELBO increases
    """
    model = pf.ARIMAX(formula="y ~ x1",
                      data=data,
                      ar=1,
                      ma=1,
                      family=pf.Skewt())
    x = model.fit('BBVI', iterations=200, mini_batch=32, record_elbo=True)
    assert (x.elbo_records[-1] > x.elbo_records[0])
예제 #29
0
def test_no_terms():
    """
    Tests an ARIMA model with no AR or MA terms, and that
    the latent variable list length is correct, and that the estimated
    latent variables are not nan
    """
    model = pf.ARIMA(data=data, ar=0, ma=0, family=pf.Skewt())
    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)
예제 #30
0
def test_couple_terms_integ():
    """
    Tests an ARIMA model with 1 AR and 1 MA term, integrated once, and that
    the latent variable list length is correct, and that the estimated
    latent variables are not nan
    """
    model = pf.ARIMA(data=data, ar=1, ma=1, integ=1, family=pf.Skewt())
    x = model.fit()
    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)