メインコンテンツへスキップ
見出し画像

書記が数学やるだけ#588 ガンマポアソンモデルのベイズ統計

    前回の続き。


    問題

    スクリーンショット 2022-10-06 7.50.38


    説明

    スクリーンショット 2022-10-06 7.51.01


    解答

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

    数学やるだけ解答#588_page-0001


    前回同様に実装してみる。

    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()
    画像4


    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)
    スクリーンショット 2022-10-06 8.03.12


    トレースプロットを出力する。確かに計算で求めたものに近い。

    az.plot_trace(trace)
    plt.figure()
    画像6


    az.plot_posterior(trace)
    画像7


    ここまでで,手計算でもできる簡単なモデルを扱ってきた。


    本記事のもくじはこちら:


    あなたへのおすすめ