Chapter 2 主要為作者的機率運算程式碼運作方式,這部分將簡單帶過。Chapter 3 則為如何透過 Chpater 1 的 Bayes' theorem 與 Chapter 2 的程式碼結合,示範如何對問題使用 Bayes' theorem 計算結果。

ThinkBayes Note

Chapter 2 - Computational Statistics

在 ThinkBayes Chapter 2 中,作者提供了自己撰寫的 Python 原始碼,展示如何用該程式碼進行機率與統計分析,並以 chapter 1 的 cookie 與 Monty Hall 問題(三門問題)做為範例並使用 Probability Mass Function(PMF)來計算結果。因涉及較多的 Python 程式概念這邊就不多描述,詳細可自行閱讀,此外之後的章節都會使用該 Library 來計算範例,可以先了解一下 Python 與該程式內容。

Chapter 3 - Estimation

在第三章中,作者提出一些範例,進一步說明如何使用 Bayes' theorem 將問題轉化為計算 model,並使用 python 計算結果。並舉出一些計算範例,說明以及在設定 prior 數值時如何影響最終結果。

The dice problem

以遊戲 Dungeons & Dragons 為例,先給定數個骰子,面數分別 4, 6, 8, 12 與 20。假如現在開始擲骰子得到一個結果 D 後,從 D 計算出最有可能使用哪個骰子。

在使用 Bayes 解決問題時通常會有三個步驟

  1. 選擇 Hypotheses 的表示方式
  2. 選擇 Data 的表示方式
  3. 建立 Likelihood function

因此對該問題,Hypotheses 為 [4, 6, 8, 12, 20] 五種,而 Data 為觀測到的骰子數值,從整數 1 到 20。因此 Likelihood function 可設定為

\[P(D|H) = \begin{cases} 0 & H < D \\ 1/H & H \ge D \end{cases}\]

Hypotheses < Data 代表該 Hypotheses 不可能出現(ex. 六面骰不可能擲出數字 8),因此機率為 0。而 Data 在 Hypothesie 的範圍內時機率為均勻分佈(假定為公平的骰子)。因此對一連續擲出數值 Data = [6, 8, 7, 7, 5, 4] 時,Posterior probability 為

Hypothesis(Dice) Posterior
4 0.0
6 0.0
8 0.9432
12 0.0552
20 0.0015

因此 8 面骰為最有可能使用的骰子。

The locomotive problem (火車頭問題)

給定一個軌道上有編號從 1 到 N 個火車在跑,當觀察到現有一台火車頭編號為 60 時,求出最有可能的 N 數值。上述問題可分為兩部分

  1. 再見到火車頭編號(Data)前,N (Hypothsis) 的分佈為何? (Prior)
  2. 在給定 N 的情況下,所觀測到的 Data 的 Likelihood 為何?

可先假定 Hypotheses 的分佈為 uniform distribution 且 N = 1001,即

\[P(H=1) = P(H=2) = \dots = P(H=1001)\]

而 Likelihood 為

\[P(D|H) = \begin{cases} 0 & H < D \\ 1/H & H \ge D \end{cases}\]

可看出 Prior 與 Likelihood Model 與 Dice 問題是相同的,可由此得出 Posterior distribution。但這答案也許不是所要的結果,另一個因此可計算所有 Hypothese 的平均值,得到平均值為 333,這也是方法之一。

另一個為使用 power law 作為 prior,可自行參考 Chapter 3.3 與 3.4

Credible intervals

在機率分佈中給定一個範圍,在範圍中的機率加總後會等於給定的數值,如 90% credible interval 代表範圍內 的 probability distribution 加總為 90%,不在範圍內的變數加總為 10%。而計算 90% credible intervals 的方式,可計算機率累計分佈 5% 與 95% 的位置作為左右區間。以前面的火車頭問題來說,以 power law prior 以及觀測到火車頭編號為 [60, 30, 90] 的資料為例,credible interval 為 [91, 243],也就是真正的火車頭數量有 90% 的機率落在該範圍內。

注意與 Credible intervalConfidence Interval 之間的不同

The German tank problem

著名的德國坦克問題(German tanke problem)。該問題為在二次世界大戰時盟軍利用在戰場上繳獲或取得的德國坦克與零件的製造編號,利用 Bayes 分析成功推論出的德軍坦克實際的數量比情報預估的要少,幫助推估真正的德軍戰力,而戰後真正的統計量也和 Bayes 得出的結果非常接近。該問題利用 Bayes 分析,成功達到了傳統分析上無法達成的預估精確度,是一個非常有趣且著名的問題,展示了 Bayes 用在現實生活上的應用,值得去多了解相關內容。

Reference