12. 12
PyMCの使い方: 変数
#関数定義の前に@pm.deterministicを付ける
n_data_points = 5 # in CH1 we had ~70 data points
@pm.deterministic
def lambda_(tau=tau, lambda_1=lambda_1, lambda_2=lambda_2):
out = np.zeros(n_data_points)
out[:tau] = lambda_1 # lambda before tau is lambda1
out[tau:] = lambda_2 # lambda after tau is lambda2
return out
#lambdaの値をtauで切り替える。手続き的記述
http://nbviewer.ipython.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayes
ian-Methods-for-Hackers/blob/master/Chapter2_MorePyMC/MorePyMC.ipynb
Stanのtransformed
parameter blockに対応
●
決定的変数
15. 15
PyMCの使い方: sampling
#MCMCのための初期値推定
model = pm.Model( [p, assignment, taus, centers ] )
map_ = pm.MAP( model )
map_.fit() #stores the fitted variables'values in
foo.value
#MCMC
mcmc = pm.MCMC( model )
mcmc.sample( 100000, 50000 )
http://nbviewer.ipython.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesi
an-Methods-for-Hackers/blob/master/Chapter3_MCMC/IntroMCMC.ipynb
16. 16
PyMCの使い方: histogram, random
samples = [lambda_1.random() for i in range(20000)]
plt.hist(samples, bins=70, normed=True,
histtype="stepfilled")
http://nbviewer.ipython.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayes
ian-Methods-for-Hackers/blob/master/Chapter2_MorePyMC/MorePyMC.ipynb
17. 17
PyMCの使い方: traceplot
with pm.Model() as model:
x = pm.Normal('x', mu=0., sd=1)
y = pm.Normal('y', mu=pm.exp(x), sd=2., shape=(ndims, 1)) # here,
shape is telling us it's a vector rather than a scalar.
z = pm.Normal('z', mu=x + y, sd=.75, observed=zdata) # shape is
inferred from zdata
with model:
start = pm.find_MAP()
step = pm.NUTS()
trace = pm.sample(3000, step, start)
pm.traceplot(trace)
http://nbviewer.ipython.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayes
ian-Methods-for-Hackers/blob/master/Chapter2_MorePyMC/MorePyMC.ipynb