1

我正在尝试从 PyMC3 中的学术论文构建一个层次模型,其中包含许多参数。这是这个模型的板图:

在此处输入图像描述

当我尝试为 PyMC3 构建这个模型时,我无法给超先验 p(它是 Beta 分布并提供伯努利分布的先验)一个形状。这个的语法是什么?我的带有内联注释的错误模型说明了我的问题,如下所示:

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])
4

0 回答 0