私は現在、モデルがベルヌーイ モデルであり、事前にベータ版を持っている PyMC でモデル チェックを行おうとしています。(i) gof プロットと (ii) 事後予測 p 値の計算の両方を実行したいと考えています。
二項モデルでコードを実行していますが、ベルヌーイ モデルを機能させる正しい方法を見つけるのにかなり苦労しています。残念ながら、私が作業できる例はどこにもありません。私のコードは次のようになります。
import pymc as mc
import numpy as np
alpha = 2
beta = 2
n = 13
yes = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,0,0])
p = mc.Beta('p',alpha,beta)
surv = mc.Bernoulli('surv',p=p,observed=True,value=yes)
surv_sim = mc.Bernoulli('surv_sim',p=p)
mc_est = mc.MCMC({'p':p,'surv':surv,'surv_sim':surv_sim})
mc_est.sample(10000,5000,2)
import matplotlib.pylab as plt
plt.hist(mc_est.surv_sim.trace(),bins=range(0,3),normed=True)
plt.figure()
plt.hist(mc_est.p.trace(),bins=100,normed=True)
mc.Matplot.gof_plot(mc_est.surv_sim.trace(), 10/13., name='surv')
#here I have issues
D = mc.discrepancy(yes, surv_sim, p.trace())
mc.Matplot.discrepancy_plot(D)
私が抱えている主な問題は、discrepancy
関数の期待値を決定することです。これらは確率であるため、ここでは使用するだけp.trace()
では機能しません。どういうわけか、ここにサンプルサイズを組み込む必要がありますが、二項モデルの場合と同様の方法でそれを行うのに苦労しています. 私がgof_plot
正しく行っているかどうかもよくわかりません。
誰かがここで私を助けてくれることを願っています! ありがとう!