用貝葉斯公式計算甲箱子被選的概率(附計算過程以及代碼)

.

假設有兩個各裝了100個球的箱子,甲箱子中有70個紅球,30個綠球,乙箱子中有30個紅球,70個綠球。假設隨機選擇其中一個箱子,從中拿出一個球記下球色再放回原箱子,如此重複12次,記錄得到8次紅球,4次綠球。問題來了,你認爲被選擇的箱子是甲箱子的概率有多大?

直接用套用貝葉斯公式來計算。但必須定義清楚 A事件,B事件。
在這個題目中,令事件B爲選擇甲箱子,令事件A爲得到8紅4綠。
P(BA)P(B|A) 即爲題目所求:在得到8紅4綠的情況下,選擇的箱子是甲箱子的概率?
.

根據貝葉斯公式:P(BA)=P(AB)P(B)P(A)P(B | A)=\frac{P(A | B) P(B)}{P(A)}
先來看下選擇甲箱子的情況下,得到8紅4綠的概率爲 P(AB)P(A|B)
P(AB)=C128(70100)8(30100)4P(A|B)=C_{12}^{8}(\frac{70}{100})^{8}(\frac{30}{100})^{4}
選擇甲箱子的概率爲 P(B)P(B)
P(B)=50%P(B)=50\%
得到8紅4綠的概率爲P(A)P(A)。可以分爲兩種情況來算,一是當選擇甲箱子的情況,另一種情況是當選擇乙箱子的情況,則:
P(A)=(50%)C128(70100)8(30100)4+(50%)C128(30100)8(70100)4P(A)=(50\%) C_{12}^{8}(\frac{70}{100})^{8}(\frac{30}{100})^{4}+(50\%) C_{12}^{8}(\frac{30}{100})^{8}(\frac{70}{100})^{4}

.

綜合以上,最後根據貝葉斯公式算得:

P(BA)=P(AB)P(B)P(A)=96.73%P(B | A)=\frac{P(A | B) P(B)}{P(A)}=96.73\%
.

用代碼實現:
from scipy.special import perm, comb

c = comb(12,8)

P_AB=c*pow(0.7,8)*pow(0.3,4)
print("P(A|B)=",P_AB)

P_B=0.5
print("P(B)=",P_B)

P_A=0.5*c*(pow(0.7,8)*pow(0.3,4)+pow(0.7,4)*pow(0.3,8))
print("P(A)=",P_A)

P_BA = P_AB*P_B/P_A
print("選擇的箱子是甲箱子的概率是:P(B|A)={0:.2%}".format(P_BA))

P(A|B)= 0.2311
P(B)= 0.5
P(A)= 0.1194
選擇的箱子是甲箱子的概率是:P(B|A)= 96.74%

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章