本节书摘来异步社区《贝叶斯思维:统计建模的Python学习法》一书中的第2章,第2.2节,作者:【美】Allen B. Downey,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.2 曲奇饼问题
在贝叶斯定理的语境下,可以很自然地使用一个Pmf映射每个假设和对应的概率。
在曲奇饼问题里面,该假设是B1和B2。在Python中可以使用字符串来表示它们:
pmf = Pmf()
pmf.Set('Bowl1',0.5)
pmf.Set('Bowl2',0.5)```
这一分布包含了对每个假设的先验概率,称为先验分布。
要更新基于新数据(拿到一块香草曲奇饼)后的分布,我们将先验分别乘以对应的似然度。
从碗1拿到香草曲奇饼的可能性是3/4,碗2的可能性是1/2。
pmf.Mult('Bowl1',0.75)
pmf.Mult('Bowl2',0.5)`
如你所愿,Mult将给定假设的概率乘以已知的似然度。
更新后的分布还没有归一化,但由于这些假设互斥且构成了完全集合(意味着完全包含了所有可能假设),我们可以进行重新归一化如下:
pmf.Normalize()```
其结果是一个包含每个假设的后验概率分布,这就是所说的后验分布。
最后,我们可以得到假设碗1的后验概率如下:
print pmf.Prob('Bowl 1')`
答案是0.6。