我正在尝试运行以下模型,但在编译过程中将失败:
import numpy as np
import pymc3 as pm
def sample_data(G=1, K=2):
# mean proportion ([0,1]) for each g
p_g = np.random.beta(2, 2, size=G)
# concentration around each p_g
c_g = np.random.lognormal(mean=0.5, sigma=1, size=G)
# reparameterization for standard Beta(a,b)
a_g = c_g * p_g / np.sqrt(p_g**2 + (1.-p_g)**2)
b_g = c_g*(1.-p_g) / np.sqrt(p_g**2 + (1.-p_g)**2)
# for each p_g, sample K proportions
p_gk = np.random.beta(a_g[:, np.newaxis], b_g[:, np.newaxis], size=(G, K))
return p_gk
# Data size
G = 3
K = 5
# obtain a G x K array of proportions p_gk in [0,1]
data = sample_data(G, K)
with pm.Model() as m:
# Parameters
p_g = pm.Beta('p_g', 1., 1., shape=G)
sd_g = pm.HalfNormal('sd_g', sd=1., shape=G)
# Observed proportions
p_gk = pm.Beta('p_gk', mu=p_g, sd=sd_g, shape=(G, K), observed=data)
trace = pm.sample(2000)
我是PyMC3的新手。运行现有的PyMC3示例时,我看不到这些错误。我怀疑看到这些是因为我使用的是多维格式(即(G,K)
),因为我还没有看到其他人使用此格式(我可能是对Stan熟悉)。
通常,我很难理解如何实现具有多个维度的多级模型。
知道是什么原因导致了我所看到的错误吗?
哆啦的时光机
跃然一笑
相关分类