用贝叶斯公式计算甲箱子被选的概率(附计算过程以及代码)

.

假设有两个各装了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%

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