Exemple #1
0
def pmd_exog_compare(f, k=1):
    from timemachines.skaters.evaluation import evaluate_mean_absolute_error
    from timemachines.data.real import hospital_with_exog
    y, a = hospital_with_exog(k=k)
    y0 = [yi[0] for yi in y]

    r = 0.1  # Doesn't matter?
    err1 = evaluate_mean_absolute_error(f=f, k=k, y=y0, r=r, n_burn=250)
    err2 = evaluate_mean_absolute_error(f=f, k=k, y=y, r=r, n_burn=250)
    err3 = evaluate_mean_absolute_error(f=f, k=k, y=y, r=r, a=a, n_burn=250)
    errlv = evaluate_mean_absolute_error(f=last_value,
                                         k=k,
                                         y=y,
                                         r=r,
                                         a=a,
                                         n_burn=250)

    print('----------------')
    print("Error w/o exogenous   = " + str(err1))
    print("Error w   exogenous   = " + str(err2))
    print("Error w   exo + known = " + str(err3))
    print("Error last val cache  = " + str(errlv))
Exemple #2
0
        # Assert immutability of k, dimensions
        if s['y']:
            assert len(y) == len(s['y'][0])
            assert k == s['k']
        if s['a']:
            assert len(a) == len(s['a'][0])

    if y is None:
        return None, s, None
    else:
        s['y'].append(y)
        if a is not None:
            s['a'].append(a)
        if len(s['y']) > max(2*k+5,PROPHET_META['n_warm']):
            x, x_std, _, _ = prophet_iskater_factory(y=s['y'], k=k, a=s['a'], freq=freq, n_max=n_max)
        else:
            x = [y[0]] * k
            x_std = [1.0] * k
        return x, x_std, s


if __name__ == '__main__':
    from timemachines.data.real import hospital_with_exog
    from timemachines.skaters.evaluation import evaluate_mean_absolute_error

    k = 3
    y, a = hospital_with_exog(k=k, n=100, offset=True)
    f = fbprophet_skater_factory
    err2 = evaluate_mean_absolute_error(f=f, k=k, y=y, a=a, n_burn=50)
    print(err2)
Exemple #3
0
def slowly_moving_average(y: Y_TYPE,
                          s,
                          k: int,
                          a: A_TYPE = None,
                          t: T_TYPE = None,
                          e: E_TYPE = None):
    return moving_average_r1(y=y, s=s, k=k, a=a, t=t, e=e, r=0.95)


def quickly_moving_average(y: Y_TYPE,
                           s,
                           k: int,
                           a: A_TYPE = None,
                           t: T_TYPE = None,
                           e: E_TYPE = None):
    return moving_average_r1(y=y, s=s, k=k, a=a, t=t, e=e, r=0.75)


BASIC_SKATERS = [last_value, slowly_moving_average, quickly_moving_average]
BASIC_R1_SKATERS = [moving_average_r1]

if __name__ == '__main__':
    from timemachines.data.real import hospital_with_exog
    from timemachines.skaters.evaluation import evaluate_mean_absolute_error

    k = 3
    y, a = hospital_with_exog(k=k)
    f = moving_average_r1
    err1 = evaluate_mean_absolute_error(f=f, k=k, y=y, a=a, r=0.9, n_burn=50)