Beta 分布

郝鸿涛 / 2024-11-27

夫一銅錢,有正、反兩面者,其正面為上之概率,若曰 $p$,則拋之 $n$ 次,正面朝上者 $k$。其法曰:

$$ P_k = {n \choose k}p^k (1-p)^{n - k} $$

是所謂雙項分布者也,西人謂之 Binomial Distribution,吾曾言其法

今則反其道推之,既知拋 $n$ 次而正面朝上者 $k$,問此銅錢拋一次正面朝上之概率 $p$ 為何?

倘求一數,$p$ 可取 $\frac{k}{n}$,然未為必然也。且若余欲得一機率分布,非一定值,則當用貝葉斯之法 ,曰:

$$ P(p|k,n) = \frac{P(p) P(k,n|p)}{P(k,n)} \propto P(p) P(k,n|p) $$

吾於銅錢初無所知,故先驗機率 $P(p)$ 視為均勻分布,西人曰 Uniform Distribution。謂之恒常,取 1 可也。似然機率 $P(k,n|p)$,乃雙項分布是矣,曰:

$$ P(p|k,n) \propto 1 \cdot {n \choose k}p^k (1-p)^{n - k} $$

$1$${n \choose k}$ 均為恒常,棄之,可得:

$$ P(p|k,n) \propto p^k (1-p)^{n - k} $$

此即 Beta 分布之式。若令

$$ \alpha = k + 1, \, \beta = n - k + 1 $$

此設之,為使 $k=0$$k=n$ 時,分布仍得定義,且有意義耳。

則機率分布式可化作:

$$ f(p) = P(p|\alpha, \beta) \propto p^{(\alpha - 1)} (1-p)^{(\beta - 1)} $$

然欲其為真正之分布,需使其於 $[0,1]$ 區間上積分歸一,曰:

$$ \int_0^1 f(p) \, dp = 1 $$

為此,須引歸一常數 $\operatorname{Beta}(\alpha, \beta)$,令:

$$ f(p) = P(p|\alpha, \beta) = \frac{p^{(\alpha - 1)} (1-p)^{(\beta - 1)}}{\operatorname{Beta}(\alpha, \beta)} $$

$\operatorname{Beta}(\alpha, \beta)$ 者:

$$ \operatorname{Beta}(\alpha, \beta) = \int_0^1 p^{(\alpha - 1)} (1-p)^{(\beta - 1)} \, dp $$

歐拉 者,西人數學巨擘,其得精妙之法,曰:

$$ \operatorname{Beta}(\alpha, \beta) = \frac{\Gamma(\alpha) \Gamma(\beta)}{\Gamma(\alpha + \beta)} $$

$\Gamma(x)$Gamma 函數 ,為階乘之推廣。

綜上,Beta 分布之全貌得焉:

$$ f(p|\alpha ,\beta) = {\frac {\Gamma (\alpha +\beta )}{\Gamma (\alpha )\Gamma (\beta )}}\,p^{\alpha -1}(1-p)^{\beta -1} $$

或作:

$$ f(p|\alpha ,\beta) = {\frac {1}{\operatorname{Beta} (\alpha ,\beta )}}p^{\alpha -1}(1-p)^{\beta -1} $$

畫之:

Show Code

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import beta

# Create the x values
x = np.linspace(0, 1, 1000)

# Create different beta distributions
params = [
    (0.5, 0.5, 'red', r'$\alpha = \beta = 0.5$'),
    (5, 1, 'blue', r'$\alpha = 5, \beta = 1$'),
    (1, 1, 'green', r'$\alpha = 1, \beta = 1$'),
    (2, 2, 'purple', r'$\alpha = 2, \beta = 2$'),
    (2, 5, 'orange', r'$\alpha = 2, \beta = 5$')
]

# Create the plot
plt.figure(figsize=(10, 6))

# Plot each distribution
for alpha, beta_param, color, label in params:
    plt.plot(x, beta.pdf(x, alpha, beta_param), color=color, label=label)

# Customize the plot
plt.grid(True, linestyle=':', alpha=0.6)
plt.xlabel('x')
plt.ylabel('PDF')
plt.ylim(0, 2.5)
plt.legend()
plt.title('Beta Distribution PDF for Different Parameters')

# Show the plot
plt.show()

png

#统计

最后一次修改于 2024-12-07