Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
probml
GitHub Repository: probml/pyprobml
Path: blob/master/deprecated/scripts/beta_credible_int_demo.py
1192 views
1
# Compute 95% CI for a beta distribution
2
import superimport
3
4
from scipy.stats import beta
5
import numpy as np
6
np.random.seed(42)
7
8
N1 = 2; N0 = 8; N = N0 + N1 # Sufficient statistics
9
aprior = 1; bprior = 1; # prior
10
apost = aprior + N1; bpost = bprior + N0 # posterior
11
12
alpha = 0.05
13
CI1 = beta.interval(1-alpha, apost, bpost)
14
print('{:0.2f}--{:0.2f}'.format(CI1[0], CI1[1])) # (0.06:0.52)
15
16
l = beta.ppf(alpha/2, apost, bpost)
17
u = beta.ppf(1-alpha/2, apost, bpost)
18
CI2 = (l,u)
19
print('{:0.2f}--{:0.2f}'.format(CI2[0], CI2[1])) # (0.06:0.52)
20
21
samples = beta.rvs(apost, bpost, size=1000)
22
samples = np.sort(samples)
23
CI3 = np.percentile(samples, 100*np.array([alpha/2, 1-alpha/2]))
24
print('{:0.2f}--{:0.2f}'.format(CI3[0], CI3[1])) # (0.06:0.51)
25
26