PyMC 中单个薄荷示例中的多个硬币

Multiple Coins from Single Mint Example in PyMC

尝试通过从书中迁移一些模型来学习 PyMC "Doing Bayesian Data Analysis" (Kruschke)。一个基本示例(来自第 9 章)是假设一组硬币根据 p~Bern(theta) 分布,其中 theta 来自具有固定参数的 Beta 分布("mint")。这是我的编码方式(在 PyMC2 中):

import pymc as pm
import numpy as np
from matplotlib import pyplot as plt
import seaborn as sbn
from pymc.Matplot import plot as mcplot

from pymc import Bernoulli, Beta, Gamma

flips = [[True, False, False, False],
         [False, False, False, True],
         [True, False, False, False],
         [False, False, False, False]]

mint = Beta('mint', alpha=2, beta=2)

coin0 = Bernoulli('coin0', p=mint, value=flips[0], observed=True)
coin1 = Bernoulli('coin1', p=mint, value=flips[1], observed=True)
coin2 = Bernoulli('coin2', p=mint, value=flips[2], observed=True)
coin3 = Bernoulli('coin3', p=mint, value=flips[3], observed=True)

mcmc = pm.MCMC([mint, coin0, coin1, coin2, coin3])
mcmc.sample(iter=10000, burn=1000)

mcmc.summary()
mint:

    Mean             SD               MC Error        95% HPD interval
    ------------------------------------------------------------------
    [[ 0.253]]       [[ 0.096]]       [[ 0.002]]       [ 0.074  0.439]


    Posterior quantiles:

    2.5             25              50              75             97.5
     |---------------|===============|===============|---------------|
    [[ 0.089]]       [[ 0.183]]      [[ 0.242]]     [[ 0.318]]    [[ 0.46]]

这似乎奏效了,但我想知道如何获得每个硬币的 theta 值?我假设应该有每个硬币的后验分布生成的样本?

不确定 theta 是什么意思,因为您的模型中没有 theta。您指的是特定硬币的概率(此处用 mint 表示)吗?您为所有硬币指定了一个概率,而不是 4 个概率。尝试将您的 mint 参数修改为:

mint = Beta('mint', alpha=2, beta=2, size=4)

这将指定大小为 4 的向量值随机指标。