Chapter 2, demo 2

Bayesian Data Analysis, 3rd ed

Probability of a girl birth given placenta previa (BDA3 p. 37). Illustrate the effect of a prior. Comparison of posterior distributions with different parameter values for Beta prior distribution.

# import necessary packages

# plotting
import matplotlib.pyplot as plt

# fast array routines for numerical calculation
import numpy as np

# PreliZ is a package for exploring and eliciting probability distributions
import preliz as pz
# set preliz style
pz.style.use("preliz-doc")
# Change default credible interval kind and probability
# By default PreliZ uses highest density interval (HDI) and 0.94 probability
pz.rcParams["stats.ci_kind"] = "eti"
pz.rcParams["stats.ci_prob"] = 0.95
_, axes = plt.subplots(3,1, sharex=True, figsize=(12, 9))

ap = 0.485 * (2*10**np.arange(3))
bp = (1-0.485) * (2*10**np.arange(3))
titles = [rf'$\alpha+\beta = {2*10**i}$' for i in range(3)]

for api, bpi, title, ax in zip(ap, bp, titles, axes.ravel()):
    pz.Beta(438, 544).plot_pdf(legend="posterior with uniform prior", baseline=False, lw=4, color='black', ax=ax)
    pz.Beta(api, bpi).plot_pdf(legend="informative prior", baseline=False, lw=2, ls=":", ax=ax)
    pz.Beta(437 + api, 543 + bpi).plot_pdf(legend="posterior with informative prior", baseline=False, ls="--", ax=ax)
    ax.axvline(0.485, color='gray', label="known θ=0.485 in general population")
    ax.set_title(title)


ax.set_xlim(0.375, 0.525)
axes[0].get_legend().remove()
axes[2].get_legend().remove()

Authors: - Aki Vehtari - Tuomas Sivula - Osvaldo A. Martin