【发布时间】:2019-07-07 15:32:38
【问题描述】:
假设我们将一枚有偏差的硬币扔了 8 次(我们不知道它有多大偏差),到目前为止,我们记录了 5 个正面 (H) 到 3 个反面 (T)。接下来的 3 次投掷都是反面的概率是多少?换句话说,我们想知道在第 11 次投掷后出现 5H 和 6T 的预期概率。
我想使用 pyMC3 构建一个 MCMC 仿真模型来找到贝叶斯解决方案。针对这个问题,贝叶斯方法中也有一个解析解。因此,我将能够比较从模拟、分析方法以及经典最常见方法得出的结果。让我简要解释一下到目前为止我能做什么:
- 最常见的解决方案:
如果我们考虑单次投掷的概率: E(T) = p = (3/8) = 0,375 那么,最终的答案是 E({T,T,T}) = p^3 = (3/8)^3 = 0,052。
2.1。贝叶斯解析解法:
请假设未知参数“p”代表硬币的偏差。 如果我们考虑单次投掷的概率: E(T) = Integral0-1[p * P(p | H = 5, T = 3) dp] = 0,400(我经过一些代数运算计算了结果) 同样,最终的答案是: E({T,T,T}) = Integral0-1[p^3 * P(p | H = 5, T = 3) dp] = 10/11 = 0,909。
2.2。使用 MCMC 模拟的贝叶斯解决方案: 当我们考虑单次投掷的概率时,我在pyMC3中建立了如下模型:
Head: 0
Tail: 1
data = [0, 0, 0, 0, 0, 1, 1, 1]
import pymc3 as pm
with pm.Model() as coin_flipping:
p = pm.Uniform(‘p’, lower=0, upper=1)
y = pm.Bernoulli(‘y’, p=p, observed=data)
trace = pm.sample(1000)
pm.traceplot(trace)
运行此代码后,我得到后验平均值为 E(T) =0,398,这与解析解 (0,400) 的结果非常接近。到目前为止我很高兴,但这不是最终的答案。我需要一个模拟 E({T,T,T}) 概率的模型。如果有人在这一步上帮助我,我将不胜感激。
【问题讨论】:
标签: python bayesian pymc3 mcmc