我在 PyMC3 中建立了一个未合并的模型:
with pm.Model() as unpooled:
# PRIORS
alpha = pm.Uniform('alpha',lower=-5,upper=5, shape=len(set(Y.values)))
beta = pm.Normal('beta',mu=0,sd=1, shape=len(set(Y.values)))
sigma = pm.Uniform('sigma',lower=0.01,upper=3)
# LIKLIHOOD
e = X['flavanoids'].values * beta[Y.values.astype(int)] + alpha[Y.values.astype(int)]
y = pm.Normal('y',mu=e, sd=sigma, observed=Y.values)
# SAMPLE AND PLOT TRACE
trace = pm.sample(2000)
我知道如果 的形状beta
为 1,我可以使用以下方法获得最大概率估计:
ppc = pm.fast_sample_posterior_predictive(trace, samples=1_0000, var_names=['beta'])
preds = ppc['beta'].mean(0)
但由于形状大于 1,我应该得到更多的 1 值。如何提取该值?