Beispiel #1
0
                            E2,
                            models,
                            order,
                            prior_model_prob,
                            m0=m0,
                            C0=C0,
                            n0=n0,
                            s0=d0 / n0,
                            approx_steps=1)

    return multi


if __name__ == '__main__':

    y = datasets.table_22()
    x = [[1]]
    m0, C0 = (0, 1)
    n0, s0 = (1, 0.01)
    discounts = np.arange(0.7, 1.01, 0.1)

    models = {}
    for delta in discounts:
        models['%.2f' % delta] = DLM(y,
                                     x,
                                     m0=m0,
                                     C0=C0,
                                     n0=n0,
                                     s0=s0,
                                     state_discount=delta)
Beispiel #2
0
    # priors
    m0 = np.array([600., 10.])
    C0 = np.diag([10000., 25.])
    n0, d0 = 10., 1440.

    multi = MultiProcessDLM(cp6, E2, models, order,
                            prior_model_prob,
                            m0=m0, C0=C0, n0=n0, s0=d0 / n0,
                            approx_steps=1)

    return multi

if __name__ == '__main__':

    y = datasets.table_22()
    x = [[1]]
    m0, C0 = (0, 1)
    n0, s0 = (1, 0.01)
    discounts = np.arange(0.7, 1.01, 0.1)

    models = {}
    for delta in discounts:
        models['%.2f' % delta] = DLM(y, x, m0=m0, C0=C0, n0=n0, s0=s0,
                                     state_discount=delta)

    # G = tools.jordan_form(2)
    # cp6 = datasets.table_111()
    # x = [1, 0]
    # m0, C0 = ([0, 0.45], [[0.005, 0],
    #                       [0, 0.0025]])
Beispiel #3
0
def ex_21():
    y = datasets.table_22()
    x = [1]

    m0, C0 = (0, 1)
    n0, s0 = (1, 0.01)

    discount_factors = np.arange(0.6, 1.01, 0.05)

    fig = plt.figure(figsize=(12, 12))

    ax1 = fig.add_subplot(311)
    ax2 = fig.add_subplot(312)
    ax3 = fig.add_subplot(313)

    rng = y.index

    ax1.plot(rng, np.asarray(y), 'b')

    rmse = []
    mad = []
    like = []

    y_pred = []
    V = []
    mu = []

    for disc in discount_factors:
        model = dlm.DLM(y, x, m0=m0, C0=C0, n0=n0, s0=s0,
                        state_discount=disc)

        ax1.plot(rng, model.forecast, '%.2f' % (1 - disc))

        rmse.append(model.rmse)
        mad.append(model.mad)
        like.append(model.pred_like)

        # level and error bars for y_116, mu_115, V

        # mu_115
        level, lower, upper = model.mu_ci(prior=False)
        mu.append((level[-1], lower[-1], upper[-1]))

        # var_est final
        phi_a = model.df[-1] / 2.
        phi_b = model.var_est[-1] * phi_a
        sampler = lambda sz: 1 / np.random.gamma(phi_a, scale=1./phi_b, size=sz)
        lower, upper = boot_ci(sampler)
        V.append((model.var_est[-1], lower, upper))

        # y_116
        dist = stats.t(model.df[-1], loc=model.mu_mode[-1, 0],
                       scale=model.mu_scale[-1, 0] / disc + model.var_est[-1])
        lower, upper = boot_ci(dist.rvs)
        y_pred.append((model.mu_mode[-1], lower, upper))

    like = np.array(like).prod(axis=1)
    llr = np.log(like / like[-1])

    ax2.plot(discount_factors, rmse, label='RMSE')
    ax2.plot(discount_factors, mad, label='MAD')
    ax3.plot(discount_factors, llr, label='LLR')

    ax2.legend()
    ax3.legend()

    fig = plt.figure(figsize=(12, 12))

    ax1 = fig.add_subplot(311)
    level, lower, upper = zip(*mu)
    ax1.plot(discount_factors, level, 'k', label=r'$\mu_{115}$')
    ax1.plot(discount_factors, lower, 'k--')
    ax1.plot(discount_factors, upper, 'k--')

    ax1.legend()

    ax2 = fig.add_subplot(312)
    level, lower, upper = zip(*V)
    ax2.plot(discount_factors, level, 'k', label=r'$V$')
    ax2.plot(discount_factors, lower, 'k--')
    ax2.plot(discount_factors, upper, 'k--')

    ax2.legend()

    ax3 = fig.add_subplot(313)
    level, lower, upper = zip(*y_pred)

    ax3.plot(discount_factors, level, 'k', label=r'$y_{116}$')
    ax3.plot(discount_factors, lower, 'k--')
    ax3.plot(discount_factors, upper, 'k--')
    ax3.legend()