我正在自学 PyMC,但遇到了以下问题:
我有一个模型,其参数应由连续测量确定。开始时,参数的先验是无信息的,但应在每次测量后更新(即由后验代替)。简而言之,我想用 PyMC 进行顺序更新。
考虑以下(有些构造)示例:
- 测量一:10道题,9道正确答案
- 测量 2:5 个问题,3 个正确答案
当然,这可以用 beta/二项式共轭先验分析解决,但这不是重点:)
或者,可以将两个测量值组合为 n=15 和 k=12。然而,这太简单了。为了教育目的,我想采取艰苦的方式。
我在这个答案中找到了一个解决方案,其中新的先验是从后验中采样的。这几乎是我想要的,但是对先验的采样感觉有点混乱,因为结果取决于样本数量和其他设置。
我尝试的解决方案将测量和先验分别放在一个模型中,如下所示:
n1, k1 = 10, 9
n2, k2 = 5, 3
theta1 = pymc.Beta('theta', alpha=1, beta=1)
outcome1 = pymc.Binomial('outcome1', n=n1, p=theta1, value=k1, observed=True)
theta2 = ? # should be the posterior of theta1
outcome2 = pymc.Binomial('outcome2', n=n2, p=theta2, value=k2, observed=True)
我怎样才能得到theta1
作为先验的后验theta2
?这甚至可能吗,还是我只是表现出对贝叶斯统计的终极无知?