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)
# 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]])
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()