Пытаюсь изучить PyMC, перенеся некоторые модели из книги «Выполнение байесовского анализа данных» (Крушке). Один из основных примеров (из главы 9) состоит в том, чтобы предположить, что набор монет распределяется в соответствии с p~Bern(theta)
, где тета происходит из Beta
распределения («чеканного двора») с фиксированными параметрами. Вот как я это закодировал (в 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]]
Кажется, это сработало, но мне интересно, как мне получить тета-значения для каждой монеты? Я предполагаю, что должны быть образцы, сгенерированные из апостериорного распределения для каждой монеты?