迄今為止,我們使用的統計方法在統計學中都稱為頻率論方法。我們從樣本中得出的結論完全基於數據的頻率或比例。這是最常用的一種推理框架,已經發展成為一種非常成熟的理論,主要內容包括本書前面介紹過的假設檢驗和置信區間。從原則上說,這種方法的優點是無偏性,結論僅僅建立在觀測到的數據之上。但是,某些情況更適合使用另外一種統計方法:貝葉斯統計。
圖1 太陽爆炸了嗎?
圖 1 中畫的是什麼情況呢?頻率論統計學家很清楚,只有兩種可能:探測器擲出一對 6,表示它說了謊;或者擲出其他的數,表示它說的是真的。因為沒有擲出一對 6 的概率是 35/326(97.22%),所以頻率論統計學家得出結論,探測器可能說的是真話。因此,太陽真的可能爆炸了。
貝葉斯統計學家在建立概率模型時會加入額外的信息。他也認為探測器不太可能擲出一對 6,然而,他主張要將探測器說真話的概率與太陽沒有爆炸的先驗概率進行比較。這位貝葉斯統計學家最終認為,太陽沒有爆炸的概率比 97.22% 還要大,並決定賭一把「太陽明天照常升起」。
1.條件概率構成貝葉斯推理基礎的核心思想就是條件概率。在以前對概率的討論中,我們依賴於一種前提假設,即事件都是獨立的。例如,我們會這樣假設,拋出一枚硬幣的結果是正面還是反面,與上一次拋擲的結果是正面還是反面無關。這種假設對於數學計算非常方便,但生活並不總是這樣。在很多實際情況中,獨立性是個糟糕的假設。
考慮一下隨機選擇出一個體重超過 180 磅的美國成年男性的概率。男性的概率為 0.5,體重超過 180 磅(美國人的平均體重)的概率也大約是 0.5。所以,如果這兩個事件是獨立的,那麼找出一個既是男性體重又超過 180 磅的人的概率就是 0.25。但是,這兩個事件不是獨立的,因為美國男性的平均體重要比女性多 30 磅。所以,這個問題應該是這樣的:(1)選擇一個男性的概率是多少;(2)如果選擇出來的人是男性,那麼這個人的體重超過 180 磅的概率是多少。使用條件概率的表示方法可以更容易地表述這個問題。
P(A|B) 表示當 B 為真時,A 為真的概率,它經常讀作「給定 B 時,A 的概率」。因此,公式:
P(male)*P(weight > 180 | male)
準確表達了我們要找出的概率。如果 P(A) 和 P(B) 是獨立的,那麼 P(A|B) = P(A)。對於前面的例子,B 表示男性,A 表示體重>180。一般地,如果 P(B) ≠ 0,則:
P(A|B) =P(A+B)/P(B)
與一般的概率一樣,條件概率也位於 0 和 1 之間。而且,如果 A 表示 not A,那麼 P(A|B) + P(|B) = 1。
人們經常錯誤地認為 P(A|B) 等於 P(B|A),但這種想法是完全站不住腳的。例如,P(male|Maltese)的值大約等於 0.5,但 P(Maltese|male) 只有大約 0.000064。
實際練習:估計一下隨機選擇一個體重大於 180 磅的美國男性的概率。假設美國人口的 50% 是男性,而且美國男性的體重服從均值為 210 磅、標準差為 30 磅的正態分布。(提示:可以考慮使用經驗法則。)
公式 P(A|B, C) 表示當 B 和 C 同時成立時,A 成立的概率。假設 B 和 C 是互不相關的,那麼通過條件概率的定義和獨立概率的乘法法則可知:
P(A | B, C)= P(A, B, C)/ P(B, C)
這裡的 P(A, B, C) 表示 A、B 和 C 同時為真的概率。同樣地,P(A, B|C) 表示當 C 為真時,A 和 B 同時為真的概率。假設 A 和 B 是互不相關的,那麼:
P(A, B | C)=P(A | C)*P(B| C)
2.貝葉斯定理假設一個四十多歲的沒有臨床症狀的女性做了一次乳腺X光檢查,然後收到了一個壞消息:檢查結果是「陽性」。
患有乳腺癌的女性通過乳腺 X 光檢查確診的真陽性概率為 0.9。而沒有患乳腺癌的女性通過乳腺 X 光檢查誤診為乳腺癌的假陽性概率為 0.07。
我們可以使用條件概率表示以上的事實。令:
使用這些變量,我們可以得到如下條件概率:
知道了這些條件概率,那麼一個年過不惑的女性應該如何面對陽性的乳腺 X 光檢查結果呢?她確實罹患乳腺癌的概率是多少?因為假陽性率是 7%,所以概率應該是 0.93 嗎?還是應該比這個大,抑或比這個小?
這個問題很複雜:我們沒有提供足夠的信息可以使你給出一個合理的解答。要回答這個問題,你需要知道年過四十的女性罹患乳腺癌的先驗概率。對於四十多歲的女性來說,患有乳腺癌的比例是0.008(1000 個人中有 8 個)。因此,沒有乳腺癌的比例是 1-0.008 = 0.992。也就是說:
現在我們已經有了足夠的信息,可以解決年過四十的女性所擔心的問題了。要計算出她患有乳腺癌的概率,我們需要使用貝葉斯定理(通常稱為貝葉斯定律或貝葉斯法則):
在貝葉斯統計中,概率測量的是可信度。貝葉斯定理表明了不考慮證據的可信度和考慮了證據的可信度之間的關係。公式等號左邊的部分 P(A | B) 是後驗概率,即考慮了 B 之後的 A 的可信度。後驗概率定義為先驗概率 P(A) 與證據 B 對 A 的支持度的乘積。支持度是 A 成立的情況下 B 成立的概率與不考慮 A 時 B 成立的概率的比值,即:
P(B| A)/ P(B)。
如果使用貝葉斯定理來估計那位女性確實患有乳腺癌的概率,我們可以得到(Canc 即貝葉斯定理中的 A,Pos 則是 B):
檢查結果為陽性的概率為:
所以,
也就是說,大約 90% 的乳腺X光檢查陽性結果都是假陽性!在這裡,貝葉斯定理能夠起作用的原因就是,我們對四十歲以上的女性患乳腺癌的概率有一個準確的估計。
請一定記住,如果先驗概率是錯的,那麼估計後驗概率時,只能使估計結果更壞,而不是更好。舉例來說,如果開始時的先驗概率為:
那麼我們會得出假陽性率大約為 5%,也就是說,四十歲以上的女性在乳腺 X 光檢查結果為陽性的情況下,患有乳腺癌的概率是 0.95。
實際練習:你正在森林中漫步,突然發現一片看上去非常鮮美的蘑菇。你採了滿滿一籃蘑菇,準備回家為丈夫準備一頓豐盛的晚餐。但是,在烹製蘑菇之前,丈夫建議你找本關於本地蘑菇種類的書參考一下,看看它們是否有毒。這本書說,在本地的森林中,80% 的蘑菇都是有毒的。然而,你將你採的蘑菇與書中圖片裡的蘑菇對比了一下,確定有 95% 的把握可以認為你的蘑菇是安全的。那麼你是否應該將蘑菇做給丈夫吃(如果你不想成為寡婦的話)?
3.貝葉斯更新通過應用貝葉斯定理,貝葉斯推理提供了一種理論方法,可以使用新的證據修正先前的可信度。貝葉斯定理可以迭代使用:觀測到一些新證據之後,可以將原來的後驗概率作為先驗概率,並根據新的證據計算出新的後驗概率。這使得貝葉斯定理可以應用在各種類型的證據上,無論是一下子同時出現的證據,還是隨著時間推移逐漸出現的證據。這個過程就稱作貝葉斯更新。
我們看一個例子。假設你有一個袋子,其中裝有相同數量的三種骰子,每種骰子擲出6的概率都不一樣。A 類型的骰子擲出 6 的概率是 1/5,B 類型的骰子擲出 6 的概率是 1/6,C 類型的骰子擲出 6 的概率是 1/7。把手伸進袋子,抓出 1 個骰子,並估計這個骰子是 A 類型的概率。甚至不需要很多概率知識你就可以知道,這個概率的最優估計值是 1/3。然後,擲兩次骰子,並根據結果修正你的估計。如果每次都擲出 6,那麼很明顯這個骰子是 A 類型的可能性要更大一些。那麼這個更大的可能性是多少呢?我們可以使用貝葉斯更新來回答這個問題。
根據貝葉斯定理,第一次擲出 6 後,這個骰子是 A 類型的概率為:
P(A | 6)=P(A)*P(6 | A)/ P(6)
其中:
圖2中的代碼實現了貝葉斯定理,並使用這個定理計算出骰子是 A 類型的概率。請注意,第二次調用 calcBayes 函數時,使用了第一次調用的結果作為 A 的的先驗概率。
圖2 貝葉斯更新
貝葉斯更新運行這段代碼,會輸出:
可以看出,這個概率估計的修正值是一直上升的。
那麼,如果兩次投擲都沒有擲出 6,會是什麼情況呢?將圖 2 中的最後 4 行代碼替換為以下代碼:
會輸出:
可以看出,這個概率估計的修正值在一直下降。假設有理由相信袋子中 90% 的骰子都是A類型,只需將原來代碼中的先驗概率 priorA 修改為 0.9 即可。這樣,如果模擬兩次投擲都沒有擲出 6 的情況,代碼會輸出:
可見,先驗概率有多麼重要!
我們再做一個實驗。仍然保持 priorA = 0.9,看看如果抓出的骰子實際上是 C 類型會發生什麼。圖 3 中的代碼模擬了擲 200 次 C 類型的骰子(它擲出 6 的概率是 1/7),然後在每 20 次投擲之後,對這個骰子是 A 類型的概率進行一次修正,並輸出修正後的估計值。
圖3 對較差先驗概率的貝葉斯更新
對較差先驗概率的貝葉斯更新運行這段代碼,會輸出:
好消息是,即使是在給定了一個有誤導性的先驗概率的情況下,當試驗次數逐漸增加時,後驗概率還是逐漸收斂於真相。順便提一句,我們還要注意,這個過程不是單調收斂的。120 次投擲之後的概率要高於 100 次投擲之後的概率,說明這 20 次投擲更符合骰子是A類型的情況,而不是 B 類型或 C 類型。
如果我們從一個更好的先驗概率開始,後驗概率會收斂得更快。如果回到 1/3 的初始先驗概率,那麼在 100 次投擲之後,後驗概率就收斂到了 0.0335;在 200 次投擲之後,則收斂到 0.0205。
本文內容摘自《Python編程導論(第2版)》,作者 John V. Guttag 是 MIT 最受歡迎的教授之一 。加塔教授的計算機科學課,MIT 6.00SC Introduction to Computer Science and Programming 第一堂在油管的觀看量已經接近 60 萬。本書以 Python 3 為示例,基於 MIT 熱門 MOOC 教程編寫,旨在培養讀者計算機思維,為其日後的 IT 生涯打下堅實的編程基礎。
掃一掃,京東購
作者:John V. Guttag
譯者:陳光欣
本書基於 MIT 知名計算機科學和 Python 編程入門課講義寫成,主要目標在於幫助讀者掌握並熟練使用各種計算技術,具備用計算思維解決現實問題的能力。人工智慧和大數據時代必備。
☟☟點擊【閱讀原文】查看Python書單