
書記が数学やるだけ#588 ガンマポアソンモデルのベイズ統計
前回の続き。
問題

説明

解答
最尤推定量に比べ,ベイズ統計量は事前分布の分だけ小さく見積もっていることがわかる。

前回同様に実装してみる。
import pymc3 as pm
import arviz as az
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
plt.style.use('seaborn-darkgrid')事前分布と事後分布の比較。
x = np.linspace(start=0.0, stop=6.0, num=250)
#事前分布
a1 = 2
b1 = 1
density1 = stats.gamma.pdf(x, a=a1, scale = b1)
#事後分布
a2=22
b2=1/6
density2 = stats.gamma.pdf(x, a=a2, scale = b2)
plt.plot(x, density1)
plt.plot(x, density2)
plt.show()
PyMC3を実行する。
#データ
data = [3,7,1,4,5]
with pm.Model() as model:
#事前分布
theta = pm.Gamma('theta', alpha=2, beta=1)
#標本
y = pm.Poisson('y', mu=theta, observed=data)
trace = pm.sample(1000)要約値を確認する。
az.summary(trace)
トレースプロットを出力する。確かに計算で求めたものに近い。
az.plot_trace(trace)
plt.figure()
az.plot_posterior(trace)
ここまでで,手計算でもできる簡単なモデルを扱ってきた。
本記事のもくじはこちら: