Path: blob/master/deprecated/scripts/beta_binom_post_pred_plot.py
1192 views
1# Plots the posterior and plugin predictives for the Beta-Binomial distribution.234import superimport56import numpy as np7import matplotlib.pyplot as plt8import pyprobml_utils as pml910from scipy.special import comb, beta11from scipy.stats import binom121314N = 10 # Future sample size M15# Hyperparameters16a = 117b = 118N1 = 419N0 = 12021ind = np.arange(N+1)22post_a = a + N123post_b = b + N02425# Compound beta-binomial distribution26distribution = []27for k in range(N+1):28distribution.append(comb(N,k) * beta(k+post_a, N-k+post_b) / beta(post_a, post_b))2930fig,ax = plt.subplots()31rects = ax.bar(ind, distribution, align='center')32ax.set_title('posterior predictive')33ax.set_xticks(list(range(N+1)))34ax.set_xticklabels(list(range(N+1)))35pml.savefig('BBpostpred.pdf')36plt.show()3738# Plugin binomial distribution39mu = (post_a - 1) / float(post_a + post_b - 2) # MAP estimate40distribution = []41rv = binom(N, mu)42for k in range(N+1):43distribution.append(rv.pmf(k))4445fig,ax = plt.subplots()46rects = ax.bar(ind, distribution, align='center')47ax.set_title('plugin predictive')48ax.set_xticks(list(range(N+1)))49ax.set_xticklabels(list(range(N+1)))50pml.savefig('BBpluginpred.pdf')51plt.show()5253545556