Path: blob/master/deprecated/scripts/beta_binom_arviz.py
1192 views
import superimport12from scipy.stats import beta34np.random.seed(42)5theta_real = 0.356ntrials = 1007data = stats.bernoulli.rvs(p=theta_real, size=ntrials)89N = ntrials; N1 = sum(data); N0 = N-N1; # Sufficient statistics10aprior = 1; bprior = 1; # prior11apost = aprior + N1; bpost = bprior + N0 # posterior1213# Interval function14alpha = 0.0515CI1 = beta.interval(1-alpha, apost, bpost)16print('{:0.2f}--{:0.2f}'.format(CI1[0], CI1[1])) # (0.06:0.52)1718# Use the inverse CDF (percent point function)19l = beta.ppf(alpha/2, apost, bpost)20u = beta.ppf(1-alpha/2, apost, bpost)21CI2 = (l,u)22print('{:0.2f}--{:0.2f}'.format(CI2[0], CI2[1])) # (0.06:0.52)2324# Use Monte Carlo sampling25samples = beta.rvs(apost, bpost, size=10000)26samples = np.sort(samples)27CI3 = np.percentile(samples, 100*np.array([alpha/2, 1-alpha/2]))28print('{:0.2f}--{:0.2f}'.format(CI3[0], CI3[1])) # (0.06:0.51)29print(np.mean(samples))3031