我使用PYMC3拟合了一个双组分混合模型,并希望从后验模型中取样
我可以使用pm.sample\u posterior\u predictive()很好地执行此操作,但是当我尝试使用pm.fast\u sample\u posterior\u predictive()执行此操作时,我收到以下值错误:
ValueError: input operand has more dimensions than allowed by the axis remapping
我不确定这是为什么,也无法在PYMC3文档中找到原因
代码如下:
with pm.Model() as model:
alpha_mu = 1.0 / y.mean()
lam1 = pm.Exponential('lam1', lam=1)
lam2 = pm.Exponential('lam2', lam=2)
pois1 = pm.Poisson.dist(mu=lam1)
pois2 = pm.Poisson.dist(mu=lam2)
w = pm.Dirichlet('w', a=np.array([1, 1]))
mix = pm.Mixture('mix', w=w, comp_dists = [pois1, pois2], observed=y)
# optimization
mean_field = pm.fit(n=10000, obj_optimizer=pm.adagrad(learning_rate=0.1))
trace = mean_field.sample(1000)
# plot trace
pm.traceplot(trace,varnames=['lam1','lam2','w'])
plt.show()
# plot Preditive Posterior Check
ppc = pm.fast_sample_posterior_predictive(trace, samples=len(y))
感谢您的帮助
目前没有回答
相关问题 更多 >
编程相关推荐