preds = \ model.sample_predictions( given_data, inputs=given_inputs, Tpred=T_predict, inputs_pred=inputs[T_given:T_given + T_predict]) # Plot the predictions plt.figure() plt.plot(np.arange(T), data, 'b-', label="true") plt.plot(T_given + np.arange(T_predict), preds, 'r--', label="prediction") ylim = plt.ylim() plt.plot([T_given, T_given], ylim, '-k') plt.xlabel('time index') plt.xlim(max(0, T_given - 200), T) plt.ylabel('prediction') plt.ylim(ylim) plt.legend() # Smooth the data ys = model.smooth(data, inputs) plt.figure() plt.plot(data, 'b-', label="true") plt.plot(ys, 'r-', lw=2, label="smoothed") plt.xlabel("Time") plt.xlim(max(0, T_given - 200), T) plt.ylabel("Smoothed Data") plt.legend() plt.show()
lls = [update(test_model) for _ in progprint_xrange(N_samples)] # Plot the log likelihoods plt.figure(figsize=(5, 3)) plt.plot([0, N_samples], true_model.log_likelihood() * np.ones(2), '--k', label="true") plt.plot(np.arange(N_samples), lls, color=colors[0], label="test") plt.xlabel('iteration') plt.ylabel('training likelihood') plt.legend(loc="lower right") plt.tight_layout() plt.savefig("aux/demo_ll.png") # Smooth the data smoothed_data = test_model.smooth(data, inputs) plt.figure(figsize=(5, 3)) plt.plot(data, color=colors[0], lw=2, label="observed") plt.plot(smoothed_data, color=colors[1], lw=1, label="smoothed") plt.xlabel("Time") plt.xlim(0, min(T, 500)) plt.ylabel("Smoothed Data") plt.ylim(1.2 * np.array(plt.ylim())) plt.legend(loc="upper center", ncol=2) plt.tight_layout() plt.savefig("aux/demo_smooth.png") plt.show()