標籤:

貝葉斯學派與頻率學派有何不同?


簡單地說,頻率學派與貝葉斯學派探討「不確定性」這件事時的出發點與立足點不同。頻率學派從「自然」角度出發,試圖直接為「事件」本身建模,即事件A在獨立重複試驗中發生的頻率趨於極限p,那麼這個極限就是該事件的概率。舉例而言,想要計算拋擲一枚硬幣時正面朝上的概率,我們需要不斷地拋擲硬幣,當拋擲次數趨向無窮時正面朝上的頻率即為正面朝上的概率。

然而,貝葉斯學派並不從試圖刻畫「事件」本身,而從「觀察者」角度出發。貝葉斯學派並不試圖說「事件本身是隨機的」,或者「世界的本體帶有某種隨機性」,這套理論根本不言說關於「世界本體」的東西,而只是從「觀察者知識不完備」這一出發點開始,構造一套在貝葉斯概率論的框架下可以對不確定知識做出推斷的方法。頻率學派下說的「隨機事件」在貝葉斯學派看來,並不是「事件本身具有某種客觀的隨機性」,而是「觀察者不知道事件的結果」而已,只是「觀察者」知識狀態中尚未包含這一事件的結果。但是在這種情況下,觀察者又試圖通過已經觀察到的「證據」來推斷這一事件的結果,因此只能靠猜。貝葉斯概率論就想構建一套比較完備的框架用來描述最能服務於理性推斷這一目的的「猜的過程」。因此,在貝葉斯框架下,同一件事情對於知情者而言就是「確定事件」,對於不知情者而言就是「隨機事件」,隨機性並不源於事件本身是否發生,而只是描述觀察者對該事件的知識狀態。

總的來說,貝葉斯概率論為人的知識(knowledge)建模來定義「概率」這個概念。頻率學派試圖描述的是「事物本體」,而貝葉斯學派試圖描述的是觀察者知識狀態在新的觀測發生後如何更新。為了描述這種更新過程,貝葉斯概率論假設觀察者對某事件處於某個知識狀態中(例如:小明先驗地相信一枚硬幣是均勻的,可能是出於認為均勻硬幣最常見這種信念),之後觀察者開始新的觀測或實驗(小明開始不斷地拋硬幣,發現拋了100次後,居然只有20次是正面朝上)。經過中間的獨立重複試驗,觀察者獲得了一些新的觀測結果,這些新的觀測將以含有不確定性的邏輯推斷的方式影響觀察者原有的信念(小明開始懷疑這枚硬幣究竟是不是均勻的,甚至開始斷定硬幣並不均勻)。在這一過程中,觀察者無法用簡單的邏輯來推斷,因為觀察者並沒有完全的信息作為證據,因此只能採用似真推斷(plausible reasoning),對於各種各樣可能的結果賦予一個「合理性」(plausibility)。例子中,小明原先認為硬幣的分布是均勻的,於是根據小明原有的信念,這個論斷合理性非常高;在觀察到100次拋擲中只有20次正面朝上後,小明開始懷疑硬幣的均勻性,此時小明很可能認為「硬幣不均勻」這一推斷的合理性很高,支持的證據就是他剛剛實驗的觀測結果。

上面的例子用貝葉斯概率論的語言來描述,就是觀察者持有某個前置信念(prior
belief),通過觀測獲得統計證據(evidence),通過滿足一定條件的邏輯一致推斷得出的關於該陳述的「合理性」,從而得出後置信念(posterior belief)來最好的表徵觀測後的知識狀態(state of knowledge)。這裡,貝葉斯概率推斷所試圖解決的核心問題就是如何構建一個滿足一定條件的邏輯體系賦予特定論斷一個實數所表徵的論斷合理性的度量(measure of plausibility),從而可以允許觀測者在不完全信息的狀態下進行推斷。這裡,觀察者對某變數的信念或知識狀態就是頻率學派所說的「概率分布」,也就是說,觀察者的知識狀態就是對被觀察變數取各種值所賦予的「合理性」的分布。

從這個意義上來講,貝葉斯概率論試圖構建的是知識狀態的表徵,而不是客觀世界的表徵。因此,在機器學習、統計推斷中,許多情況下貝葉斯概率推斷更能解決觀察者推斷的問題,而繞開了關於事件本體的討論,因為沒有討論本體的必要性。

參考:《概率論沉思錄》

// 補充(從對其他回答的評論中轉移過來):

貝葉斯概率仍然只是一個實數,而概率分布是推斷者根據自己的知識狀態賦予參數在某集合內取各個值的可信度,因此概率分布表徵了推斷者的知識狀態。

例如:一個硬幣可能取正面或反面,某推斷者的知識狀態是對於「下一次會得到正面」賦予1/3的可信度(概率),「下一次得到反面」賦予2/3的可信度(概率),總的這個知識狀態才是表證這個推斷者的概率分布,這邊是一個先驗分布(可能來源於對這枚硬幣的事先了解),隨著他一直投擲硬幣作實驗,這位觀測者會不斷更新自己的知識狀態,一個後驗分布(另一組更新後的對正反面的看法,即賦予的可信度)來最好地表徵推斷者的最新的知識狀態。

因此,貝葉斯概率和分布仍然是兩個不同的概念,只是設定概念的動機不同。



謝謝 @Heinrich@Oyster Kwok 的精彩例子和 @任坤 的精彩陳述。

Regina Nuzzo女士2014年2月份發在Nature雜誌Volume506,Issue7487上批判p值濫用的文章(原文和中譯文鏈接見本文末),像極了貝葉斯學派的逆襲。


Regina Nuzzo文章的主要的貢獻在於,通過整理科學研究文獻,用數據和實例證實了科學研究中確實存在p值統計學顯著結果不可重現等問題,並藉此呼籲重視貝葉斯方法。文章全文有七處引用Goodman的原話("Goodman says"),11篇參考文獻中有三篇來來自Goodman。而Steven Goodman是貝葉斯方法的支持和推動者。


直至今日,關於統計推斷的主張和想法,大體可以納入到兩個體系之內,其一叫頻率學派,其特徵是把需要推斷的參數θ視作固定且未知的常數,而樣本X是隨機的,其著眼點在樣本空間,有關的概率計算都是針對X的分布。另一派叫做貝葉斯學派,他們把參數θ視作隨機變數,而樣本X是固定的,其著眼點在參數空間,重視參數θ的分布,固定的操作模式是通過參數的先驗分布結合樣本信息得到參數的後驗分布。


兩學派各有其信仰、內在邏輯、解釋力和局限性,從20世紀上半頁至今,兩大學派的辯論從未停歇,但分歧如故。貝葉斯學派的發展在二十世紀滯後於頻率學派,甚至現今主流統計學教材仍然以頻率學派的理論框架為主,貝葉斯理論通常一筆帶過。這或許受到Karl Pearson,Sir Ronald A. Fisher,Egon Pearson(Karl Pearson的兒子)和Jerzy Neyman等二十世紀上半葉的大統計學家的影響,這些當時具有話語權的大統計學家並不認可貝葉斯理論(儘管一些人的文章里被懷疑使用了貝葉斯的思想)。


註:

上一段中提到的二十世紀上半頁大統計學家的部分貢獻(排列不分先後):

Karl Pearson:擬合優度檢驗,Chi方檢驗,矩估計

Ronald A. Fisher:極大似然估計,顯著性檢驗(提到p值),方差分析,F檢驗,試驗設計理論

Egon Pearson和Jerzy Neyman:假設檢驗,兩類統計學錯誤,備擇假設,似然比檢驗

Jerzy Neyman:區間估計


Regina Nuzzo的文章相比兩學派近一個世紀的辯論而言,並沒有提出新的批判觀點。


對於頻率學派假設檢驗的理論體系,一次試驗得到很小的p值,並不意味這樣的結果可以重現。關於p值的可重現性在頻率學派框架下的解釋,見下例。


場景1:假設盒子A里有近乎無窮的有限個球(就是很多很多數不清但是又不是無窮無盡的意思),每個球上有一個數字(實數)。每從中取出一個球,記錄球上的數字X,則X是一個隨機變數(每取一次球得到的數字是不確定的)。假設上帝觀察了每一個球上的數字,總結得到,X服從均值為1.96,標準差為10的正態分布。那麼從中有放回地隨機抽取100個,計算這些球上數字的平均值x-bar,則x-bar也是一個隨機變數(每做一次取100個球的試驗得到的一個均值是不確定的),應當服從均值為1.96,標準差為1的正態分布。


而可憐的試驗者事先對盒子里球上數字的平均值一無所知(而為了方便起見,上帝仁慈地告訴試驗者盒子里所有球上數字的標準差是10,且平均值不小於零)。試驗者希望通過從盒子中有放回地隨機抽取100個球,利用這100個球的信息,推斷盒子里所有球上數字的均值是否等於零。他目前只能知道(on the mercy of the god,你已經知道得比你應該知道的多了),一次試驗得到的平均值x-bar應當服從一個平均值未知,標準差為1的正態分布。


於是他建立的零假設(null hypothesis)是,盒子里所有球上數字的平均值等於零。


可以推斷,在不考慮零假設的情況下,如果重複100次這樣的試驗,可以得到100不全相同的x-bar,這些x-bar應當服從一個平均值未知,標準差為1的正態分布。但可惜試驗者通常只有能力和精力做一次這樣的試驗(就算能做好多次,也在文章發表之後再說吧)。


如果零假設正確,得到的x-bar更有可能在零附近不太遠的地方。如果得到的x-bar距離零遠得太離譜,這樣極端的情況在一次試驗中恐怕不太可能發生。既然發生了,更有可能是因為零假設本身是錯誤的,因而拒絕零假設。取到比某個極端閾值更加極端值的概率,就是p值(Fisher的顯著性檢驗理論,區別於Egon Pearson-Jersey Neyman的假設檢驗/I類II類錯誤理論)。


在本例中,如果零假設正確,(根據正態概率分布)則x-bar取到比1.96更大或比-1.96更小值的概率僅有5%。於是設定一個標準,如果一次試驗得到大於1.96或小於-1.96的x-bar(p&<0.05),那麼就很有「信心」認為零假設錯誤,盒子里所有球數字的平均值不太可能等於零。


頻率學派里的「信心」在此處理解為,在零假設正確的情況下,如果真的重複了100次這樣的試驗,用以上的標準做出對零假設的判斷,平均意義上將出現5次錯誤的拒絕。換句話說,零假設本身正確而被假設檢驗流程拒絕的可能性是5%(通常的取值有5%,1%等等,沒有什麼科學依據,5%就是Fisher當年第一次在田間隨便一說,後來大家認為都能接受就成習慣了)。


而事實上,上帝知道盒子里所有球數字的平均值是1.96,如果真的重複了100次這樣的試驗,平均意義上有約50次將得到x-bar小於1.96的結果,而剩下約50次將得到x-bar大於1.96的結果。也就是說,該試驗者按照這樣的假設檢驗流程,有50%的可能性得到p&<0.05的結果拒絕零假設,有50%的可能性得到p&>0.05的結果不能拒絕本應拒絕的零假設。


場景2:描述同模擬1,但上帝觀察了每一個球上的數字,總結得到,X服從均值為0.0000196,標準差為10的正態分布。那麼從中有放回地隨機抽取100個,計算這些球上數字的平均值x-bar,則x-bar也是一個隨機變數(每做一次取100個球的試驗得到的一個均值是不確定的),應當服從均值為0.0000196,標準差為1的正態分布。


試驗者希望通過從盒子中有放回地隨機抽取100個球,利用這100個球的信息,推斷盒子里所有球上數字的均值是否等於零。他目前只能知道一次試驗得到的平均值x-bar應當服從一個平均值未知,標準差為1的正態分布。


於是他建立的零假設(null hypothesis)是,盒子里所有球上數字的平均值等於零。


可以推斷,在不考慮零假設的情況下,如果重複100次這樣的試驗,可以得到100不全相同的x-bar,這些x-bar應當服從一個平均值未知,標準差為1的正態分布。但可惜試驗者通常只有能力和精力做一次這樣的試驗。


如果零假設正確,得到的x-bar更有可能在零附近不太遠的地方。如果得到的x-bar距離零遠得太離譜,這樣極端的情況在一次試驗中恐怕不太可能發生。既然發生了,更有可能是因為零假設本身是錯誤的,因而拒絕零假設。取到比某個極端閾值更加極端值的概率,就是p值

在本例中,如果零假設正確,(根據正態概率分布)則x-bar取到比1.96更大或比-1.96更小值的概率僅有5%。於是設定一個標準,如果一次試驗得到大於1.96或小於-1.96的x-bar(p&<0.05),那麼就很有「信心」認為零假設錯誤,盒子里所有球數字的平均值不太可能等於零。


而事實上,上帝知道盒子里所有球數字的平均值是0.0000196,如果真的重複了100次這樣的試驗,平均意義上有將近100次將得到x-bar在-1.96和1.96之間的結果,幾乎不會得到x-bar大於1.96或小於-1.96的結果。也就是說,該試驗者按照這樣的假設檢驗流程,幾乎不能得到p&<0.05的結果以拒絕零假設。


但零假設真真的是錯的啊。


場景3:描述同模擬1,但上帝觀察了每一個球上的數字,總結得到,X服從均值為0.0000196,標準差為10的正態分布。那麼從中有放回地隨機抽取1000000000000000000個,計算這些球上數字的平均值x-bar,則x-bar也是一個隨機變數(每做一次取100個球的試驗得到的一個均值是不確定的),應當服從均值為0.0000196,標準差為0.00000001的正態分布。


試驗者希望通過從盒子中有放回地隨機抽取1000000000000000000個球,利用這1000000000000000000個球的信息,推斷盒子里所有球上數字的均值是否等於零。他目前只能知道一次試驗得到的平均值x-bar應當服從一個平均值未知,標準差為0.00000001的正態分布。


於是他建立的零假設(null hypothesis)是,盒子里所有球上數字的平均值等於零。


可以推斷,在不考慮零假設的情況下,如果重複100次這樣的試驗,可以得到100不全相同的x-bar,這些x-bar應當服從一個平均值未知,標準差為0.00000001的正態分布。但可惜試驗者通常只有能力和精力做一次這樣的試驗。


如果零假設正確,得到的x-bar更有可能在零附近不太遠的地方。如果得到的x-bar距離零遠得太離譜,這樣極端的情況在一次試驗中恐怕不太可能發生。既然發生了,更有可能是因為零假設本身是錯誤的,因而拒絕零假設。取到比某個極端閾值更加極端值的概率,就是p值


在本例中,如果零假設正確,(根據正態概率分布)則x-bar取到比0.0000000196更大或比-0.0000000196更小的值的概率僅有5%。於是設定一個標準,如果一次試驗得到大於0.0000000196或小於-0.0000000196的x-bar(p&<0.05),那麼就很有「信心」認為零假設錯誤,盒子里所有球數字的平均值不太可能等於零。


而事實上,上帝知道盒子里所有球數字的平均值是0.0000196,如果真的重複了100次這樣的試驗,平均意義上有將近100次將得到x-bar大於0.0000196的結果,幾乎不會得到x-bar小於0.0000196的結果。也就是說,該試驗者按照這樣的假設檢驗流程,幾乎總是能夠得到p&<0.05的結果從而拒絕零假設。

小結:

上面的例子可以看出Fisher的顯著性檢驗的內在邏輯特徵及其局限性,

1. 真實參數除了知曉底牌的上帝,凡人是不得而知的。

2. 凡人對真實參數做出的所有零假設都是錯誤的,都是應該且能夠被拒絕的。在樣本量足夠大的條件下,可以拒絕所有的零假設,總是可以得到p&<0.05的結論。

3. p值依賴於一個人為確定的、假想的、錯誤的但又難以證實難以證偽的零假設下某個統計量的概率分布。

4. 若不能拒絕零假設,也不能稱「接受零假設」,因為零假設總是錯誤的,在增加樣本量後總是可以拒絕的。

5. p&<0.05,拒絕零假設,有統計學意義並不代表有實際意義。零假設和真實參數差距再小也是可以被拒絕的。

6. 一次試驗得到一個p&<0.05的結果,拒絕了零假設,並不意味這樣的結果在以後的試驗中能夠重複。儘管不能重現,但沒能拒絕的零假設也是應當被拒絕的,只是樣本量的問題。


然而,在給定的方法下的一次試驗中出現拒絕零假設的結果幾乎不能說明任何問題。場景1-3中均可能出現一次試驗拒絕零假設的情況,但我們不能反推回去,得知我們所處的場景是1-3中的哪一個。

(修改待續)

試驗結果的不可重現還有可能與取樣偏倚(樣本隨機性代表性問題)、缺乏對參數分布的理解(中心極限定理保證,不論總體的分布形式,大樣本平均值的分布漸近於正態分布;但對一些諸如偏斜分布、多峰分布等非對稱分布,在小樣本的情況下,樣本平均值不能很好地漸近正態,基於此的統計推斷可能出現問題)等因素有關。


回到Regina Nuzzo的文章,Regina Nuzzo提出了p值統計學顯著結果不可重現等問題,並認為貝葉斯方法可以補償這樣的缺陷。她提倡從先前的研究結果、猜想的理論機理、和其它專業知識中得到對將要估計的未知參數的先驗分布,然後開展試驗,向先驗分布中補充進新的樣本信息,得到後驗分布後進而作出推斷。


但貝葉斯方法並不能解決所有問題,貝葉斯方法的適用性同樣存在爭議,特別在於如何確定先驗分布這一基本問題。另外,在毫無先驗信息的情況下,貝葉斯方法同樣無助於解決統計學顯著結果不可重現的問題,一些提倡的貝葉斯方法在此處只是單純增加了判斷結果顯著性的難度罷了。


綜上,兩學派的爭論並不是一個非黑即白的問題,兩個學派各有其信仰、內在邏輯、解釋力和局限性,將長期共存、協同發展。順便提一句,Regina Nuzzo的文字如果不那麼衝動和富有煽動性,或許會顯得更公正一些。


原文地址:http://www.nature.com/news/scientific-method-statistical-errors-1.14700

果殼翻譯地址:http://www.guokr.com/article/438043/

參考文獻:

陳希孺,《數理統計學簡史》,2002年,湖南教育出版社;等。


錯誤和不準確的地方請指出。轉載請註明出處。


第一名答案的例子其實並不對。貝葉斯學派和頻率學派的最大區別並不在於信息的利用和整合上。雖然貝葉斯方法可以用先驗分布來引入以往的信息,但是頻率學派也有方法來整合各種domain knowledge,比如在最優化likelihood的時候加入各種constrain。以麻將為例,頻率學派的人同樣可以把每個人的信息加入的模型中進而找出最有策略,這也是「統計決策」(Statistical decision theory)領域裡早期大牛們的做法(雖然他們的定理證明了所有可能的決策選擇中最佳的決策就是貝葉斯後驗的Mode)。從這個意義上來說兩者其實差別並不大。

頻率學派和貝葉斯學派最大的差別其實產生於對參數空間的認知上。所謂參數空間,就是你關心的那個參數可能的取值範圍。頻率學派(其實就是當年的Fisher)並不關心參數空間的所有細節,他們相信數據都是在這個空間里的」某個「參數值下產生的(雖然你不知道那個值是啥),所以他們的方法論一開始就是從「哪個值最有可能是真實值」這個角度出發的。於是就有了最大似然(maximum likelihood)以及置信區間(confidence interval)這樣的東西,你從名字就可以看出來他們關心的就是我有多大把握去圈出那個唯一的真實參數。而貝葉斯學派恰恰相反,他們關心參數空間里的每一個值,因為他們覺得我們又沒有上帝視角,怎麼可能知道哪個值是真的呢?所以參數空間里的每個值都有可能是真實模型使用的值,區別只是概率不同而已。於是他們才會引入先驗分布(prior distribution)和後驗分布(posterior distribution)這樣的概念來設法找出參數空間上的每個值的概率。最好詮釋這種差別的例子就是想像如果你的後驗分布是雙峰的,頻率學派的方法會去選這兩個峰當中較高的那一個對應的值作為他們的最好猜測,而貝葉斯學派則會同時報告這兩個值,並給出對應的概率。

如果從概率的角度看,貝葉斯學派的想法其實更為自然,這也是為什麼貝葉斯學派的產生遠早於頻率學派(去年是貝葉斯250周年)。但是貝葉斯方法本身有很多問題,比如當先驗選的不好或者模型不好的時候你後驗分布的具體形式可能都寫不出來,跟別說做統計推斷了。在當年電子計算機還沒發展出來的時候,對這些情況做分析幾乎是不可能的,這也就大大限制了貝葉斯方法的發展。而頻率學派主要使用最優化的方法,在很多時候處理起來要方便很多。所以在頻率學派產生後就快速地佔領了整個統計領域。直到上世紀90年代依靠電子計算機的迅速發展,以及抽樣演算法的進步(Metropolis-hastings, Gibbs sampling)使得對於任何模型任何先驗分布都可以有效地求出後驗分布,貝葉斯學派才重新回到人們的視線當中。就現在而言,貝葉斯學派日益受到重視當然是有諸多原因的,所以這並不意味這頻率學派就不好或者不對。兩個學派除了在參數空間的認知上有區別以外,方法論上都是互相借鑒也可以相互轉化的。當代學術領域批評的最多的僅僅是頻率學派里的Hypothesis testing的問題,尤其是對於p-value的誤用造成了很多問題,最近有一個心理學雜誌BASP也已經禁用了Hypothesis testing (Psychology journal bans P values : Nature News Comment)。 不過這只是Hypothesis testing這種研究方法本身的問題(testing是Fisher自己腦補出來的方法,confidence interval是Neyman提出來相對應的方法)。對應於Hypothesis testing,貝葉斯學派有自己的一套方法稱為 Bayes factor。雖然Bayes factor本身比p-value要合理很多(個人見解),但是我並不覺得單靠Bayes factor的方法就可以有效解決當下p-value濫用導致的問題,因為Bayes factor同樣可以導致Multiple comparisons problem。

最後說說Fiducial inference這個東西。Fisher本人是hard-core frequentist,大肆批判貝葉斯方法。但是他提出的這個東西本質上是變著花樣的貝葉斯理論。所以說Fisher其實是個大傲嬌233


1.1 引言

儘管你已是一個編程老手,但bug仍有可能在代碼中存在。於是,在實現了一段特別難的演算法之後,你決定先來一個簡單的測試用例。這個用例通過了。接著你用了一個稍微複雜的測試用例。再次通過了。接下來更難的測試用例也通過了。這時,你開始覺得也許這段代碼已經沒有bug了。

如果你這樣想,那麼恭喜你:你已經在用貝葉斯的方式思考!簡單地說,貝葉斯推斷是通過新得到的證據不斷地更新你的信念。貝葉斯推斷很少會做出絕對的判斷,但可以做出非常可信的判斷。在上面的例子中,我們永遠無法100%肯定我們的代碼是無缺陷的,除非我們測試每一種可能出現的情形,這在實踐中幾乎不可能。但是,我們可以對代碼進行大量的測試,如果每一次測試都通過了,我們更有把握覺得這段代碼是沒問題的。貝葉斯推斷的工作方式就在這裡:我們會隨著新的證據不斷更新之前的信念,但很少做出絕對的判斷,除非所有其他的可能都被一一排除。

1.1.1 貝葉斯思維

和更傳統的統計推斷不同,貝葉斯推斷會保留不確定性。乍聽起來,這像一門糟糕的統計方法,難道不是所有的統計都是期望從隨機性里推斷出確定性嗎?要協調這些不一致,我們首先需要像貝葉斯派一樣思考。
在貝葉斯派的世界觀中,概率是被解釋為我們對一件事情發生的相信程度,換句話說,這表明了我們對此事件發生的信心。事實上,我們一會兒就會發現,這就是概率的自然的解釋。
為了更清晰地論述,讓我們看看來自頻率派關於概率的另一種解釋。頻率派是更古典的統計學派,他們認為概率是事件在長時間內發生的頻率。例如,在頻率派的哲學語境里,飛機事故的概率指的是長期來看,飛機事故的頻率值。對許多事件來說,這樣解釋概率是有邏輯的,但對某些沒有長期頻率的事件來說,這樣解釋是難以理解的。試想一下:在總統選舉時,我們經常提及某某候選人獲選的概率,但選舉本身只發生一次!頻率論為了解決這個問題,提出了「替代現實」的說法,從而用在所有這些替代的「現實」中發生的頻率定義了這個概率。

貝葉斯派,在另一方面,有更直觀的方式。它把概率解釋成是對事件發生的信心。簡單地說,概率是觀點的概述。某人把概率0賦給某個事件的發生,表明他完全確定此事不會發生;相反,如果賦的概率值是1,則表明他十分肯定此事一定會發生。0和1之間的概率值可以表明此事可能發生的權重。這個概率定義可以和飛機事故概率一致。如果除去所有外部信息,一個人對飛機事故發生的信心應該等同於他了解到的飛機事故的頻率。同樣,貝葉斯概率的定義也能適用於總統選舉,並且使得概率(信心)更加有意義:你對候選人A獲勝的信心有多少?

請注意,在之前,我們提到每個人都可以給事件賦概率值,而不是存在某個唯一的概率值。這很有趣,因為這個定義為個人之間的差異留有餘地。這正和現實天然契合:不同的人即便對同一事件發生的信心也可以有不同的值,因為他們擁有不同的信息。這些不同並不說明其他人是錯誤的。考慮下面的例子。

1.在拋硬幣中我們同時猜測結果。假設硬幣沒有被做手腳,我和你應該都相信正反面的概率都是0.5。但假設我偷看了這個結果,不管是正面還是反面,我都賦予這個結果1的概率值。現在,你認為正面的概率是多少?很顯然,我額外的信息(偷看)並不能改變硬幣的結果,但使得我們對結果賦予的概率值不同了。

2.你的代碼中也許有一個bug,但我們都無法確定它的存在,儘管對於它是否存在我們有不同的信心。

3.一個病人表現出xyz三種癥狀,有很多疾病都會表現出這三種癥狀,但病人只患了一種病。不同的醫生對於到底是何種疾病導致了這些癥狀可能會有稍微不同的看法。

對我們而言,將對一個事件發生的信心等同於概率是十分自然的,這正是我們長期以來同世界打交道的方式。我們只能了解到部分的真相,但可以通過不斷收集證據來完善我們對事物的觀念。與此相對的是,你需要通過訓練才能夠以頻率派的方式思考事物。

為了和傳統的概率術語對齊,我們把對一個事件A發生的信念記為P(A),這個值我們稱為先驗概率。

偉大的經濟學家和思想者John Maynard Keynes曾經說過(也有可能是杜撰的):「當事實改變,我的觀念也跟著改變,你呢?」這句名言反映了貝葉斯派思考事物的方式,即隨著證據而更新信念。甚至是,即便證據和初始的信念相反,也不能忽視了證據。我們用P(A|X)表示更新後的信念,其含義為在得到證據X後,A事件的概率。為了和先驗概率相對,我們稱更新後的信念為後驗概率。考慮在觀察到證據X後,以下例子的後驗概率。

1.P(A):硬幣有50%的幾率是正面。P(A|X):你觀察到硬幣落地後是正面,把這個觀察到的信息記為X,那麼現在你會賦100%的概率給正面,0%的概率給負面。

2.P(A):一段很長很複雜的代碼可能含有bug。P(A|X):代碼通過了所有的X測試;現在代碼可能仍然有bug,不過這個概率現在變得非常小了。

3.P(A):病人可能有多種疾病。P(A|X):做了血液測試之後,得到了證據X,排除了之前可能的一些疾病。

在上述例子中,即便獲得了新的證據,我們也並沒有完全地放棄初始的信念,但我們重新調整了信念使之更符合目前的證據(也就是說,證據讓我們對某些結果更有信心)。

通過引入先驗的不確定性,我們事實上允許了我們的初始信念可能是錯誤的。在觀察數據、證據或其他信息之後,我們不斷更新我們的信念使得它錯得不那麼離譜。這和硬幣預測正相反,我們通常希望預測得更準確。

1.1.2 貝葉斯推斷在實踐中的運用

如果頻率推斷和貝葉斯推斷是一種編程函數,輸入是各種統計問題,那麼這兩個函數返回的結果可能是不同的。頻率推斷返回一個估計值(通常是統計量,平均值是一個典型的例子),而貝葉斯推斷則會返回概率值。

例如,在代碼測試的例子中,如果你問頻率函數:「我的代碼通過了所有測試,它現在沒有bug了嗎?」頻率函數會給出「yes」的回答。但如果你問貝葉斯函數:「通常我的代碼有bug,現在我的代碼通過了所有測試,它是不是沒有bug了?」貝葉斯函數會給出非常不同的回答,它會給出「yes」和「no」的概率,例如「『yes』的概率是80%,『no』的概率是20%。」

這和頻率函數返回的結果是非常不同的。注意到貝葉斯函數還有一個額外的信息——「通常的我的代碼有bug」,這個參數就是先驗信念。把這個參數加進去,貝葉斯函數會將我們的先驗概率納入考慮範圍。通常這個參數是可省的,但我們將會發現預設它會產生什麼樣的結果。

加入證據 當我們添加更多的證據,初始的信念會不斷地被「洗刷」。這是符合期望的,例如如果你的先驗是非常荒謬的信念類似「太陽今天會爆炸」,那麼你每一天都會被打臉,這時候你希望某種統計推斷的方法會糾正初始的信念,或者至少讓初始的信念變得不那麼荒謬。貝葉斯推斷就是你想要的。

N表示我們擁有的證據的數量。如果N趨於無窮大,那麼貝葉斯的結果通常和頻率派的結果一致。因此,對於足夠大的N,統計推斷多多少少都還是比較客觀的。另一方面,對於較小的N,統計推斷相對而言不穩定,而頻率派的結果有更大的方差和置信區間。貝葉斯在這方面要勝出了。通過引入先驗概率和返回概率結果(而不是某個固定值),我們保留了不確定性,這種不確定性正是小數據集的不穩定性的反映。

有一種觀點認為,對於大的N來說,兩種統計技術是無差別的,因為結果類似,並且頻率派的計算要更為簡單,因而傾向於頻率派的方法。在採納這種觀點之前,也許應該先參考Andrew Gelman的論述:

「樣本從來都不是足夠大的。如果N太小不足以進行足夠精確的估計,你需要獲得更多的數據。但當N「足夠大」,你可以開始通過劃分數據研究更多的問題(例如在民意調查中,當你已經對全國的民意有了較好的估計,你可以開始分性別、地域、年齡進行更多的統計)。N從來無法做到足夠大,因為當它一旦大了,你總是可以開始研究下一個問題從而需要更多的數據。」(參見http://andrewgelman.com/2005/07/31/n_is_never_largl.)

1.1.3 頻率派的模型是錯誤的嗎?

不。頻率方法仍然非常有用,在很多領域可能都是最好的辦法。例如最小方差線性回歸、LASSO回歸、EM演算法,這些都是非常有效和快速的方法。貝葉斯方法能夠在這些方法失效的場景發揮作用,或者是作為更有彈性的模型而補充。

1.1.4 關於大數據

出乎意料的是,通常解決大數據預測型問題的方法都是些相對簡單的演算法。因此,我們會認為大數據預測的難點不在於演算法,而在於大規模數據的存儲和計算。(讓我們再次回顧Gelman的關於樣本大小的名言,並且提問:「我真的有大數據嗎?」)

中等規模或者更小規模的數據會使得分析變得更為困難。用類似Gelman的話說,如果大數據問題能夠被大數據方法簡單直接地解決,那麼我們應該更關注不那麼大的數據集上的問題。

1.2 我們的貝葉斯框架

我們感興趣的估計,可以通過貝葉斯的思想被解釋為概率。我們對事件A有一個先驗估計——例如,在準備測試之前,我們對代碼中的漏洞就有了一個先驗的估計。

接下來,觀察我們的證據。繼續拿代碼漏洞為例:如果我們的代碼通過了X個測試,我們會相應地調整心裡的估計。我們稱這個調整過後的新估計為後驗概率。調整這個估計值可以通過下面的公式完成,這個公式被稱為貝葉斯定理,得名於它的創立者托馬斯·貝葉斯。

{–:}P(X|A)P(A) (∝ 的意思是「與之成比例」)

上面的公式並不等同於貝葉斯推論,它是一個存在於貝葉斯推論之外的數學真理。在貝葉斯推論里它僅僅被用來連接先驗概率P(A)和更新的後驗概率P(A|X)。

1.2.1 不得不講的實例:拋硬幣

幾乎所有統計書籍都包含一個拋硬幣的實例,那我也從這個開始著手吧。假設你不確定在一次拋硬幣中得到正面的概率(劇透警告:它是50%),你認為這裡肯定是存在某個比例的,稱之為p,但是你事先並不清楚p大概會是多少。

我們開始拋硬幣,並記錄下每一次拋出的結果——正面或反面,這就是我們的觀測數據。一個有趣的問題是:「隨著收集到越來越多的數據,我們對p的推測是怎麼變化的呢?」

說得更具體一些,當面對著很少量的數據或擁有大量數據時,我們的後驗概率是怎麼樣的呢?下面,我們按照觀測到的越來越多的數據(拋硬幣數據),逐次更新我們的後驗概率圖。

在圖中我們用曲線表示我們的後驗概率,曲線越寬,我們的不確定性越大。如圖1.2.1所示,當我們剛剛開始觀測的時候,我們的後驗概率的變化是不穩定的。但是最終,隨著觀測數據(拋硬幣數據)越來越多,這個概率會越來越接近它的真實值p=0.5(圖中用虛線標出)。

注意到圖中的波峰不一定都出現在0.5那裡,當然它也沒有必要都這樣。應該明白的是我們事前並不知道p會是多少。事實上,如果我們的觀測十分的極端,比如說拋了8次只有1次結果是正面的,這種情況我們的分布會離0.5偏差很多(如果缺少先驗的知識,當出現8次反面1次正面時,你真的會認為拋硬幣結果是公平的嗎?)。隨著數據的累積,我們可以觀察到,雖然不是每個時候都這樣,但越來越多地,概率值會出現在p=0.5。

下面這個實例就簡單地從數據角度演示一下貝葉斯推斷。

圖1.2.1 後驗概率的貝葉斯變換

1.2.2 實例:圖書管理員還是農民

下面這個故事靈感來自於Daniel Kahneman的《思考,快與慢》一書,史蒂文被描述為一個害羞的人,他樂於助人,但是他對其他人不太關注。他非常樂見事情處於合理的順序,並對他的工作非常細心。你會認為史蒂文是一個圖書管理員還是一個農民呢?從上面的描述來看大多數人都會認為史蒂文看上去更像是圖書管理員,但是這裡卻忽略了一個關於圖書管理員和農民的事實:男性圖書管理員的人數只有男性農民的1/20。所以從統計學來看史蒂文更有可能是一個農民。

怎麼正確地看待這個問題呢?史蒂文實際上更有可能是一個農民還是一個圖書管理員呢?把問題簡化,假設世上只有兩種職業——圖書管理員和農民,並且農民的數量確實是圖書管理員的20倍。

設事件A為史蒂文是一個圖書管理員。如果我們沒有史蒂文的任何信息,那麼PA)=1/21=0.047。這是我們的先驗。現在假設從史蒂文的鄰居們那裡我們獲得了關於他的一些信息,我們稱它們為X。我們想知道的就是PA|X)。由貝葉斯定理得:

我們知道PA)是什麼意思,那PX|A)是什麼呢?它可以被定義為在史蒂文真的是一個圖書管理員的情況下,史蒂文的鄰居們給出的某種描述的概率,即如果史蒂文真的是一個圖書管理員,他的鄰居們將他描述為一個圖書管理員的概率。這個值很可能接近於1。假設它為0.95。

PX)可以解釋為:任何人對史蒂文的描述和史蒂文鄰居的描述一致的概率。現在這種形式有點難以理解,我們將其做一些邏輯上的改造:

P(X)=P(X and A)+P(X and ~A)

                 =P(X|A)P(A)+P(X|~A)P(~A)

其中~A表示史蒂文不是一個圖書管理員的事件,那麼他一定是一個農民。現在我們知道PX|A)和P(A),另外也可知P(~A)=1-P(A)=20/21。現在我們只需要知道P(X|~A),即在史蒂文為一個農民的情況下,史蒂文的鄰居們給出的某

種描述的概率即可。假設它為0.5,這樣,。

結合以上:

這個值並不算高,但是考慮到農民的數量比圖書管理員的數量多這麼多,這個結果也非常合理了。在圖1.2.2中,對比了在史蒂文為農民和史蒂文為圖書管理員時的先驗和後驗概率。

%matplotlib inline
from IPython.core.pylabtools import figsize
import numpy as np
from matplotlib import pyplot as plt
figsize(12.5, 4)
plt.rcParams["savefig.dpi"] = 300
plt.rcParams["figure.dpi"] = 300
 
colors = ["#348ABD", "#A60628"]
prior = [1/21., 20/21.]
posterior = [0.087,1-0.087]
plt.bar([0, .7], prior, alpha=0.70, w=0.25,
color=colors[0], label="prior distribution",
lw="3", edgecolor="#348ABD")
 
plt.bar([0+0.25, .7+0.25], posterior, alpha=0.7,
w=0.25, color=colors[1],
label="posterior distribution",
lw="3", edgecolor="#A60628")
 
plt.xticks([0.20, 0.95], ["Librarian", "Farmer"])
plt.title("Prior and posterior probabilities of Steve"s
occupation")
plt.ylabel("Probability")
plt.legend(loc="upper left");

在我們得到X的觀測值之後,史蒂文為圖書管理員的概率增加了,雖然增加的不是很多,史蒂文為農民的可能性依舊是相當大的。

這是一個關於貝葉斯推斷和貝葉斯法則的一個簡單的實例。不幸的是,除了在人工結構的情況下,要執行更加複雜的貝葉斯推斷所使用到的數學只會變得更加的複雜。在後面我們將看到執行這種複雜的屬性分析並沒有必要。首先,我們必須擴充我們的建模工具。下一章的概率分布,如果你已經對它很熟悉了,可以選擇跳過(或只是瀏覽一下),但是對於不熟悉的讀者,下一章是很有必要的。

圖1.2.2 史蒂文職業的先驗及後驗概率

1.3 概率分布

首先定義以下希臘文字的發音:

α = alpha

β = beta

λ = lambda

μ = mu

σ = sigma

τ = tau

很好。接下來正式開始講概率分布。首先快速地回憶一下什麼是概率分布。設Z為一個隨機變數,那麼就存在一個跟Z相關的概率分布函數,給定Z任何取值,它都得到一個相應的概率值。

我們把隨機變數分為3種類別。

  • Z為離散的。離散隨機變數的取值只能是在特定的列表中。像貨幣、電影收視率、投票數都是離散隨機變數。當我們將它與連續型隨機變數對比時,這個概念就比較清楚了。

  • Z為連續的。連續型隨機變數的值可以是任意精確數值。像溫度、速度和時間都是連續型變數,因為對於這些數值你可以精確到任何程度。

  • Z為混合的。混合型隨機變數的值可以為以上兩種形式,即結合了以上兩種隨機變數的形式。

1.3.1 離散情況

如果Z是離散的,那麼它的分布為概率質量函數,它度量的是當Z取值為k時的概率,用P(Z=k)表示。可以注意到,概率質量函數完完全全地描述了隨機變數Z,即如果知道Z的概率質量方程,那麼Z會怎麼表現都是可知的。下面介紹一些經常會碰到的概率質量方程,學習它們是十分有必要的。第一個要介紹的概率質量方程十分重要,設Z服從於Poisson分布:

λ被稱為此分布的一個參數,它決定了這個分布的形式。對於Poisson分布來說,λ可以為任意正數。隨著λ的增大,得到大值的概率會增大;相反地,當λ減小時,得到小值的概率會增大。λ可以被稱為Poisson分布的強度。

λ可以為任意正數不同,值k可以為任意非負整數,即k必須為0、1、2之類的值。這個是十分重要的,因為如果你要模擬人口分布,你是不可以假設有4.25個或是5.612個人的。

如果一個變數Z存在一個Poisson質量分布,我們可以表示為:

Z~Poi(λ)

Poisson分布的一個重要性質是:它的期望值等於它的參數。即:

E[Z|λ]=λ

這條性質以後經常會被用到,所以記住它是很有用的。在圖1.3.1中,展示了不同λ取值下的概率質量分布。首先值得注意的是,增大λ的取值,k取大值的概率會增加。其次值得注意的是,雖然x軸在15的時候截止,但是分布並沒有截止,它可以延伸到任意非負的整數。

figsize(12.5, 4)
 
import scipy.stats as stats
a = np.arange(16)
poi = stats.poisson
lambda_ = [1.5, 4.25]
colors = ["#348ABD", "#A60628"]
 
plt.bar(a, poi.pmf(a, lambda_[0]), color=colors[0],
label="$lambda = &%.1f&$" % lambda_[0], alpha=0.60,
edgecolor=colors[0], lw="3")
 
plt.bar(a, poi.pmf(a, lambda_[1]), color=colors[1],
label="$lambda = &%.1f&$" % lambda_[1], alpha=0.60,
edgecolor=colors[1], lw="3")
plt.xticks(a + 0.4, a)
plt.legend()
plt.ylabel("Probability of $k$")
plt.xlabel("$k$")
plt.title("Probability mass function of a Poisson random variable,
differing $lambda$ values");

圖1.3.1 不同λ取值情況下,Poisson隨機變數的概率質量函數

1.3.2 連續情況

對應於離散情況下的概率質量函數,連續情況下概率分布函數被稱為概率密度函數。雖然在命名上作這樣的區分看起來是沒有必要的,但是概率質量函數和概率密度函數有著本質的不同。舉一個連續型隨機變數的例子:指數密度。指數隨機變數的密度函數如下式:

fZ(z|λ)=λe-λz,z≥0

類似於Poisson隨機變數,指數隨機變數只可以取非負值。但是和Poisson分布不同的是,這裡的指數可以取任意非負值,包括非整數,例如4.25或是5.612401。這個性質使得計數數據(必須為整數)在這裡不太適用;而對於類似時間數據、溫度數據(當然是以開氏溫標計量)或其他任意對精度有要求的正數數據,它是一種不錯的選擇。圖1.3.2展示了λ取不同值時的概率密度函數。

當隨機變數Z擁有參數為λ的指數分布時,我們稱Z服從於指數分布,並記為:

Z~Exp(λ)

對指定的參數λ,指數型隨機變數的期望值為λ的逆,即

E[Z|λ]=1/λ

a = np.linspace(0, 4, 100)
expo = stats.expon
lambda_ = [0.5, 1]
 
for l, c in zip(lambda_, colors):
plt.plot(a, expo.pdf(a, scale=1./l), lw=3,
color=c, label="$lambda = &%.1f&$" % l)
plt.fill_between(a, expo.pdf(a, scale=1./l), color=c, alpha=.33)
 
plt.legend()
plt.ylabel("Probability density function at $z$")
plt.xlabel("$z$")
plt.ylim(0,1.2)
plt.title("Probability density function of an exponential random
variable, differing $lambda$ values");

圖1.3.2 不同λ取值情況下,指數分布的概率密度函數

這裡值得注意的是,概率密度方程在某一點的值並不等於它在這一點的概率。這個將會在後面講到,當然如果你對它感興趣,可以加入下面的討論:Can a probability distribution value exceeding 1 be OK?。

1.3.3 什麼是λ

這個問題可以理解為統計的動機是什麼。在現實世界,我們並不知道λ的存在,我們只能直觀地感受到變數Z,如果確定參數λ的話,那就一定要深入到整個事件的背景中去。這個問題其實很難,因為並不存在Zλ的一一對應關係。對於λ的估計有很多的設計好的方法,但因為λ不是一個可以真實觀察到的東西,誰都不能說哪種方式一定是最好的。

貝葉斯推斷圍繞著對λ取值的估計。與其不斷猜測λ的精確取值,不如用一個概率分布來描述λ的可能取值。

起初這看起來或許有些奇怪。畢竟,λ是一個定值,它不一定是隨機的!我們怎麼可能對一個非隨機變數值賦予一個概率呢?不,這樣的考慮是老舊的頻率派思考方式。如果我們把它們理解為估計值的話,在貝葉斯的哲學體系下,它們是可以被賦予概率的。因此對參數λ估計是完全可以接受的。

1.4 使用計算機執行貝葉斯推斷

接下來模擬一個有趣的實例,它是一個有關用戶發送和收到簡訊的例子。

1.4.1 實例:從簡訊數據推斷行為

你得到了系統中一個用戶每天的簡訊條數數據,如圖1.4.1中所示。你很好奇這個用戶的簡訊使用行為是否隨著時間有所改變,不管是循序漸進地還是突然地變化。怎麼模擬呢?(這實際上是我自己的簡訊數據。盡情地判斷我的受歡迎程度吧。)

figsize(12.5, 3.5)
count_data = np.loadtxt("data/txtdata.csv")
n_count_data = len(count_data)
plt.bar(np.arange(n_count_data), count_data, color="#348ABD")
plt.xlabel("Time (days)")
plt.ylabel("Text messages received")
plt.title("Did the user"s texting habits change over time?")
plt.xlim(0, n_count_data);

圖1.4.1 用戶的簡訊使用行為是否隨著時間發生改變?

在建模之前,僅僅從圖1.4.1中你能猜到什麼嗎?你能說在這一段時間內用戶行為出現了什麼變化嗎?

我們怎麼模擬呢?像前文提到的那樣,Possion隨機變數能很好地模擬這種計數類型的數據。用C__i__表示第i天的簡訊條數。

C__i__~Poi(λ)

我們不能確定參數λ的真實取值,然而,在圖1.4.1中,整個觀察周期的後期收到簡訊的幾率升高了,也可以說,λ在某些時段增加了(在前文中有提到過,當λ取大值的時候更容易得到較大的結果值。在這裡,也就是說一天收到簡訊條數比較多的概率增大了)。

怎麼用數據表示這種觀察呢?假設在觀察期的某些天(稱它為τ),參數λ的取值突然變得比較大。所以參數λ存在兩個取值:在時段τ之前有一個,在其他時段有另外一個。在一些資料中,像這樣的一個轉變稱之為轉換點:

如果實際上不存在這樣的情況,即λ1=λ2,那麼λ的先驗分布應該是均等的。

對於這些不知道的λ我們充滿了興趣。在貝葉斯推斷下,我們需要對不同可能值的λ分配相應的先驗概率。對參數λ1和λ2來說什麼才是一個好的先驗概率分布呢?前面提到過λ可以取任意正數。像我們前面見到的那樣,指數分布對任意正數都存在一個連續密度函數,這或許對模擬λi來說是一個很好的選擇。但也像前文提到的那樣,指數分布也有它自己對應的參數,所以這個參數也需要包括在我們的模型裡面。稱它為參數α

λ1~Exp(α)

λ2~Exp(α)

α被稱為超參數或者是父變數。按字面意思理解,它是一個對其他參數有影響的參數。按照我們最初的設想,α應該對模型的影響不會太大,所以可以對它進行一些靈活的設定。在我們的模型中,我們不希望對這個參數賦予太多的主觀色彩。但這裡建議將其設定為樣本中計算平均值的逆。為什麼這樣做呢?既然我們用指數分布模擬參數λ,那這裡就可以使用指數函數的期望值公式得到:

使用這個值,我們是比較客觀的,這樣做的話可以減少超參數對模擬造成的影響。另外,我也非常建議大家對上面提到的不同時段的兩個λi使用不同的先驗。構建兩個不同α值的指數分布反映出我們的先驗估計,即在整個觀測過程中,收到簡訊的條數出現了變化。

對於參數τ,由於受到雜訊數據的影響,很難為它挑選合適的先驗。我們假定每一天的先驗估計都是一致的。用公式表達如下:

τ~DiscreteUniform(1,70)

=﹥P(τ=k)=1/70

做了這麼多了,那麼未知變數的整體先驗分布情況應該是什麼樣的呢?老實說,這並不重要。我們要知道的是,它並不好看,包括很多只有數學家才會喜歡的符號。而且我們的模型會因此變得更加複雜。不管這些啦,畢竟我們關注的只是先驗分布而已。

下面會介紹PyMC,它是一個由數學奇才們建立起來的關於貝葉斯分析的Python庫。

1.4.2 介紹我們的第一板斧:PyMC

PyMC是一個做貝葉斯分析使用的Python庫。它是一個運行速度快、維護得很好的庫。它唯一的缺點是,它的說明文檔在某些領域有所缺失,尤其是在一些能區分菜鳥和高手的領域。本書的主要目標就是解決問題,並展示PyMC庫有多酷。

下面用PyMC模擬上面的問題。這種類型的編程被稱之為概率編程,對此的誤稱包括隨機產生代碼,而且這個名字容易使得使用者誤解或者讓他們對這個領域產生恐懼。代碼當然不是隨機的,之所以名字裡面包含概率是因為使用編譯變數作為模型的組件創建了概率模型。在PyMC中模型組件為第一類原語。

Cronin對概率編程有一段激動人心的描述:

「換一種方式考慮這件事情,跟傳統的編程僅僅向前運行不同的是,概率編程既可以向前也可以向後運行。它通過向前運行來計算其中包含的所有關於世界的假設結果(例如,它對模型空間的描述),但它也從數據中向後運行,以約束可能的解釋。在實踐中,許多概率編程系統將這些向前和向後的操作巧妙地交織在一起,以給出有效的最佳的解釋。

由於「概率編程」一詞會產生很多不必要的困惑,我會克制自己使用它。相反,我會簡單地使用「編程」,因為它實際上就是編程。

PyMC代碼很容易閱讀。唯一的新東西應該是語法,我會截取代碼來解釋各個部分。只要記住我們模型的組件(τλ1,λ2)為變數:

import pymc as pm
 
alpha = 1.0/count_data.mean()# Recall that count_data is the
# variable that holds our text counts.
lambda_1 = pm.Exponential("lambda_1", alpha)
lambda_2 = pm.Exponential("lambda_2", alpha)
 
tau = pm.DiscreteUniform("tau", lower=0, upper=n_count_data)

在這段代碼中,我們產生了對應於參數λ1和λ2的PyMC變數,並令他們為PyMC中的隨機變數,之所以這樣稱呼它們是因為它們是由後台的隨機數產生器生成的。為了表示這個過程,我們稱它們由random()方法構建。在整個訓練階段,我們會發現更好的tau值。

print "Random output:", tau.random(), tau.random(), tau.random()

[Output]:
 
Random output: 53 21 42

@pm.deterministic
def lambda_(tau=tau, lambda_1=lambda_1, lambda_2=lambda_2):
out = np.zeros(n_count_data) # number of data points
out[:tau] = lambda_1 # lambda before tau is lambda_1
out[tau:] = lambda_2 # lambda after (and including) tau is
# lambda_2
return out

這段代碼產生了一個新的函數lambda_,但事實上我們可以把它想像成為一個隨機變數——之前的隨機參數λ。注意,因為lambda_1、lambda_2、tau是隨機的,所以lambda_也會是隨機的。目前我們還沒有計算出任何變數。

@pm.deterministic是一個標識符,它可以告訴PyMC這是一個確定性函數,即如果函數的輸入為確定的話(當然這裡它們不是),那函數的結果也是確定的。

observation = pm.Poisson("obs", lambda_, value=count_data,
observed=True)

model = pm.Model([observation, lambda_1, lambda_2, tau])

變數observation包含我們的數據count_data,它是由變數lambda_用我們的數據產生機製得到。我們將observed設定為True來告訴PyMC這在我們的分析中是一個定值。最後,PyMC 希望我們收集所有變數信息並從中產生一個Model實例。當我們拿到結果時就會比較好處理了。

下面的代碼將在第3章中解釋,但在這裡我們展示我們的結果是從哪裡來的。可以把它想像成為一個不斷學習的過程。這裡使用的理論稱為馬爾科夫鏈蒙特卡洛(MCMC),在第3章中會給出進一步的解釋。利用它可以得到參數λ1、λ2和τ先驗分布中隨機變數的閾值。我們對這些隨機變數作直方圖,觀測他們的先驗分布。接下來,將樣本(在MCMC中我們稱之為跡)放入直方圖中。結果如圖1.4.2所示。

# Mysteri-ous code to be explained in Chapter 3. Suffice it to say,
# we will get
# 30,000 (40,000 minus 10,000) samples back.
mcmc = pm.MCMC(model)
mcmc.sample(40000, 10000)

[Output]:
[-----------------100%-----------------] 40000 of 40000 complete
in 9.6 sec

lambda_1_samples = mcmc.trace("lambda_1")[:]
lambda_2_samples = mcmc.trace("lambda_2")[:]
tau_samples = mcmc.trace("tau")[:]
 
figsize(14.5, 10)
# histogram of the samples
 
ax = plt.subplot(311)
ax.set_autoscaley_on(False)
 
plt.hist(lambda_1_samples, histtype="stepfilled", bins=30, alpha=0.85,
la-bel="posterior of $lambda_1$", color="#A60628", normed=True)
plt.legend(loc="upper left")
plt.title(r"""Posterior distributions of the parameters
$lambda_1,;lambda_2,; au$""")
plt.xlim([15, 30])
plt.xlabel("$lambda_1$ value")
plt.ylabel("Density")
 
ax = plt.subplot(312)
ax.set_autoscaley_on(False)
plt.hist(lambda_2_samples, histtype="stepfilled", bins=30, alpha=0.85,
la-bel="posterior of $lambda_2$", color="#7A68A6", normed=True)
plt.legend(loc="upper left")
plt.xlim([15, 30])
plt.xlabel("$lambda_2$ value")
plt.ylabel("Density")
 
plt.subplot(313)
w = 1.0 / tau_samples.shape[0] * np.ones_like(tau_samples)
plt.hist(tau_samples, bins=n_count_data, alpha=1,
la-bel=r"posterior of $ au$", color="#467821",
weights=w, rw=2.)
plt.xticks(np.arange(n_count_data))
plt.legend(loc="upper left")
plt.ylim([0, .75])
plt.xlim([35, len(count_data)-20])
plt.xlabel(r"$ au$ (in days)")
plt.ylabel("Probability");

圖1.4.2 參數 λ1、λ2、τ的後驗分布

1.4.3 說明

回想一下,貝葉斯方法返回一個分布。因此,我們現在有分布描述未知的λτ。我們得到了什麼?馬上,我們可以看我們估計的不確定性:分布越廣,我們的後驗概率越小。我們也可以看到參數的合理值:λ1大概為18,λ2大概是23。這兩個λ的後驗分布明顯是不同的,這表明用戶接收簡訊的行為確實發生了變化。(請參閱1.6補充說明中的正式參數。)

你還能做哪些其他的觀測呢?再看看原始數據,你是否覺得這些結果合理呢?

還要注意到λ的後驗分布並不像是指數分布,事實上,後驗分布並不是我們從原始模型中可以辨別的任何分布。但這挺好的!這是用計算機處理的一個好處。如果我們不這麼做而改用數學方式處理這個問題,將會非常的棘手和混亂。使用計算數學的方式可以讓我們不用在方便數學處理上考慮太多。

我們的分析頁返回了τ的一個分布。由於它是一個離散變數,所以它的後驗看起來和其他兩個參數有點不同,它不存在概率區間。我們可以看到,在45天左右,有50%的把握可以說用戶的行為是有所改變的。沒有發生變化,或者隨著時間有了慢慢的變化,τ的後驗分布會更加的分散,這也反映出在很多天中τ是不太好確定的。相比之下,從真實的結果中看到,僅僅有三到四天可以認為是潛在的轉折點。

1.4.4 後驗樣本到底有什麼用?

在這本書的其餘部分,我們會面對這樣一個問題,它是一個能帶領我們得到強大結果的說明。現在,用另外一個實例結束這一章。

我們會用後驗樣本回答下面的問題:在第t(0≤t≤70)天中,期望收到多少條簡訊呢?Poisson分布的期望值等於它的參數λ。因此問題相當於:在時間t中,參數λ的期望值是多少。

在下面的代碼中,令i指示後驗分布中的變數。給定某天t,我們對所有可能的λ求均值,如果 t &< τi (也就是說,如果並沒有發生什麼變化),令λi=λ1,i,否則我們令λi = λ2,i

figsize(12.5, 5)
# tau_samples, lambda_1_samples, lambda_2_samples contain
# N samples from the corresponding posterior distribution.
N = tau_samples.shape[0]
expected_texts_per_day = np.zeros(n_count_data) # number of data points
for day in range(0, n_count_data):
# ix is a bool index of all tau samples corresponding to
# the switchpoint occurring prior to value of "day."
ix = day

1.5結論

這一章介紹了頻率派和貝葉斯派對概率的解釋的差別。同時我們也學到了兩個重要的分布:Poisson分布和指數分布。這是今後我們構建更多貝葉斯模型的兩塊重要基石,就像我們在簡訊接收例子中所做的那樣。在第2章中,我們會探討更多的建模和PyMC策略。

1.6 補充說明

1.6.1 從統計學上確定兩個λ值是否真的不一樣

在簡訊接收例子中,我們直觀地觀測了λ1和λ2的先驗信息並認為它們是不同的。這很公平,畢竟先驗的位置基本離得非常遠。但如果這並不是真相,有一部分分布其實是重合的呢?我們怎麼才能讓上面的結論更加的正式呢?

一種方法就是計算出P(λ1&<λ2|data),即在獲得觀察數據的前提下,λ1的真實值比λ2小的概率。如果這個概率接近50%,那相當於拋硬幣得到的結果,這樣我們就不能確定它們是否真的不同。如果這個概率接近100%,那麼我們就能確定地說這兩個值是不同的。利用後驗中的樣本,這種計算非常簡單——我們計算λ1後驗中的樣本比λ2後驗中的樣本小的次數佔比:

print (lambda_1_samples

1.6.2 擴充至兩個轉折點

讀者們或許會對前面模型中轉折點個數的擴充,即如果不止一個轉折點會怎麼樣感興趣,或者會對只有一個轉折點的結論表示懷疑。下面我們把模型擴充至兩個轉折點(意味著會出現3個λi)。新模型跟之前的比較相像。

其中

λ1~Exp(α)

λ2~Exp(α)

λ3~Exp(α)

並且

τ1~DiscreteUniform(1,69)

τ2~DiscreteUniform(τ1,70)

我們把這個模型也編譯成代碼,跟前面的代碼看上去差不多。

lambda_1 = pm.Exponential("lambda_1", alpha)
lambda_2 = pm.Exponential("lambda_2", alpha)
lambda_3 = pm.Exponential("lambda_3", alpha)
 
tau_1 = pm.DiscreteUniform("tau_1", lower=0, upper=n_count_data-1)
tau_2 = pm.DiscreteUniform("tau_2", lower=tau_1, upper=n_count_data)
 
@pm.deterministic
def lambda_(tau_1=tau_1, tau_2=tau_2,
lamb-da_1=lambda_1, lambda_2=lambda_2, lambda_3 = lambda_3):
out = np.zeros(n_count_data) # number of data points
out[:tau_1] = lambda_1 # lambda before tau is lambda_1
out[tau_1:tau_2] = lambda_2
out[tau_2:] = lambda_3 # lambda after (and including) tau
# is lambda_2
return out
observa-tion = pm.Poisson("obs", lambda_, value=count_data,observed=True)
mod-el = pm.Model([observation, lambda_1, lambda_2, lambda_3, tau_1,
tau_2])
mcmc = pm.MCMC(model)
mcmc.sample(40000, 10000)

圖1.6.1展示了5個未知數的後驗。我們可以看到模型的轉折點大致在第45天和第47天的時候取得。對此你怎麼認為呢?我們的模型是否對數據過擬合呢?

確實,我們都可能對數據中有多少個轉折點抱有疑惑的態度。例如,我就認為一個轉折點好過兩個轉折點,兩個轉折點好過三個轉折點,以此類推。這意味著對於應該有多少個轉折點可以設置一個先驗分布並讓模型自己做決定!在對模型進行調整之後,答案是肯定的,一個轉折點確實比較適合。代碼在本章就不展示了,這裡我只是想介紹一種思想:用懷疑數據那樣的眼光審視我們的模型。

圖1.6.1 擴充後的簡訊模型中5個未知參數的後驗分布

1.7習題

1.利用 lambda_1_samples 和 lambda_2_samples,怎麼獲得參數λ1和λ2後驗分布的平均值 ?

2.計算簡訊頻率提升比例的期望值是多少。提示:需要計算 (lambda_2_samples-lambda_1_samples)/lambda_1_samples的均值。注意這個結果和(lambda_2_ samples.mean()-lambda_1_samples.mean())/ lambda_1_samples.mean()計算出來的結果是有很大區別的。

3.在τ小於45的前提下,計算λ1的均值。也就是說,在我們被告知行為的變化發生在第45天之前時,對λ1的期望會是多少? (不需要重複PyMC 那部分,只需要考慮當 tau_samples &< 45時所有可能的情況。)

1.8答案

1.計算後驗的均值(即後驗的期望值),我們只需要用到樣本和a.mean函數。

print lambda_1_samples.mean()
print lambda_2_samples.mean()

2.給定兩個數ab,相對增長可以由 (a ? b)/b給出。在我們的實例中,我們並不能確定λ1和λ2的值是多少。通過計算

(lambda_2_samples-lambda_1_samples)/lambda_1_samples

我們得到另外一個向量,它表示相對增長的後驗,如圖1.7.1所示。

relative_increase_samples = (lambda_2_samples-lambda_1_samples)
/lambda_1_samples
print relative_increase_samples

[Output]:
 
[ 0.263 0.263 0.263 0.263 ..., 0.1622 0.1898 0.1883 0.1883]

figsize(12.5,4)
plt.hist(relative_increase_samples, histtype="stepfilled",
bins=30, alpha=0.85, color="#7A68A6", normed=True,
label="posterior of relative increase")
plt.xlabel("Relative increase")
plt.ylabel("Density of relative increase")
plt.title("Posterior of relative increase")
plt.legend();

為了計算這個均值,需要用到新向量的均值:

print relative_increase_samples.mean()

[Output]:
 
0.280845247899

圖1.7.1 相對增長的後驗

3.如果已知 τ &< 45,那麼所有樣本都需要考慮到這點:

ix = tau_samples &< 45 print lambda_1_samples[ix].mean() [Output]:   17.7484086925

這本書里的第一章很詳細的解釋了這個問題,分享給你們。


本文摘自《貝葉斯推斷的哲學》

本書基於PyMC語言以及一系列常用的Python數據分析框架,如NumPy、SciPy和Matplotlib,通過概率編程的方式,講解了貝葉斯推斷的原理和實現方法。該方法常常可以在避免引入大量數學分析的前提下,有效地解決問題。書中使用的案例往往是工作中遇到的實際問題,有趣並且實用。作者的闡述也盡量避免冗長的數學分析,而讓讀者可以動手解決一個個的具體問題。通過對本書的學習,讀者可以對貝葉斯思維、概率編程有較為深入的了解,為將來從事機器學習、數據分析相關的工作打下基礎。

本書適用於機器學習、貝葉斯推斷、概率編程等相關領域的從業者和愛好者,也適合普通開發人員了解貝葉斯統計而使用。

組合推薦:《Python機器學習 預測分析核心演算法》


被頂最多的答案確實非常有趣,可是真心不忍科學被這樣曲解,就借麻將的例子說一下吧。

首先,很多人看到條件概率就當是貝葉斯是完全錯誤的,作為一個數學表達式,它只是一個被賦予定義的符號,只有當條件概率被用來定義後驗概率時才引入貝葉斯思想。

最本質的B和F的區別是,F認為概率只能衡量實驗樣本,而B認為概率不僅可以衡量樣本還可以衡量總體的參數,並且認為在概率面前這二者沒有區別;應不應有先驗分布都是其次了,能不能才是本質。

回到麻將,當遊戲一開始,樣本就出現了,根據每個人出過的牌來做推斷下一張只不過是利用了條件概率的思維,是B還是F都可以。如果真要模擬B的思維,只能是開局前,在樣本出現前(這個非常重要),對每個人的慣用策略有個假設,他愛出條,餅還是萬等等,然後再跟據他每次打的牌不斷更新你的判斷。而F可以理解成,不管因為什麼原因(人可以變換打法等等),我們無法假設他的牌風是可以被概率分布量化的,或著覺得這種對於牌風的概率化跟樣本的概率化是兩個截然不同的量化,而無法混為一談。

打麻將說到底還是決策論,如果大家有興趣,我可以從B和F兩個不同的觀點來解釋為什麼,想少輸就從F,想多贏就從B。重申一下,最高的答案只是說利用條件概率,判斷更準確,與是B還是F無關。

總之,排名第一的答案問題很大,點贊者獨立思考能力堪憂。


對於概率的解讀區別了頻率流派和貝葉斯流派。如果你不理解主觀概率就無法理解貝葉斯定律的核心思想。

首先談概率,概率這件事大家都覺得自己很熟悉, 叫你說概率的定義 , 你卻不一定說的出,我們中學課本里說概率這個東西表述是一件事發生的頻率, 或者說這叫做客觀概率。

而貝葉斯框架下的概率理論確從另一個角度給我們展開了答案, 他說概率是我們個人的一個主觀概念, 表明我們對某個事物發生的相信程度。 如同Pierre Lapalace說的: Probability theory is nothing but common sense reduced to calculation. 這正是貝葉斯流派的核心,換句話說,它解決的是來自外部的信息與我們大腦內信念的交互關係。

我們來看一下貝葉斯統計的一個有趣的案例案例:假如你是一個女生, 你在你的老公書包里發現了一個別的女人的內褲那麼他出軌的概率是多少。

稍微熟悉這個問題的人對會知道做這個題目你要先考察基率,你要把這個問題分解為幾步考慮:

1,你老公在沒有任何概率情況下出軌的概率是多少? 如果他是個天生老實巴交的程序員或者風流倜儻的CEO, 那麼顯然不該一視同仁

2,如果你老公出軌了, 那麼他有一條內褲的概率是多少, 如果他沒出軌, 出現這個情況概率有多少? 想想一般人即使出軌也不會犯那麼傻的錯誤, 會不會有沒出軌而出現內褲的狀況? 有沒有可能是某個暗戀你老公的人的陷害?

3, 根據1 和2求解最終問題,這才是擁有大學數學能力的你該做的分析。

在這裡1其實就是先驗概率P(A),而2是條件概率P(B|A), 最終得到3後驗概率P(A|B)。這三種即是貝葉斯統計的三要素。

基於條件概率的貝葉斯定律數學方程極為簡單:

A即出軌, B是內褲出現, 你得到1,2,就可以根據公式算出根據根據內褲出現判斷出軌的概率。

先驗概率在貝葉斯統計中具有重要意義,首先先驗概率即我們在取得證據之前所指定的概率P(A), 這個值通常是根據我們之前的常識,帶有一定的主觀色彩。 就像剛剛說的出軌的問題, 你的先驗概率代表了你對你男人的信心。

貝葉斯分析的思路對於由證據的積累來推測一個事物發生的概率具有重大作用, 它告訴我們當我們要預測一個事物, 我們需要的是首先根據已有的經驗和知識推斷一個先驗概率, 然後在新證據不斷積累的情況下調整這個概率。整個通過積累證據來得到一個事件發生概率的過程我們稱為貝葉斯分析。

更多內容,詳見玩轉貝葉斯分析 - 混沌巡洋艦 - 知乎專欄


沒想到被頂了這麼多,我這個答案只能算是入門級別,就是某天突然想到的一個好玩的想法而已,能幫想學好相關知識的人開個門就知足了,因為的確很反感現在很多教材一上來就直接擺定義列公式,完全不考慮零基礎學習者是否能接受。

希望想對貝葉斯有更深入了解的人看看下面的答案,會更有幫助
尤其是 @秦松雄和 @任坤的答案,真的寫的非常不錯,@Oyster Kwok 的例子也舉得非常典型。
————————————————————————————————————————


你看打麻將的時候:
只看下面有什麼牌來決策的就是頻率學派,
而不光看下面有什麼牌,還看這個牌是誰打出的,什麼時候打出的,這個人打出所有牌友什麼聯繫的,就是貝葉斯學派


比如現在你需要一個五萬才能胡牌,你看了看桌面上一個五萬都沒有,所以你想當然的認為在剩下沒有亮出的每一張牌是五萬的概率是4/N,N為剩下沒有亮出的麻將牌數。這種認為某種期望始終存在且不變的方法就是頻率學派。

但是其實某個人全程高能的打條子和餅子,而且偶然打出三萬和七萬,那麼雖然你沒有看到亮出的五萬也可以猜測他手裡至少應該有一張。但是你摸到五萬的概率不是恆定的,而是隨時根據場上的情況來變化,不斷驗證的。這種方法就是貝葉斯學派。

所以從某個角度來說,老年娛樂中心裡打麻將的大爺大媽們都是貝葉斯學派。


最實質的區別還是 在預測結果的時候:頻率方法認為真實結果由「推斷」出的真實參數決定;而貝葉斯方法則認為,真實結果是所有可能參數所給出的預測結果的期望。


Throughout our subsequent discussions, we viewed θ as an unknown parameter of the world. This view of the θ as being constant-valued but unknown is taken in frequentist statistics. In the frequentist this view of the world, θ is not random—it just happens to be unknown—and it』s our job to come up with statistical procedures (such as maximum likelihood) to try to estimate this parameter.
An alternative way to approach our parameter estimation problems is to take the Bayesian view of the world, and think of θ as being a random variable whose value is unknown. In this approach, we would specify a prior distribution p(θ) on θ that expresses our 「prior beliefs」 about the parameters. Given a training set S = {(x(i), y(i))}m,make a prediction on a new value of x, we can then compute the posterior distribution on the parameters


參考cs229


兩者區別很大,理解尚很淺顯,暫且通過未知參數的一個特點來說明。

在頻率學派中,未知參數是作為有待各種估計方法估計的未知的常數處理的,比如在推導中,	heta就被看作常數。

而Bayes統計中,	heta也有概率密度分布(probability density/mass distribution)。也就是說,除了樣本概率密度函數f(x|	heta),還有先驗概率(prior probability)pi(	heta),和後驗概率 (posterior probability)pi(	heta|x)。三者有數學關係,有時間會用 LaTeX 寫出。


從數學上來說就是一個能不能加先驗概率的問題。頻率派認為不能加,貝葉斯派認為可以加。加一個先驗概率往往有利於數學推導,即使是加一個沒有任何信息的non-informative prior也行。因此說貝葉斯派首先是一個數學上便利的方法。我相信大多數科學家對數學方法沒有信仰,哪個能解決實際問題就用哪個。

但是有些貝葉斯信徒不滿意這種純功利的解釋,而要把這種數學方法上升到方法論的高度。比如xkcd的漫畫,就是找到一個例子從而貶低頻率派:你連太陽爆炸都信啊,啊哈哈哈哈。

可惜光笑不解決問題。實際使用中無法迴避的問題是,先驗概率是怎麼來的?有些問題,比如太陽有沒有爆炸之類,有比較明確的先驗概率。而我們之所以相信這個先驗概率,無非是因為我們知道在地球誕生以來的幾十億年里太陽都沒有爆炸。我們不相信心電感應,無非是因為我們的日常生活中極少有人見過心電感應。仔細考察起來,這些先驗概率其實也是從長期觀察得來的。如果考慮到這點,頻率派和貝葉斯派就很難區分了。

更糟糕的是,科學實驗往往探索的是以前沒有探索過的新領域。很少有人去研究心電感應這種沒什麼希望的東西(也很少有人會資助這種研究)。在一個新領域,往往沒有特別公認的先驗概率,那麼怎麼辦呢?這時候往往還是使用不提供任何信息的non-informative prior。

尤其在假設檢驗的時候,貝葉斯派對p-value很不滿意。但是你總不能說,因為我相信我的結論,所以我的結論是正確的吧。那就不是科學研究了。貝葉斯派總是說,得出先驗概率要用經驗,用知識,用這用那,可是提不出一個公認的標準方法。科學工作者需要向同行證明自己的工作有效。如果沒有一個客觀公認的方法,就很難讓別人相信,因此儘管p-value存在這樣那樣的問題,科學界也很難拋棄它,最多是做一些有針對性的預防措施。

話說回來,我以為這種爭議沒有太大意義。貝葉斯作為一種數學工具很好用,尤其在利用大量計算的統計模型中非常有效,因此在近年流行很廣。但是數學應該保持數學的本色。脫離了數學去談論哪種更好,我實在看不出有太多不得了的意義。


舉一個我在學習貝葉斯統計時讓我「頓悟」的例子:可信區間與置信區間
在頻率學派下,置信區間事實上意味著:產生無窮個這樣的區間,其中約有(或說期望有)(1-alpha)cdot 100\%的區間覆蓋了真實值;
而在貝葉斯觀點下,可信區間則可以直接說(或說我基於某種信念而相信)真實值落在這個區間上的概率為(1-alpha)


頻率學派和貝葉斯學派的不同 這上面講得蠻好的:
這個區別說大也大,說小也小
往大里說,世界觀就不同,頻率派認為參數是客觀存在,不會改變,雖然未知,但卻是固定值;貝葉斯派則認為參數是隨機值,因為沒有觀察到,那麼和是一個隨機數也沒有什麼區別,因此參數也可以有分布,個人認為這個和量子力學某些觀點不謀而合。
往小處說,頻率派最常關心的是似然函數,而貝葉斯派最常關心的是後驗分布。我們會發現,後驗分布其實就是似然函數乘以先驗分布再normalize一下使其積分到1。因此兩者的很多方法都是相通的。貝葉斯派因為所有的參數都是隨機變數,都有分布,因此可以使用一些基於採樣的方法(如MCMC)使得我們更容易構建複雜模型。頻率派的優點則是沒有假設一個先驗分布,因此更加客觀,也更加無偏,在一些保守的領域(比如製藥業、法律)比貝葉斯方法更受到信任。


說明:這圖是xkcd上的…被黑的莫激動…http://xkcd.com/1132/
它們的區別:頻率學派只關注從 抽樣/實驗 的結果中提取信息,而貝葉斯學派除了關心結果之外,還會設置一個一個主觀的先驗信息,從而進行分析得到後驗信息作為最終結果。


通過先驗概率計算後驗概率,理論上貝葉斯學派利用的信息更多一些。但是貝葉斯概率有一個根本性的難點就是後驗概率太難算了,在計算機技術及MCMC方法大發展之前對於幾乎所有的實際問題壓根就算不出來。不過前途不可限量~


已經有很多統計大神寫了那麼多,我就不多啰嗦了。

關於這個問題,我也在學習。我平時幾乎不做貝葉斯的東西,對貝葉斯的理解停留在書本上,所以有什麼不對歡迎斧正。

我越來越覺著,這兩個的差別沒有我想像的那麼大。

傳統的m-estimation是一個很通用的框架,包括多數的GMM(GEE), MLE等非常多的統計模型都可以化歸為一個m-estimation。m-estimation的理念是我們要估計的參數如果可以寫成一個函數的最大值:
	heta_0=arg max_	heta E[Q(x,	heta)]
那麼我們可以通過最大化:
hat{	heta}=argmax_	heta frac{1}{N}sum_{i}Q(x_i,	heta)=argmax_	heta Q_n(	heta)
來獲得估計。比如MLE的估計就是選取Q為似然函數。

上述m-estimation應該是屬於頻率學派吧,反正不是貝葉斯學派。但是男神Han Hong 2003年在JoE上的文章讓我一下子模糊了這兩者的界限。他說我們可以這樣算以上的m-estimation:
hat{	heta}=frac{int{	heta m(	heta)exp{{nQ_n(	heta)}d	heta}}}{int{m(	heta)exp{{nQ_n(	heta)}}}d	heta}

這個式子是不是很眼熟呢?
如果Q取為似然函數,上面的估計就是極大似然估計,下面的就是貝葉斯方法了。
妙處在於,即使更一般的m-estimation,也可以像貝葉斯一樣來計算。

之前貝葉斯方法與極大似然的聯繫我是知道的,但是以上的結果,說實話,當我看到時,還是有點意外的。

如果這樣想,兩者之間的差別是不是也不是很大呢?


只有頻率方法和貝葉斯方法,沒有X派和X派....(我忘了是誰說的了)

貝葉斯那套大家都很熟悉,基本上是 Hypothesis 和 Null Hypothesis 比較,然後得出一系列準則。

而頻率方法中 Hypothesis 就沒這麼好看了,一般情況下是給定一個足夠有用的假設(光滑,int t^{beta} f(t) dt 有界) 之類,然後嘗試使用各種分解的方式確定上界。比如 Intro to Nonparameteric Estimation 開頭講 band-width 如何影響核函數估計那一部分。

雖然數學過程非常不一樣,但是很多結論是相通的。比如 uniform convergence 和 approximation error 之間的 trade-off (比如看看這個 Approximation Theory: From Taylor Polynomials to Wavelets) ,在貝葉斯派可以看成兩種model如果等權的話,他們的係數是不等權的;而頻率派可以很清楚看到 band-width 之類的如果取得過小時,uniform convergence 和 approximation error 這兩項才是構成誤差的項,於是....

雖然有時候結論是一樣的,但是背後的兩種解釋方法有什麼共通之處我沒有看清。比如為什麼 Stein"s paradox 和 貝葉斯 都能夠解釋為什麼「在數據不足時應該盡量往零點靠近」。但是我沒有理解為什喵這兩個看起來非常不一樣的數學推導能夠給出一樣的結果....

最後,喵~

最後,其實頻率派的方法也很有趣的,尤其當你看習慣了他們常用的分解函數和定上下界的手法之後。不過大量使用放縮和函數分解的結果是,在入門的時候遠遠沒有貝葉斯方法直觀,其中物理...呃,數學圖像也不太容易理解。

最後,喵~


取決於你對以下觀點的態度:
1.有假設,才能有結論(貝葉斯學派,沒有先驗概率,沒有事件獨立性模型,什麼都別提)
2.可以用頻率去猜「概率」(頻率學派),然後用這個「概率」去做推斷得到結論。也就是說,你可以對這個世界一無所知(什麼先驗概率,事件獨立性都不知道的)的情況下根據已有的事件結果預測未來的事件結果。
3.如果推斷的高可能性結果和最終實際結果相違背,貝葉斯學派會說,我事先告訴你過你發生這樣的小概率事情的概率,頻率學派會說,"Oh, 我需要修正一下我對這件事情的認識,以儘可能避免今後再出這種錯誤"(修正經驗分布)。


我想補充一點,頻率學派基於可重複抽樣的假定,而貝葉斯則依賴主觀先驗概率,這兩者都構成了統計推斷過程中的不確定性,但是其來源不一樣。貝葉斯並非認為待估計的參數是隨機的,而只是認為我們對這些未知參數的先驗認識具有不確定性。比如在物理裡邊就有用貝葉斯方法來估計物理常量,但顯然沒人會認為這些常量是隨機的(見James Berger一些講話中關於Higgs boson的部分)。


很多人能講出一大堆哲學理論來闡明這一對區別。
但我覺得,從工程師角度來講,這樣理解就夠了:
頻率 vs 貝葉斯 = P(X;w) vs P(X|w) 或 P(X,w)
你是把參數當作一個待確認係數 還是一個隨機變數。


推薦閱讀:

強大數定律和弱大數定律的本質區別?
導演風格是什麼?一個導演的風格是如何形成的?
點估計、區間估計、中心極限定理之間的聯繫?
HMM 實際應用過程中,如何確定隱含狀態數量?

TAG:數學 | 統計學 |