條件概率是指,在事件A已經發生的條件下,事件B發生的概率。
數學表達式為:
P(B|A)
它的計算公式為:P(B|A)=P(AB)/P(A)
這是高中就學過的概念,對於此大家肯定不陌生,做題估計也不下萬卷,小編最近複習這個知識點時,被一道題卡住了,後來查閱了很多資料,思忖了好幾天才想通的。先給出題目(三門問題):
你參加一個節目,很幸運獲得上臺抽獎的機會。臺上有A、B、C三個道具門,一輛最新款的特斯拉就在一扇門後,猜對了,車就可以直接開走。每個概率都是三分之一,你選了B。這時,主持人打開另外兩扇門中的一扇,空的。主持人額外送了你一次改變的機會,問你是堅持選B,還是選另一扇門?
(註:這個問題是小編在得到app潤總《五分鐘商學院》遇到的,評論區很多推導邏輯,但是都不能讓我100%信服,後來還是發現從數學上嚴格證明吧,也讓自己加深對條件概率的理解)答案先按下不表。我們先來說說另外一個例子——關於三個囚犯的問題。
這個案例出自《推斷統計》一書,聽說是清華本科的教材,題目是這樣的:
有三個囚徒,A,B,C等待判決,國王宣布,他們中的一個人將會被赦免,另兩個將會被處決。在執行的前夜,A很希望能夠知道自己的命運,於是詢問監獄長W,監獄長W雖然知道結果,但按照規定不能提前告訴犯人。W想了一下,就告訴了A,B將一定會被處決。A聽了很高興,因為他認為B一定被處決,所以自己獲釋的概率就由1/3上升到了1/2。但W認為結果並沒有改變,A被處決的概率還是1/3,請問W和A誰想的有道理?
要解決這個問題,除了知道條件概率外,還需要理解另外一個公式:貝葉斯公式。我們先來介紹。
先直接給公式:
第一個等號表明,要求事件A發生條件下事件B發生的概率,可以先求事件B發生條件下事件A發生的概率。第一個等號證明過程很簡單,利用條件概率計算公式即可:
第二個等號其實是利用了全概率公式:
這裡需要注意的是,B1,B2,...,Bn必須為一個完備事件組。
貝葉斯公式的意義是:觀點隨事實發生變化。
它的意思的是,對於一個事件發生的概率,會因為新的事實而更改。
舉一個例子,比如拋硬幣,出現正面的概率我們知道為1/2,但是如果在特定的環境下,連拋20次硬幣都是正面朝上,我們有充分的理由懷疑這枚硬幣的質地性。因此,「連拋20次硬幣都是正面朝上」這個結果就是一個事實,我們原先對「拋硬幣正面朝上概率為1/2」的觀點要因為這個新的事實發生改變,那麼更新後的概率是什麼呢,就是在原有概率(先驗概率)基礎上乘以一個似然比,這就是貝葉斯公式的含義了:
(Bi更新的概率) = (似然比)X (Bi的先驗概率)
對應貝葉斯公式為:
註:關於貝葉斯公式更多的大白話解釋,請參考小編另外一篇文章《貝葉斯思維》
為了便於加深對貝葉斯公式的理解,以一道例題說明:
一起撞車逃跑事件,一座城市只有兩種顏色的車,藍色15%,綠色85%,事發時只有一人在現場,指證是藍車,但專家分析,當時那種條件,看正確的可能性為80%,那麼肇事車為藍車的概率為多少?
定義事件A:肇事車為藍車;事件B:看到車是藍色
求:P(A|B)
P(B) = P(A)*P(B|A)+P(~A)*P(B|~A)=15%*80%+85%*20%=0.29
P(B|A) = 80%
P(A|B) = P(A)*[P(B|A)/P(B)] = 15%*(80%/0.29)= 41%
這是關鍵點在於理解「那種條件,看正確的可能性為80%」這句話,它包含了是綠車看正確的可能性和是藍車看正確的可能性。所以,看到車是藍色要包含兩部分概率(全概率):(1)是藍車看對的概率(2)不是藍車看錯的概率。於是P(B) = P(A)*P(B|A)+P(~A)*P(B|~A)=15%*80%+85%*20%=0.29
有了貝葉斯公式和全概率公式,我們可以解答三個囚犯問題了:
定義事件A:A被赦免;事件B:B被赦免;事件C:C被赦免;事件Wb:W說B被處決
求:P(A|Wb)
P(A)=P(B)=P(C)=1/3,
P(Wb|A)=1/2,
P(Wb)=P(Wb|A)*P(A)+P(Wb|B)*P(B)+P(Wb|C)*P(C)
=(1/2)*(1/3)+0*(1/3)+1*(1/3)=1/2,
P(A|Wb)=P(A)*[P(Wb|A)/P(Wb)]=(1/3)*[(1/2)/(1/2)]=1/3,
注意,此時的
P(C|Wb)=P(C)*[P(Wb|C)/P(Wb)]=(1/3)*[1/(1/2)]=2/3
因此,W想得有道理
這裡需要解釋一波:這裡要理解的關鍵點在於,監獄長說B被處決的概率,並非是B真正被處決的概率。因為監獄長必須是有條件的選擇說出B是否被處決。因為如果A被赦免,那麼從BC任意選擇一個說被處死就行,這時概率是1/2;而如果C被赦免,那麼只能說B被處決,這時的概率是1;如果B被赦免,那麼說B被處決不可能,所以概率為0.因此,P(Wb)是要通過全概率來求解。也是在這裡,A和C的平衡性被打破。理解Wb是有條件的是理解本題的關鍵。
三門問題和三個囚犯問題是一個情形的,解答思路如下:
不失一般性,設主持人打開空的門是A.
定義事件A:A門有獎;事件B:B門有獎;事件C:C門有獎;事件Wa:主持人打開A門沒獎
求:P(B|Wa)
P(A)=P(B)=P(C)=1/3
P(Wa|B)=1/2
P(Wa)=P(Wa|A)*P(A)+P(Wa|B)*P(B)+P(Wa|C)*P(C)=0*(1/3)+(1/2)*(1/3)+1*(1/3)=1/2
P(B|Wa)=P(B)*[P(Wa|B)/P(Wa)]=(1/3)*[(1/2)/(1/2)]=1/3
注意,此時的
P(C|Wa)=P(C)*[P(Wa|C)/P(Wa)]=(1/3)*[1/(1/2)]=2/3
顯然,選擇換門中獎的概率翻倍,從1/3上升到2/3。也就是,不堅持中獎概率更高。
如果數學看不懂,還可以這樣想:
你第一次選中的概率是1/3,另兩扇門加在一起是2/3。現在,主持人在另兩扇中去除了一扇沒有獎品的門,那麼2/3的概率就落在了剩下的那扇門上。所以,換,獲獎的概率從1/3增加到2/3。
如果還是不懂,那麼只能給你更多的資料自己意會了:劉潤:充電5分鐘,理性2小時
如果你還不相信,我們利用代碼復現這個過程
import random
import numpy as np
import pandas as pd
def Monty_Hall_Problem(n):
car_door = random.randint(1,n) #藏著車的門編碼
first_choice = random.randint(1,n) #第一次選擇的門
#主持人繼續遊戲,打開額外沒有車的門
if first_choice == car_door: #如果參與者第一次選中了車,那麼從剩餘沒有車的n-1扇門剔除n-2扇門
all_door = [i for i in range(1,n+1)]
all_door.remove(first_choice)
keep_door = random.choice(all_door)#保留一扇門不打開
else: #如果參與者第一次沒選中車,那麼保留有車的門
keep_door = car_door
second_choice = random.choice([first_choice,keep_door])#第二次選擇,從 first_choice 和 keep_door裡面二選一
return [first_choice,second_choice,car_door]
def get(x,y):
if x == y:
return True
else:
False
D = []
for i in range(100000):#進行10萬次模擬
li = Monty_Hall_Problem(3)
D.append(li)
D = pd.DataFrame(D,columns=['第一次選擇','第二次選擇','有車的門'])
D['是否堅持'] = D.apply(lambda row:get(row['第一次選擇'],row['第二次選擇']),axis=1)
D['是否堅持'] = D['是否堅持'].apply(lambda x: '堅持' if x == True else '不堅持')
D['是否中獎'] = D.apply(lambda row:get(row['第二次選擇'],row['有車的門']),axis=1)
D['是否中獎'] = D['是否中獎'].apply(lambda x: '中獎' if x == True else '不中獎')
table = pd.pivot_table(D[['是否堅持','是否中獎']],index=['是否堅持'],columns=['是否中獎'],aggfunc=np.alen, margins=True).fillna(0)
table['中獎率'] = table['中獎']/table['All']
table
來看看結果:
可以看到,進行10萬次的模擬,在換門的情況下,中獎概率為66.7%;堅持不換門的中獎率33.6%,兩者接近計算出來的值2/3和1/3.
參考資料:
《推斷統計(翻譯版原書第2版)》
《概率論與數理統計第二版》
https://blog.csdn.net/mousever/article/details/9242565