多くのパラメーターを使用して、PyMC3 の学術論文から階層モデルを構築しようとしています。このモデルのプレート図は次のとおりです。
PyMC3 用にこのモデルを構築しようとすると、ハイパープライオリティ p (ベータ分布であり、ベルヌーイ分布の事前分布を供給する) に形状を与えるのに問題があります。これの構文は何ですか?私の質問を説明するインラインコメント付きの私の間違ったモデルは以下の通りです:
with model:
kappa = pm.Normal('kappa',mu=0.0,sd=5.0,shape=g)
alpha = pm.Normal('alpha',mu=10.0,sd=9.0,shape=j)
gamma = pm.Normal('gamma',mu=0.0,sd=1.0,shape=(j,g))
#conjugate prior for Bernoulli distribution
p = pm.Beta('p',alpha=0.5,beta=0.5)
#How can p have a shape argument and be passed below?
beta = pm.Bernoulli('beta',p=p,shape=(j,g))
#alpha_idx must have shape (j,egi) but be independent
# of nlabels
alpha_idx = np.vstack([ [x]*g for x in range(j)])
#kappa_idx must have shape (j,g) but the value should be
# independent of j
kappa_idx = np.vstack([ [range(g)] * j])
#The model itself
mu = kappa[kappa_idx] + alpha[alpha_idx] + gamma*beta
#sigma term.
eps = pm.Normal('eps',mu=1,tau=100) #Can't have mu=0 here
obs = pm.Normal('obs',mu=mu,sd=eps,observed=df[data_channels])