Bayesian 具有PyMC3的一般混合模型

Bayesian 具有PyMC3的一般混合模型,bayesian,pymc3,mixture-model,Bayesian,Pymc3,Mixture Model,我是PyMC3新手,我一直在尝试使用以下代码创建独立泊松的混合: import pymc3 as pm import numpy as np from pymc3.distributions.continuous import Uniform from pymc3.distributions.discrete import Poisson from pymc3.distributions.mixture import Mixture from pymc3 import Deterministic

我是PyMC3新手,我一直在尝试使用以下代码创建独立泊松的混合:

import pymc3 as pm
import numpy as np
from pymc3.distributions.continuous import Uniform
from pymc3.distributions.discrete import Poisson
from pymc3.distributions.mixture import Mixture
from pymc3 import Deterministic

# Bayesian non-parametric histogram comparison
def bayesian_nphist(bins_1, bins_2):

    # n equals m anyway
    m = len(bins_1)
    n = len(bins_2)

    with pm.Model():               
        beta = Uniform('beta', lower=0, upper=np.mean(np.append(bins_1, bins_2)) * 2, shape=m)
        eta = Uniform('eta', lower=0, upper=np.mean(bins_1) * 2, shape=m)
        gamma = Uniform('gamma', lower=0, upper=np.mean(bins_2) * 2, shape=n)

        pi_1 = Uniform('pi_1', lower=0, upper=1)
        pi_2 = Deterministic('pi_2', 1 - pi_1)

        m1 = Poisson.dist(mu=beta, shape=[m, 1])
        n1 = Poisson.dist(mu=beta, shape=[n, 1])

        m2 = Poisson.dist(mu=eta, shape=[m, 1])
        n2 = Poisson.dist(mu=gamma, shape=[n, 1])

        Mixture('mixture_M', [pi_1, pi_2], [m1, m2], observed=bins_1)
        Mixture('mixture_N', [pi_1, pi_2], [n1, n2], observed=bins_2)

        start = pm.find_MAP()
        step = pm.NUTS(state=start)
        trace = pm.sample(5000, step=step, progressbar=True)

        pm.traceplot(trace)
基本上,这是一种比较直方图的非参数方法,使用多项式分布是直方图的非参数模型,并且多项式可以建模为一组独立的泊松变量

不知怎的,我设法得到了这个错误:

ValueError:输入维度不匹配。(输入[0]。形状[1]=2,输入[1]。形状[1]=14)

在线: 混合物('Mixel_M',[pi_1,pi_2],[m1,m2],观察值=料仓1)

当使用bins_1和bins_2作为(14,1)整数数组运行时,n=m=14。我打印出了不同变量的形状,我相信它们是匹配的。我是否误解了PYMC3中的混合物是如何工作的?提前谢谢