機率的兩種哲學
想像我擲了一枚公正的硬幣,啪地拍在手背上,趁我們都還沒看到之前先把它蓋住。它是正面的機率是多少?多數人會很乾脆地回答「50%」。但請停一下:硬幣其實已經落定了。它要嘛確定是正面、要嘛確定是反面——已經沒有任何隨機性可言了。那麼說答案是 50%,究竟是什麼意思?這一絲不自在,正是通往機率兩大哲學的門。
第一種觀點稱為頻率學派(frequentist),它說機率就是長期頻率:如果你能把同一情境永遠重複下去,某事件發生的比例。「這枚硬幣有 50% 是正面」意思是擲上幾百萬次,大約一半會出現正面。這正是本系列到目前為止所有內容默默採用的觀點——p 值、信賴區間,以及整套假設檢定的機制。它很強大,卻有個尷尬之處:它很難談一件已成定局的一次性事件,例如我手下的那枚硬幣,或是「這款特定藥物有效的機率」。
第二種觀點稱為貝氏(Bayesian,得名自十八世紀的牧師 Thomas Bayes),它說機率是一種信念程度——一個介於 0 與 1 之間的數字,衡量在你目前所知的一切之下,你有多大把握。在這個觀點下,對被蓋住的硬幣說「50% 是正面」完全合理:你沒有任何資訊偏向哪一面,所以你的信念平均分配。關鍵在於,信念是會隨著證據到來而更新的。這正是人類日常推理的方式——你先有個直覺,一看到新事實就立刻修正它。
本篇會從一個具體的醫學例子建立起貝氏觀點,替它的三個零件命名——先驗(prior)、概似(likelihood)與後驗(posterior)——說明信念如何隨著資料源源而來而更新,最後交出真正的回報:一個你終於被允許用直覺方式解讀的區間。一路上我們會誠實面對代價,因為貝氏方法會向你要求一些頻率學派不會要求的東西。
用真實的醫學檢測例子看貝氏定理
這裡有個連發表研究中的醫生都被騙過的謎題,所以就算你也中招,別覺得難為情。某種疾病每 1,000 人中有 1 人罹患。有一種檢測非常好:如果你真的有病,它有 99% 的機率呈陽性(這稱為敏感度);如果你沒病,它有 95% 的機率正確地呈陰性——也就是說,它只有 5% 的機率給出偽陽性。你做了檢測,結果是陽性。請問你真正罹病的機率是多少?
多數人的直覺會說「99%」或「95%」之類的——畢竟這檢測很準。但真正的答案大約是 2%。要看出原因,先把公式忘掉,單純去數人頭。這個把機率換算成想像中人數的技巧,叫做使用 自然頻率(natural frequencies),它能讓貝氏推理變得幾乎一目了然。
- 從一群人開始:想像有 100,000 人都來做這項檢測。
- 套用基率:每 1,000 人有 1 人罹病,所以有 100 人生病、99,900 人健康。
- 檢測生病的人:100 名病人中有 99%(即 99 人)呈陽性 → 99 個真陽性。
- 檢測健康的人:99,900 名健康者中有 5%(即 4,995 人)呈陽性 → 4,995 個偽陽性。
- 把所有陽性加總:99 + 4,995 = 5,094 人看到陽性結果。
- 讀出答案:這 5,094 人裡只有 99 人真的生病,所以在檢測呈陽性的條件下你真正生病的機率是 99 ÷ 5,094 ≈ 0.019,大約 1.9%。
這份意外來自 基率(base rate)——也就是在做任何檢測之前,疾病在背景中的發生率,這裡是 1/1,000。因為這疾病太罕見,少數真正的病例被人數龐大得多的健康族群淹沒了;即使把區區 5% 的偽陽性率套在那一大群健康人身上,產生的陽性也遠多於疾病本身造成的陽性。檢測確實移動了你的信念——從 0.1% 升到 1.9%,幾乎是二十倍的跳躍——但它的起點實在太低,所以結果仍然小得令人安心。(實務上這正是為什麼一次篩檢陽性之後,會再做第二次、更具特異性的確診檢測。)
我們剛剛用數人頭做的事,正是 貝氏定理。它是把一個 條件機率 反轉過來的規則:我們知道「在有病的條件下檢測呈陽性」的機率,但我們想要的是「在檢測呈陽性的條件下有病」的機率。用符號表示,以 D 代表「罹病」、¬D 代表「未罹病」、+ 代表陽性結果:
貝氏定理。分子是「經由疾病走到陽性」這條路;分母是「走到陽性的所有路徑」(經由疾病的,加上偽陽性的)。
把數字代入後的同一個算式——它得到我們數人頭得到的 1.9%。公式與人頭計算,是同一個想法的兩個面貌。
先驗、概似、後驗
醫學例子裡其實已經包含了每一次貝氏計算的三種材料,我們只需要替它們命名。每一個都是機率,而貝氏定理不過是把它們組合起來的食譜。
先驗(prior) 是你在看到新資料之前所相信的——這裡就是 0.1% 的基率。它把背景知識編碼進來:疾病有多常見、過去的實驗發現了什麼、領域專家預期什麼。先驗是貝氏方法最強大、也最具爭議之處,因為兩位都很講理的人,可能對同一個問題帶來兩個不同的先驗。
概似(likelihood) 是在你所考慮的每一個假設之下,觀察到的資料有多可能發生。這裡就是檢測的表現:若你生病,陽性結果有 99% 的可能;若你健康,陽性結果有 5% 的可能。請注意一個微妙之處——概似是當作「假設」的函數來讀,而不是「資料」的函數。它問的是:「假如這個假設為真,我實際看到的東西有多在意料之中?」
後驗(posterior) 是你把先驗與資料結合後更新的信念——也就是那 1.9% 的答案。這正是重點所在:一個關於你真正在乎之事的單一機率,可以直接拿去支援決策。而且,正如下一節會看到的,今天的後驗會變成明天的先驗。
後驗正比於「概似乘以先驗」。符號 ∝ 代表「正比於」——我們省略了那個只負責把所有機率重新縮放到加總為一的常數(也就是資料的總機率)。
把這個正比關係讀成一句白話:你看到資料之後對某假設的信念,等於你看到之前的信念,乘以這個假設把資料預測得有多好。當假設預期到了實際發生的事,就得到獎勵;當它沒預期到,就受到懲罰。這短短一行,就是所有貝氏推論的引擎。
一組畫在數值軸上的常見機率分配形狀:平坦的均勻分配、對稱的鐘形曲線,以及一條右偏的曲線。
隨著資料到來更新信念
貝氏定理不是只能用一次的把戲;它是一具你能一再啟動的引擎。規則優雅得驚人:今天的後驗會變成明天的先驗。每一批新資料都會更新你的信念,而那個更新後的信念,就是下一批資料的起點。這就是貝氏學派如何持續地學習,而不是等到最後才做一次大分析。
假設你經營一個網站,想估計一個新按鈕的點擊率——也就是按下它的訪客比例。你的舊按鈕轉換率大約是 5%,所以從一個以 5% 為中心的先驗信念出發,比假裝你一無所知合理得多。接著訪客來了。前 200 人中有 14 人點擊——觀察到的比率是 7%。那麼此刻你該相信真實的比率是多少?
純粹的頻率學派會回報原始的 7%(即 點估計)以及它周圍的 信賴區間。貝氏學派則把資料給的 7% 與先驗給的 5% 融合在一起。結果落在兩者之間——被證據往 7% 拉、又被先前的經驗錨定在 5% 附近——而你蒐集越多資料,資料就越占上風。若採用一個相當於「約 100 次造訪經驗」的先驗,後驗平均算出來大約是 6.3%。
為一個比率融合先驗與資料。先驗的作用像是 α 個先驗「成功」與 β 個先驗「失敗」(這裡是 5 與 95,相當於 100 次想像造訪得到 5% 的比率);資料則加入 n = 200 中的 k = 14 次點擊。後驗 6.3% 正好落在先驗的 5% 與觀察到的 7% 之間。
from scipy.stats import beta # Prior Beta(5, 95): like having already seen 5 clicks in 100 visits (about 5%) a, b = 5, 95 clicks, visits = 14, 200 # the new data a_post = a + clicks b_post = b + (visits - clicks) print(beta.mean(a_post, b_post)) # 0.0633... posterior click-rate print(beta.ppf([0.025, 0.975], a_post, b_post)) # 95% credible interval
由此可得到兩個誠實的教訓。第一,資料一多,先驗就會被沖淡:在一百萬名訪客之後,你最初的直覺幾乎無關緊要,貝氏與頻率學派的答案也幾乎一致。第二,資料一少,先驗就舉足輕重——當你的先驗很好時這是優點(它阻止你對一個微小又吵雜的樣本反應過度),當你的先驗很糟時這是缺點(它可能把一個正確的訊號往錯誤的成見拖過去)。我們稍後會回到這份誠實。
一條寬而低的先驗分配,以及在資料之後、往觀察值方向移動且明顯更窄更高的後驗分配。
可信區間與信賴區間
現在來到讓這一切值回票價的回報。回想統計學裡最常見的誤解:人們看到一個 95% 的 信賴區間,例如「比率介於 4.1% 與 6.3% 之間」,便下結論說「真實比率落在這個範圍的機率是 95%」。對信賴區間而言,這樣讀就是錯的。頻率學派的 95% 描述的是程序:如果你把整個研究重複許多次,它產生的區間大約有 95% 會包含真值。對你手上那一個特定區間來說,真值要嘛在裡面、要嘛不在——已經沒有機率可以分配了。
許多條水平的區間長條垂直堆疊,對著一條標示真值的垂直線;大約每二十條中有一條沒有橫跨那條線。
貝氏的區間——稱為 可信區間——正好給你大家一直以來想要的那種讀法。一個 95% 的可信區間,是一個容納了 95% 後驗機率的範圍,所以你真的有資格說:「在我的先驗與資料之下,真實比率落在這兩個數字之間的機率是 95%。」它是對未知量本身的直接機率陳述,而不是關於某個重複程序的陳述。
一個誠實陳述的 95% 可信區間:未知參數 θ 落在 [a, b] 的後驗機率是 0.95。這正是人們錯誤地套在信賴區間上、卻能正確套在可信區間上的那句話。
有兩個誠實的但書,讓這不至於變成免費午餐。第一,那個乾淨的詮釋是用一個先驗換來的——換掉先驗,區間就會跟著變,在資料稀少時尤其明顯。頻率學派的區間不需要先驗,這正是有些人偏好它的原因。第二,當資料充足、先驗又溫和時,95% 可信區間與 95% 信賴區間的數值往往幾乎相同;它們只是標籤上掛著不同的保證書。要分清楚的兩個詞是:可信區間(貝氏——關於參數的機率)與信賴區間(頻率學派——關於程序的性質)。
優點、代價,以及何時採用貝氏
那麼,你什麼時候該伸手去拿貝氏這項工具?它的優點是實在的。它交給你一個可以直接拿去行動的機率陳述。它讓你把真正的先驗知識納入,而不是把它丟掉。它對小樣本很從容,會把過於誇張的估計往合理的方向收縮。它隨著資料源源而來自然地更新。而且它給你一整個後驗分配,這對決策而言,遠比「單一估計加上一個是/否的檢定」豐富——你可以直接讀出效果超過你在乎的任何門檻的機率,例如「新按鈕比舊的至少高 1 個百分點的機率」。
代價同樣是實在的,假裝沒有代價,正是貝氏分析背負惡名的原因。你必須選一個先驗,而那個選擇是別人可以質疑的判斷——在對抗性或受監管的場合(藥物試驗、法庭訴訟),「我假設這個效果大概很小」可能是無法被接受的。計算可能很難:實際的模型需要像 MCMC(馬可夫鏈蒙地卡羅,一種從複雜到無法整潔寫出的後驗中抽樣的方法) 這類數值方法,而這些方法要小心地執行與檢查。而且,要誠實地把結果說清楚,所需的字句也比單一個 p 值多。
- 當你握有真實、站得住腳、忽略它才是傻的先驗資訊時,採用貝氏。
- 當資料稀少、或是依序到來、而你想邊跑邊更新時,採用貝氏。
- 當決策需要一個直接的機率時,採用貝氏——「B 比 A 至少高 2% 的可能性有多大?」
- 當你必須避開任何關於先驗的爭論時,傾向頻率學派——受監管的試驗、稽核、對抗性的報告。
- 當一個簡單、大家都熟悉的檢定就已經回答了問題、而先驗只會徒增爭議時,傾向頻率學派。
- 無論哪一種,都要把你的假設大聲講出來——貝氏的先驗、以及所有人都該交代的模型與停止規則。
值得知道的是,這兩個世界是相通的。頻率學派的 最大概似 方法——挑出讓資料最有可能發生的那個假設——其實就是在先驗平坦時,去找貝氏後驗的最高點。從這個意義上說,最大概似就是「把先驗關掉」的貝氏。許多常備方法,包括 自助法(bootstrap) 與正則化迴歸,在兩種語言裡都有自然的讀法。
總結推論工具箱
你現在已經看過了統計推論的完整弧線,所以讓我們把點連起來。它始於一個問題:我們永遠無法量測整個 母體,只能量測一份 樣本。中央極限定理 告訴我們,樣本的平均數行為是可預測的,這讓我們能替一個估計附上一個 標準誤。由此我們建立了 信賴區間 來表達不確定性,並用帶著 p 值 的 假設檢定 來判斷一個效果是否不只是雜訊。本篇又加上了貝氏這條替代路徑:從先驗出發,用概似更新,再讀出一個後驗——以及隨之而來、誠實又符合直覺的可信區間。
在這每一項工具底下,都是同一個想法:當你手上只有一個更大、更吵雜世界的樣本時,謹慎地對不確定性進行推理。頻率學派與貝氏學派,是同一場對話的兩種方言。流利的資料科學家能在兩者之間自在切換,挑選那個能讓下一個決策最清楚、最站得住腳的。
- 想表達一個估計有多不確定?回報一個區間,而不只是一個點——信賴或可信皆可。
- 想知道一個效果是否真實存在?一個假設檢定、或一個排除「無效果」的區間都行;優先用區間,因為它同時也顯示了效果的大小。
- 握有強力的先驗知識或串流資料?採用貝氏,邊跑邊更新。
- 需要一個沒人能指控帶有偏頗先驗的結果?留在頻率學派。
- 永遠問最後一個問題:這個效果大到足以產生影響了嗎,還是只大到剛好被偵測到而已?
這就是核心工具箱。接下來的系列會讓它派上用場:設計值得信賴的實驗與 A/B 測試、配適並驗證迴歸模型,以及——最難的——對「究竟是什麼造成了什麼」做出誠實的因果主張。你現在已經握有它們每一個都在說的那套不確定性的語言。繼續前進。