{
 "cells": [
  {"cell_type":"markdown","metadata":{},"source":["# Confidence, testing, and Bayesian updating\n","Compare repeated-sampling coverage with posterior probability."]},
  {"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["import numpy as np\n","import matplotlib.pyplot as plt\n","rng = np.random.default_rng(2026)\n","p, n, runs = .55, 100, 5000\n","phat = rng.binomial(n,p,size=runs)/n\n","se = np.sqrt(phat*(1-phat)/n)\n","covered = (phat-1.96*se <= p) & (p <= phat+1.96*se)\n","print('empirical 95% coverage:', covered.mean())"]},
  {"cell_type":"markdown","metadata":{},"source":["## Beta-binomial update\n","Treat alpha and beta as adjustable prior pseudocounts."]},
  {"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["alpha, beta = 2, 2\n","successes, failures = 8, 2\n","post_a, post_b = alpha+successes, beta+failures\n","draws = rng.beta(post_a, post_b, 200000)\n","print('posterior mean:', draws.mean())\n","print('95% credible interval:', np.quantile(draws,[.025,.975]))\n","x = np.linspace(0,1,400)\n","plt.hist(draws,bins=70,density=True,color='#6750a4',alpha=.65); plt.xlabel('p'); plt.show()"]},
  {"cell_type":"markdown","metadata":{},"source":["**Challenge.** Repeat with Beta$(1,1)$ and Beta$(20,20)$ priors. At what sample size do the posterior conclusions become practically indistinguishable?"]}
 ],
 "metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3"}},
 "nbformat":4,"nbformat_minor":5
}
