指數家族-Beta分布


2. Beta分布

2.1 Beta分布

我們將由幾個問題來得引出幾個分布:

問題一:
1:  [公式] 
2:把這個  [公式] 個隨機變量排序后得到順序統計量  [公式] 
3:問  [公式] 是什么分布

首先我們嘗試計算 [公式] 落在一個區間 [公式] 的概率,也就是如下概率值:

[公式] 
我們可以把 [公式] 分成三段 [公式] 。

我們考慮第一種情形:假設 [公式] 個數中只有一個落在區間 [公式] 內,則這個區間內的數 [公式] 是第 [公式] 大的,則 [公式] 中應該有 [公式] 個數, [公式] 中有 [公式] 個數,我們將此描述為事件 [公式] :

[公式]

則有:

[公式] 
[公式] 是 [公式] 的高階無窮小。顯然 [公式] 個數落在 [公式] 區間有 [公式] 種取法,余下 [公式] 個數中有 [公式] 個數落在 [公式] 中有 [公式] 種組合,所以和事件 [公式] 等價的事件一共有 [公式] 個。

考慮第二種情形:假設 [公式] 個數中只有兩個落在區間 [公式] 內:

[公式] 
則有:

[公式] 

 

從以上分析可以得到:只要落在 [公式] 內的數字超過一個,則對應的事件的概率就是 [公式] ,於是:

[公式] 
所以得到 [公式] 的概率密度函數是:

[公式] 
我們知道利用Gamma函數可以把很多數學概念從整數集合延拓到實數集合。

我們在上式中取 [公式] ,於是得到:

[公式] 
這就是Beta分布了。

我們取Beta分布的峰值是勝率最大的。

 2.2 可視化Beta分布

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

alpha_values = [1/3,2/3,1,1,2,2,4,10,20]
beta_values = [1,2/3,3,1,1,6,4,30,20]
colors =  ['blue', 'orange', 'green', 'red', 'purple', 
           'brown', 'pink', 'gray', 'olive']
x = np.linspace(0, 1, 1002)[1:-1]

fig, ax = plt.subplots(figsize=(14,9))

for a, b, c in zip(alpha_values, beta_values, colors):
    dist = beta(a, b)
    plt.plot(x, dist.pdf(x), c=c,label=r'$\alpha=%.1f,\ \beta=%.1f$' % (a, b))

plt.xlim(0, 1)
plt.ylim(0, 6)

plt.xlabel('$x$')
plt.ylabel(r'$p(x|\alpha,\beta)$')
plt.title('Beta Distribution')

ax.annotate('Beta(1/3,1)', xy=(0.014, 5), xytext=(0.04, 5.2),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(10,30)', xy=(0.276, 5), xytext=(0.3, 5.4),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(20,20)', xy=(0.5, 5), xytext=(0.52, 5.4),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(1,3)', xy=(0.06, 2.6), xytext=(0.07, 3.1),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(2,6)', xy=(0.256, 2.41), xytext=(0.2, 3.1),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(4,4)', xy=(0.53, 2.15), xytext=(0.45, 2.6),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(1,1)', xy=(0.8, 1), xytext=(0.7, 2),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(2,1)', xy=(0.9, 1.8), xytext=(0.75, 2.6),
            arrowprops=dict(facecolor='black', arrowstyle='-'))
ax.annotate('Beta(2/3,2/3)', xy=(0.99, 2.4), xytext=(0.86, 2.8),
            arrowprops=dict(facecolor='black', arrowstyle='-'))

plt.legend(loc=0)
plt.show()

從圖中可以看出,Beta分布可以是凹的、凸的、單調上升的、單調下降的;可以是曲線也可以是直線,而均勻分布也特殊的Beta分布。可以嘗試改下參數,看看Beta分布的各種形態。

 

2.3 Beta-Binomial共軛

問題二:
1:  [公式] ,排序后對應的順序統計量  [公式] ,我們要猜測  [公式] ;
2:  [公式] 中有  [公式] 個比  [公式] 小,  [公式] 個比  [公式] 大;
3:問  [公式] 是什么分布

由於 [公式] 在 [公式] 中是第 [公式] 大的,我們容易推得到 [公式] 在 [公式] 這 [公式] 個獨立隨機變量中是第 [公式] 大的。可以按上一節的推導,此時 [公式] 的概率密度是 [公式] 。

按貝葉斯推導的邏輯:
1):  [公式] 是我們要猜測的參數,我們推導出  [公式] 的分布是  [公式] ,稱為  [公式] 的先驗分布。
2):數據  [公式] 中有  [公式] 個比  [公式] 小,  [公式] 個比  [公式] 大,  [公式] 相當於做了  [公式] 次貝努力實驗,所以  [公式] 服從二項分布  [公式] 。
3):在給定來自數據的提供的  [公式] 知識后,  [公式] 的后驗分布為  [公式]

貝葉斯參數估計的基本過程是:

先驗分布+數據知識=后驗分布

因此可以得到:

[公式]

更一般的,對於非負實數 [公式] ,我們有如下關系:

[公式]

以上式子實際上描述的就是Beta-Binomial共軛。共軛意思是先驗和后驗都服從同一個分布形式。這種形式不變,我們能夠在先驗分布中賦予參數很明確的物理意義,這個物理意義可以延伸到后驗分布中進行解釋,同時從先驗變換到后驗的過程中從數據中補充的知識也容易有物理解釋。(我感覺有共軛后計算更容易哈,因為形式都知道了,其他的就是湊參數了。還有另一個好處是:每當有新的觀測數據,就把上次的后驗概率作為先驗概率,乘以新數據的likelihood,然后就得到新的后驗概率,而不必用先驗概率乘以所有數據的likelihood得到后驗概率。)

從前面的過程中可以知道,Beta分布中的參數 [公式] 也可以理解為物理計數,這兩個參數經常被稱為偽計數(pseudo-count)。基於以上邏輯,我們可以把 [公式] 寫成下式來理解:

[公式] 
其中 [公式] 恰好的均勻分布 [公式] 。

對於上式,可以從貝葉斯角度來理解。假設有一個不均勻的硬幣拋出正面的概率是 [公式] ,拋 [公式] 次后得到正面和反面的次數分別為 [公式] 次,那按傳統概率學派的觀點, [公式] 的估計是 [公式] 。而從貝葉斯學派的角度來看,開始對硬幣的不均勻性一無所知,所以假設 [公式] ,於是有了二項分布的計數 [公式] 后,按照貝葉斯的公式計算 [公式] 的后驗分布:

[公式] 
計算得到后驗分布為正好是: [公式]

前面從二項分布推導Gamma分布的時候,使用了如下等式:
[公式] 
左邊是二項分布的概率累積,右邊是 [公式] 分布的概率累積。現在我們來證明這個等式。

我們構造如下二項分布,取隨機變量 [公式] ,一個成功的貝努力實驗就是 [公式]

 

我們可以得到:
[公式] 
此處 [公式] 是順序統計量,為第 [公式] 大的數。上述等式意思是:成功至多 [公式] 次等於第 [公式] 大的數必定失敗(即失敗至少 [公式] 次)。由於 [公式] ,於是

[公式] 

2.4 Beta分布的應用

1. 棒球擊球率

那么我們簡單說個Beta-Binomial共軛的應用。用一句話來說,beta分布可以看作一個概率的概率分布,當你不知道一個東西的具體概率是多少時,它可以給出了所有概率出現的可能性大小。

舉一個簡單的例子,熟悉棒球運動的都知道有一個指標就是棒球擊球率(batting average),就是用一個運動員擊中的球數除以擊球的總數,我們一般認為0.266是正常水平的擊球率,而如果擊球率高達0.3就被認為是非常優秀的。現在有一個棒球運動員,我們希望能夠預測他在這一賽季中的棒球擊球率是多少。傳統的頻率學派會直接計算棒球擊球率,用擊中的數除以擊球數,但是如果這個棒球運動員只打了一次,而且還命中了,那么他就擊球率就是100%了,這顯然是不合理的,因為根據棒球的歷史信息,我們知道這個擊球率應該是0.215到0.36之間才對。對於這個問題,我們可以用一個二項分布表示(一系列成功或失敗),一個最好的方法來表示這些經驗(在統計中稱為先驗信息)就是用beta分布,這表示在我們沒有看到這個運動員打球之前,我們就有了一個大概的范圍。beta分布的定義域是 [公式] 這就跟概率的范圍是一樣的。接下來我們將這些先驗信息轉換為beta分布的參數,我們知道一個擊球率應該是平均0.27左右,而他的范圍是0.21到0.35,那么根據這個信息,我們可以取 [公式] 。(這樣取值可以從Beta的均值和分布考慮)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM