Пример #1
0
def pmd_exog_compare(f, k=1):
    from timemachines.skatertools.evaluation.evaluators import evaluate_mean_absolute_error
    from timemachines.skatertools.evaluation.evaluators 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=empirical_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))


if __name__ == '__main__':
    f = pmd_exogenous
    if True:
        prior_plot_exogenous(f=f, k=1, n=200)
    if True:
        prior_plot(f=f, k=1, n=200)
Пример #2
0
        param_names = ['changepoint_prior_scale', 'seasonality_prior_scale']
        return fbprophet_hyperparam_skater_factory(y=y0,
                                                   s=s,
                                                   k=k,
                                                   a=None,
                                                   t=t,
                                                   e=e,
                                                   r=r,
                                                   param_names=param_names,
                                                   recursive=False)

    PROPHET_R2_SKATERS = [
        fbprophet_exogenous_r2, fbprophet_known_r2, fbprophet_univariate_r2,
        fbprophet_recursive_r2
    ]
else:
    PROPHET_SKATERS_SINGULAR = []
    PROPHET_R2_SKATERS = []

if __name__ == '__main__':
    from timemachines.skatertools.data import hospital_with_exog
    from timemachines.skatertools.visualization.priorplot import prior_plot
    import matplotlib.pyplot as plt
    k = 1
    y, a = hospital_with_exog(k=k, n=450, offset=True)
    f = fbprophet_exogenous
    err2 = prior_plot(f=f, k=k, y=y, n=450, n_plot=50)
    print(err2)
    plt.show()
    pass
Пример #3
0
    if not s:
        s = dict(y=[])

    if y0 is None:
        return None, None, s  # Ignore suggestion to fit offline

    # Update buffer
    s['y'].append(y0)
    if len(s['y']) > max_buffer_len + 1000:
        s['y'] = s['y'][-max_buffer_len:]

    # Fit and predict, if warm, or just last value
    if len(s['y']) < max(n_warm, MIN_N_WARM):
        return [y0] * k, [abs(y0)] * k, s
    else:
        with no_stdout_stderr():
            kwargs = deepcopy(DIVINE_MODEL)
            if model_params:
                kwargs.update(**model_params)
            model = dv.divinity(forecast_length=k, **kwargs)
            model.fit(np.array(s['y']))
        x = list(model.predict())
        x_std = [1.0] * k  # TODO: fixme
        return x, x_std, s


if __name__ == '__main__':
    err = prior_plot(f=divinity_univariate_factory, k=5, n=500)
    pass