def test_predict_is_nans(): """ Tests that the in-sample predictions are not nans """ model = ARIMA(data=data, ar=2, ma=2, family=t()) x = model.fit() assert (len( model.predict_is(h=5).values[np.isnan( model.predict_is(h=5).values)]) == 0)
def test_predict_is_length(): """ Tests that the prediction IS dataframe length is equal to the number of steps h """ model = ARIMA(data=data, ar=2, ma=2, family=t()) x = model.fit() assert (model.predict_is(h=5).shape[0] == 5)
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 = ARIMA(data=data, ar=2, ma=2, family=t()) x = model.fit() predictions = model.predict_is(h=10, intervals=False) assert (not np.all(predictions.values == predictions.values[0]))
def test_predict_is_intervals_mh(): """ Tests prediction intervals are ordered correctly """ model = ARIMA(data=data, ar=2, ma=2, family=Cauchy()) x = model.fit('M-H', nsims=200, quiet_progress=True) 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))
def a_test_predict_is_intervals_mh(): """ Tests prediction intervals are ordered correctly """ model = ARIMA(data=data, ar=2, ma=2, family=Exponential()) 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))
def a_test_predict_is_intervals_bbvi(): """ Tests prediction intervals are ordered correctly """ model = ARIMA(data=data, ar=1, ma=0, family=Exponential()) x = model.fit('BBVI', iterations=200) 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))
def test_predict_is_intervals_bbvi(): """ Tests prediction intervals are ordered correctly """ model = ARIMA(data=data, ar=2, ma=2, family=Poisson()) x = model.fit('BBVI', iterations=100, quiet_progress=True) 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))
def test_predict_is_intervals(): """ Tests prediction intervals are ordered correctly """ model = ARIMA(data=data, ar=2, ma=2, family=t()) x = model.fit() 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[ model.data_name].values)) assert (np.all(predictions[model.data_name].values > predictions['5% Prediction Interval'].values)) assert (np.all(predictions['5% Prediction Interval'].values > predictions['1% Prediction Interval'].values))