在 John Kruschke 的《做贝叶斯数据分析》一书(第 2 版)的第 20-21 页上,有一个贝叶斯推理的介绍性插图。我们知道球可以有四种尺寸:1、2、3和4,但是制造过程并不完美,所以经验观察的球有1.77、2.23和2.7的尺寸。
现在,假设是:
- 三个观察到的球被生产为相同标称尺寸的球,
- 这个例子中的先验对于每种球类型都是 0.25,
- 球尺寸变化的分布是正常的,并且以每种球类型的球尺寸为中心。
我们想测量这个样本最可能的标称尺寸:1、2、3 或 4。
在本书的这个阶段,这个问题仅用于展示观察数据时后验如何变化,并没有提供计算。但是,作者确实提供了准确的结果:
...有 56% 的概率是 2 号球,31% 的概率是 3 号球,11% 的概率是 1 号球,只有 2% 的概率是 4 号球。
我试图复制这个结果,但我失败了。我的逻辑如下:
我有:和:.
给定贝叶斯公式:
自从对于所有值,我可以将其分解为分母,然后取消,所以我只剩下:
对于分子,我必须计算以下内容:
例如:
这转化为 Python 为:
import numpy as np
from scipy.stats import norm
mean_2 = np.prod(norm.pdf([1.77, 2.23, 2.7], loc=2, scale=1))
所以,完整的计算应该看起来像:
mean_1 = np.prod(norm.pdf([1.77, 2.23, 2.7], loc=1, scale=1))
mean_2 = np.prod(norm.pdf([1.77, 2.23, 2.7], loc=2, scale=1))
mean_3 = np.prod(norm.pdf([1.77, 2.23, 2.7], loc=3, scale=1))
mean_4 = np.prod(norm.pdf([1.77, 2.23, 2.7], loc=4, scale=1))
posterior_2 = mean_2 / (mean_1 + mean_2 + mean_3 + mean_4)
我的假设是,它posterior_2
的值应该接近56%
John Kruschke 提到的值,但实际上接近64%
(乘以 后100
)。
我看到造成这种差异的两个原因:
- 在学习贝叶斯数据分析的早期阶段,我的逻辑有一些错误(你看到了吗?),
- 书中没有足够的信息来复制结果。
后者是可能的,因为作者没有说明这些正态分布的标准偏差值。我假设它是1
.