书中第十二章举了两个概率问题,一个是患病概率,第二个是红篮球箱子选择概率问题。
我在文章《从贝叶斯定理说开去》(http://kesalin.github.io/blog/2014/10/21/bayes-rule/)中对解决这个问题的贝叶斯定理作了详细介绍与说明,并对红篮球箱子选择概率问题做了详细的解答,有兴趣的朋友可以看看。
下面贴出红篮球箱子选择概率问题的分析过程:
=======================================================
刚开始选择甲乙两箱子的先验概率都是50%,因为是随机二选一(这是贝叶斯定理二选一的特殊形式)。即有:
P(甲) = 0.5, P(乙) = 1 - P(甲);
这时在拿出一个球是红球的情况下,我们就应该根据这个信息来更新选择的是甲箱子的先验概率:
P(甲|红球1) = P(红球|甲) × P(甲) / (P(红球|甲) × P(甲) + (P(红球|乙) × P(乙)))
P(红球|甲):甲箱子中拿到红球的概率
P(红球|乙):乙箱子中拿到红球的概率
因此在出现一个红球的情况下,选择的是甲箱子的先验概率就可被修正为:
P(甲|红球1) = 0.7 × 0.5 / (0.7 × 0.5 + 0.3 × 0.5) = 0.7
即在出现一个红球之后,甲乙箱子被选中的先验概率就被修正为:
P(甲) = 0.7, P(乙) = 1 - P(甲) = 0.3;
如此重复,直到经历8次红球修正(概率增加),4此绿球修正(概率减少)之后,选择的是甲箱子的概率为:96.7%。
我写了一段 Python 代码来解这个问题:
def bayesFunc(pIsBox1, pBox1, pBox2):
return (pIsBox1 * pBox1)/((pIsBox1 * pBox1) + (1 - pIsBox1) * pBox2)
def redGreenBallProblem():
pIsBox1 = 0.5
# consider 8 red ball
for i in range(1, 9):
pIsBox1 = bayesFunc(pIsBox1, 0.7, 0.3)
print " After red %d > in 甲 box: %f" % (i, pIsBox1)
# consider 4 green ball
for i in range(1, 5):
pIsBox1 = bayesFunc(pIsBox1, 0.3, 0.7)
print " After green %d > in 甲 box: %f" % (i, pIsBox1)
redGreenBallProblem()
在这个调查问题里面,8次红球与4次绿球出现的顺序并不重要,因为红球的出现总是使选择的是甲箱子的概率增加,而绿球的出现总是减少。因此,为了简化编程,我将红球出现的情况以及绿球出现的情况摆在一起了。
程序运行结果如下:
不断修正的选择的是甲箱子的先验概率
After red 1 > in 甲 box: 0.700000
After red 2 > in 甲 box: 0.844828
After red 3 > in 甲 box: 0.927027
After red 4 > in 甲 box: 0.967365
After red 5 > in 甲 box: 0.985748
After red 6 > in 甲 box: 0.993842
After red 7 > in 甲 box: 0.997351
After red 8 > in 甲 box: 0.998863
After green 1 > in 甲 box: 0.997351
After green 2 > in 甲 box: 0.993842
After green 3 > in 甲 box: 0.985748
After green 4 > in 甲 box: 0.967365
从程序运行结果来看,很明显可以看到红球的出现是增加选择甲箱子的概率,而绿球则相反。
=======================================================
对书中提到的贝叶斯定理的介绍与分析
|
> 我来回应