This project was made by Wu Bocheng to briefly display some of his homework of the core courses.
Examples: https://zhuanlan.zhihu.com/p/484275023
##1. 投硬币
考虑掷硬币试验。分别使用参数为(a,b)=(1,1)和(a,b)=(10,5)的贝塔分布作为先验,用程序分别画出出现下列正面向上的计数结果时,硬币向上的概率参数的后验分布:
- 投掷 0 次,0 次正面向上
- 投掷 1 次,1 次正面向上
- 投掷 2 次,2 次正面向上
- 投掷 3 次,2 次正面向上
- 投掷 8 次,4 次正面向上
- 投掷 15 次,6 次正面向上
- 投掷 50 次,24 次正面向上
- 投掷 500 次,263 次正面向上
抛硬币场景,$\theta$为硬币正面向上的概率,x 是 n 次实验观测到正面向上的次数
由于原问题为多次抛硬币,分布为二项分布
由于题目假设参数$\theta$的先验分布为 Beta 分布:
所以:
所以后验分布:
import numpy as np
# https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.beta.html
from scipy.stats import beta
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ["SimHei"] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
def draw_beta_plot(ax, a, b, n, x, style='r-'): # 其中a,b为先验分布的参数,n为总投掷次数,x为正面向上次数
result_a = a+x
result_b = b+n-x
x_line = np.linspace(beta.ppf(0.001, result_a, result_b),
beta.ppf(0.999, result_a, result_b), 1000)
ax.plot(x_line, beta.pdf(x_line, result_a, result_b),
lw=2, label="投掷{n}次,其中{x}次向上".format(n=n, x=x))
ax.legend(loc='best', frameon=False)
plt.xlim(0,1)
# 先验为(a,b)=(1,1)和(a,b)=(10,5)
# 定义一组alpha 跟 beta值
n_list = [0,1,2,3,8,15,50,500]
x_list = [0,1,2,2,4,6,24,263]
plt.figure(figsize=(18, 8))
ax = plt.subplot(1,2,1)
ax.set_title("硬币正面向上概率的先验分布为Beta(1,1)", fontsize=15)
for n,x in zip(n_list,x_list):
draw_beta_plot(ax,a=1,b=1,n=n,x=x)
ax = plt.subplot(1,2,2)
ax.set_title("硬币正面向上概率的先验分布为Beta(10,5)", fontsize=15)
for n,x in zip(n_list,x_list):
draw_beta_plot(ax,a=10,b=5,n=n,x=x)
plt.savefig("抛硬币.png",dpi=300)
似然函数是多项分布,其中$\theta_i$表示第 i 类出现的概率,$n_i$表示第 i 类出现的数量。通过伽马函数$\Gamma(x)=\int_{0}^{\infty} t^{x-1} e^{-t} dt$对阶乘进行近似,有$\Gamma(x+1) = x!$:
其中,$\sum_{i=1}^k \theta_i = 1$.
假设概率$\theta = (\theta_1,\theta_2,...,\theta_k)$的先验分布为参数是$\alpha=(\alpha_1,\alpha_2,...,\alpha_k)$的狄利克雷分布$Dir(\alpha)$:
则可以算出归一化因子:
所以$\theta$的后验分布:
似然函数是泊松分布,n 表示事件发生的次数,$\lambda$表示单位时间内随机事件的平均发生次数,通过伽马函数$\Gamma(x)=\int_{0}^{\infty} t^{x-1} e^{-t} dt$对阶乘进行近似,有$\Gamma(x+1) = x!$:
假设$\lambda$服从参数为(a,b)的伽马分布 Ga(a,b):
则可以算出归一化因子:
$$ \begin{aligned}
P(x) &= \int P(x \mid \lambda) P(\lambda) d\lambda\ &=\int_0^1 \frac{\lambda^n}{\Gamma(n+1)}e^{-\lambda}\frac{\lambda^{a-1}e^{-b \lambda} b^a}{\Gamma(a)} d\lambda\ &=\frac{b^a}{\Gamma(n+1)\Gamma(a)} \frac{\Gamma(n+a)}{(b+1)^{n+a}}\int_0^1 \lambda^{n+a-1} e^{-(b+1)\lambda} \frac{(b+1)^{n+a}}{\Gamma(n+a)} d\lambda\ &= \frac{b^a}{\Gamma(n+1)\Gamma(a)} \frac{\Gamma(n+a)}{(b+1)^{n+a}} \int_0^1 Ga(n+a,b+1) d\lambda\ &= \frac{b^a}{\Gamma(n+1)\Gamma(a)} \frac{\Gamma(n+a)}{(b+1)^{n+a}} \end{aligned} $$
所以$\lambda$的后验分布:
$$ \begin{aligned}
P(\lambda \mid x) &= \frac{P(x \mid \lambda)P(\lambda)}{P(x)}\ &=\frac{\frac{\lambda^n}{\Gamma(n+1)}e^{-\lambda}\frac{\lambda^{a-1}e^{-b \lambda} b^a}{\Gamma(a)}}{\frac{b^a}{\Gamma(n+1)\Gamma(a)} \frac{\Gamma(n+a)}{(b+1)^{n+a}}}\ &=\frac{(b+1)^{n+a}}{\Gamma(n+a)}\lambda^{n+a-1} e^{-(b+1)\lambda}\ &=Ga(n+a,b+1) \end{aligned} $$
似然函数是指数分布,n 表示事件发生的次数,$\lambda$表示单位时间内随机事件的平均发生次数:
假设$\lambda$服从参数为(a,b)的伽马分布 Ga(a,b):
则可以算出归一化因子:
$$ \begin{aligned}
P(x) &= \int P(x \mid \lambda) P(\lambda) d\lambda\ &=\int_0^1 \lambda e^{-\lambda x}\frac{\lambda^{a-1}e^{-b \lambda} b^a}{\Gamma(a)} d\lambda\ &=\frac{b^a}{\Gamma(a)}\frac{\Gamma(a+1)}{(b+1)^{a+1}} \int_0^1 \lambda^{a} e^{-(b+1)\lambda} \frac{(b+1)^{a+1}}{\Gamma(a+1)} d\lambda\ &= \frac{b^a}{\Gamma(a)}\frac{\Gamma(a+1)}{(b+1)^{a+1}} \int_0^1 Ga(a+1,b+1) d\lambda\ &= \frac{b^a}{\Gamma(a)}\frac{\Gamma(a+1)}{(b+1)^{a+1}} \end{aligned} $$
所以$\lambda$的后验分布:
$$ \begin{aligned}
P(\lambda \mid x) &= \frac{P(x \mid \lambda)P(\lambda)}{P(x)}\ &=\frac{\lambda e^{-\lambda x}\frac{\lambda^{a-1}e^{-b \lambda} b^a}{\Gamma(a)}}{\frac{b^a}{\Gamma(a)}\frac{\Gamma(a+1)}{(b+1)^{a+1}}}\ &=\frac{(b+1)^{a+1}}{\Gamma(a+1)}\lambda^{a} e^{-(b+1)\lambda}\ &=Ga(a+1,b+1) \end{aligned} $$
似然函数是方差已知的正态分布分布,
假设参数$\mu$服从参数为$(a,b^2)$的正态分布$\mu\sim N(a,b^2)$:
则可以算出归一化因子:
$$ \begin{aligned}
P(x) &= \int P(x \mid \mu) P(\mu) d\mu\
&=\int_{-\infty}^{\infty} \frac{1}{\sigma \sqrt{2 \pi}} e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^{2}}\frac{1}{b \sqrt{2 \pi}} e^{-\frac{1}{2}\left(\frac{\mu-a}{b}\right)^{2}} d\mu\
&=\frac{1}{2 \sigma b \pi}\int_{-\infty}^{\infty} e^{-\frac{1}{2}\frac{(x-\mu)^2b^2+(\mu-a)^2\sigma^2}{\sigma^2 b^2}} d\mu\ &=\frac{1}{2 \sigma b \pi}\int_{-\infty}^{\infty}exp\left(-\frac{1}{2}\left(\frac{\left(\mu-\frac{xb^2+a\sigma^2}{\sigma^2+b^2}\right)^2}{\frac{\sigma^2b^2}{\sigma^2+b^2}}+\frac{(x-a)^2}{\sigma^2+b^2}\right)\right)d\mu\ &=\frac{e^{-\frac{1}{2}\frac{(x-a)^2}{\sigma^2+b^2}}}{2 \sigma b \pi}\frac{\sigma b}{\sqrt{\sigma^2+b^2}}\sqrt{2 \pi}\int_{-\infty}^{\infty}\frac{1}{\frac{\sigma b}{\sqrt{\sigma^2+b^2}}\sqrt{2 \pi}}exp\left(-\frac{1}{2}\left(\frac{\left(\mu-\frac{xb^2+a\sigma^2}{\sigma^2+b^2}\right)^2}{\frac{\sigma^2b^2}{\sigma^2+b^2}}\right)\right)d\mu\ &=\frac{1}{\sqrt{\sigma^2+b^2}\sqrt{2 \pi}}e^{-\frac{1}{2}\frac{(x-a)^2}{\sigma^2+b^2}}\int_{-\infty}^{\infty} \mu\sim N\left(\frac{xb^2+a\sigma^2}{\sigma^2+b^2},\frac{\sigma b}{\sqrt{\sigma^2+b^2}}\right)d\mu\ &=\frac{1}{\sqrt{\sigma^2+b^2}\sqrt{2 \pi}}e^{-\frac{1}{2}\frac{(x-a)^2}{\sigma^2+b^2}}
\end{aligned} $$
所以$\mu$的后验分布:
$$ \begin{aligned}
P(\mu \mid x) &= \frac{P(x \mid \mu)P(\mu)}{P(x)}\
&=\frac{\frac{1}{\sigma \sqrt{2 \pi}} e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^{2}}\frac{1}{b \sqrt{2 \pi}} e^{-\frac{1}{2}\left(\frac{\mu-a}{b}\right)^{2}}}{\frac{1}{\sqrt{\sigma^2+b^2}\sqrt{2 \pi}}e^{-\frac{1}{2}\frac{(x-a)^2}{\sigma^2+b^2}}}\ &=\frac{\sqrt{\sigma^2+b^2}}{\sigma b\sqrt{2 \pi}}e^{-\frac{1}{2}\left(\left(\frac{x-\mu}{\sigma}\right)^{2}+\left(\frac{\mu-a}{b}\right)^{2}-\frac{(x-a)^2}{\sigma^2+b^2}\right)}\ &=\frac{1}{\frac{\sigma b}{\sqrt{\sigma^2+b^2}}\sqrt{2 \pi}}e^{-\frac{1}{2}\frac{\left(\mu-\frac{xb^2+a\sigma^2}{\sigma^2+b^2}\right)^2}{\frac{\sigma^2b^2}{\sigma^2+b^2}}}\ &=N\left(\frac{xb^2+a\sigma^2}{\sigma^2+b^2},\frac{\sigma b}{\sqrt{\sigma^2+b^2}}\right) \end{aligned} $$
似然函数是均值已知的正态分布分布,
假设参数$\sigma^2$服从参数为$(a,b)$的逆伽马分布$\sigma^2 \sim IGa(a,b)$:
则可以算出归一化因子:
$$ \begin{aligned}
P(x) &= \int P(x\mid \sigma^2) P(\sigma^2) d\sigma^2\
&=\int_{0}^{\infty}\frac{1}{\sigma \sqrt{2 \pi}} e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^{2}} \frac{b^a}{\Gamma(a)}\left(\frac{1}{\sigma^2}\right)^{a+1} e^{-\frac{b}{\sigma^2}} d\sigma^2\ &=\frac{1}{\sqrt{2 \pi}}\frac{b^a}{\Gamma(a)}\int_{0}^{\infty}\left(\frac{1}{\sigma^2}\right)^{a+\frac{3}{2}} e^{-\frac{b}{\sigma^2}-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^{2}} d\sigma^2\ &= \frac{1}{\sqrt{2 \pi}}\frac{b^a}{\Gamma(a)}\frac{\Gamma(a+\frac{1}{2})}{\left(b+\frac{1}{2}\left(x-\mu\right)^{2}\right)^{a+\frac{1}{2}}}\int_{0}^{\infty}\frac{\left(b+\frac{1}{2}\left(x-\mu\right)^{2}\right)^{a+\frac{1}{2}}}{\Gamma(a+\frac{1}{2})}\left(\frac{1}{\sigma^2}\right)^{a+1+\frac{1}{2}} e^{-\frac{b+\frac{1}{2}\left(x-\mu\right)^{2}}{\sigma^2}} d\sigma^2\ &=\frac{1}{\sqrt{2 \pi}}\frac{b^a}{\Gamma(a)}\frac{\Gamma(a+\frac{1}{2})}{\left(b+\frac{1}{2}\left(x-\mu\right)^{2}\right)^{a+\frac{1}{2}}}\int_{0}^{\infty}\sigma^2 \sim IGa\left(a+\frac{1}{2},b+\frac{1}{2}\left(x-\mu\right)^{2}\right) d\sigma^2\ &=\frac{1}{\sqrt{2 \pi}}\frac{\Gamma(a+\frac{1}{2})}{\Gamma(a)}\frac{b^a}{\left(b+\frac{1}{2}\left(x-\mu\right)^{2}\right)^{a+\frac{1}{2}}} \end{aligned} $$
所以$\mu$的后验分布:
$$ \begin{aligned}
P(\sigma^2\mid x) &= \frac{P(x\mid \sigma^2)P(\sigma^2)}{P(x)}\
&=\frac{\frac{1}{\sigma \sqrt{2 \pi}} e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^{2}} \frac{b^a}{\Gamma(a)}\left(\frac{1}{\sigma^2}\right)^{a+1} e^{-\frac{b}{\sigma^2}}}{\frac{1}{\sqrt{2 \pi}}\frac{\Gamma(a+\frac{1}{2})}{\Gamma(a)}\frac{b^a}{\left(b+\frac{1}{2}\left(x-\mu\right)^{2}\right)^{a+\frac{1}{2}}}}\ &=\frac{\left(b+\frac{1}{2}\left(x-\mu\right)^{2}\right)^{a+\frac{1}{2}}}{\Gamma(a+\frac{1}{2})}\left(\frac{1}{\sigma^2}\right)^{a+1+\frac{1}{2}}e^{-\frac{b+\frac{1}{2}\left(x-\mu\right)^{2}}{\sigma^2}}\ &=IGa\left(a+\frac{1}{2},b+\frac{1}{2}\left(x-\mu\right)^{2}\right)
\end{aligned} $$