示例#1
0
    def test_ar_forecast(self):
        """ using AR to extend X to be longer than Y so must train earlier """
        cfg = TSConfig()
        cfg.register_dataset(TARGET_DF, 'y', 'target')
        cfg.register_dataset(TRAIN_DF, 'x', 'predictor')
        cfg.add_AR([2], dataset='x')
        cfg.stack()

        arex = Arex(model=mm, data_config=cfg)
        arex.forecast(t_plus=2, pred_start="2019-02-26", pred_end="2019-03-05",
                      training="roll", window=2, t_known=False)
        log = arex.log

        assert to_ymd(log[0]['time']) == '2019-02-26'
        assert to_ymd(log[1]['time']) == '2019-03-05'

        info = log[0]
        assert to_ymd(info['X_train'][0]) == '2019-01-29'
        assert to_ymd(info['X_train'][1]) == '2019-02-05'
        assert to_ymd(info['y_train'][0]) == '2019-02-12'
        assert to_ymd(info['y_train'][1]) == '2019-02-19'
        assert to_ymd(info['X_pred']) == '2019-02-26'
        assert info['sizes'][0] == (2, 2)

        info = log[1]
        assert to_ymd(info['X_train'][0]) == '2019-01-29'
        assert to_ymd(info['X_train'][1]) == '2019-02-05'
        assert to_ymd(info['y_train'][0]) == '2019-02-12'
        assert to_ymd(info['y_train'][1]) == '2019-02-19'
        assert to_ymd(info['X_pred']) == '2019-03-05'
        assert info['sizes'][0] == (2, 2)
示例#2
0
    def test_t_known_expand_forecast(self):
        cfg = TSConfig()
        cfg.register_dataset(TARGET_DF, 'y', 'target')
        cfg.register_dataset(TRAIN_DF, 'x', 'predictor')
        cfg.stack()

        arex = Arex(model=mm, data_config=cfg)
        arex.forecast(t_plus=2, pred_start="2019-02-12", pred_end="2019-02-19",
                      training="expand", window=2, t_known=True)
        log = arex.log
        assert to_ymd(log[0]['time']) == '2019-02-12'
        assert to_ymd(log[1]['time']) == '2019-02-19'

        info = log[0]
        assert to_ymd(info['X_train'][0]) == '2019-01-22'
        assert to_ymd(info['X_train'][1]) == '2019-01-29'
        assert to_ymd(info['y_train'][0]) == '2019-02-05'
        assert to_ymd(info['y_train'][1]) == '2019-02-12'
        assert to_ymd(info['X_pred']) == '2019-02-12'
        assert info['sizes'][0] == (2, 1)

        info = log[1]
        assert to_ymd(info['X_train'][0]) == '2019-01-22'
        assert to_ymd(info['X_train'][1]) == '2019-02-05'
        assert to_ymd(info['y_train'][0]) == '2019-02-05'
        assert to_ymd(info['y_train'][1]) == '2019-02-19'
        assert to_ymd(info['X_pred']) == '2019-02-19'
        assert info['sizes'][0] == (3, 1)
示例#3
0
    def test_simple_nowcast(self):
        cfg = TSConfig()
        cfg.register_dataset(TARGET_DF, 'y', 'target')
        cfg.register_dataset(TRAIN_DF, 'x', 'predictor')
        cfg.stack()

        arex = Arex(model=mm, data_config=cfg)
        arex.nowcast(pred_start="2019-02-12", pred_end="2019-02-19",
                    training="roll", window=2)
        log = arex.log
        assert to_ymd(log[0]['time']) == '2019-02-12'
        assert to_ymd(log[1]['time']) == '2019-02-19'

        info = log[0]
        assert to_ymd(info['X_train'][0]) == '2019-01-29'
        assert to_ymd(info['X_train'][1]) == '2019-02-05'
        assert to_ymd(info['y_train'][0]) == '2019-01-29'
        assert to_ymd(info['y_train'][1]) == '2019-02-05'
        assert to_ymd(info['X_pred']) == '2019-02-12'
        assert info['sizes'][0] == (2, 1)
示例#4
0
    def test_window_too_big(self):
        cfg = TSConfig()
        cfg.register_dataset(TARGET_DF, 'y', 'target')
        cfg.register_dataset(TRAIN_DF, 'x', 'predictor')
        cfg.add_AR([2], dataset='x')
        cfg.stack()

        arex = Arex(model=mm, data_config=cfg)
        with pytest.raises(ValueError):
            arex.nowcast(pred_start="2019-02-19", pred_end="2019-03-05",
                        training="expand", window=8)

        arex.nowcast(pred_start="2019-02-19", pred_end="2019-03-05",
            training="expand", window=7)
        log = arex.log

        assert to_ymd(log[0]['X_train'][0]) == '2019-01-01'
示例#5
0
from nowcast.datasets import CDCLoader, gt_loader
from nowcast.models import Argo
from nowcast.utils.metrics import RMSE, Corr

# load data
cdcl = CDCLoader('./ILI_MA.csv', ili_version='unweighted')
ili = cdcl.load_state('MA')
gt = gt_loader('./GTdata_MA.csv')

# configure data with 52 ILI lag terms
dc = TSConfig()
dc.register_dataset(ili, name='ILI', type='target')
dc.register_dataset(gt, name='Trends', type='predictor')
dc.add_AR(range(1, 53), dataset='ILI', var_names=['%ILI'])
dc.stack()

# use the standard ARGO model
base_mod = Argo()
arex = Arex(model=base_mod, data_config=dc)
out = arex.nowcast(pred_start='2017-01-01',
                   pred_end='2018-04-22',
                   training='roll',
                   window=104,
                   pred_name='ARGO')

predictions = pd.merge(ili, out)
print(predictions)

print('RMSE:', RMSE(predictions['%ILI'], predictions['ARGO']))
print('Correlation:', Corr(predictions['%ILI'], predictions['ARGO']))