Bayesian pymc3的优化误差

Bayesian pymc3的优化误差,bayesian,pymc,multi-level,pymc3,Bayesian,Pymc,Multi Level,Pymc3,我正在尝试使用pymc3创建一个相对简单的分层贝叶斯模型。然而,我不断地得到一个错误。代码是: import numpy as np import pymc3 as pm # Example data. ncond = 4 nSubj = 40 trials = 64 N = np.repeat([trials], (ncond * nSubj)) z = np.array([45, 63, 58, 64, 58, 63, 51, 60, 59, 47, 63, 61, 60, 51, 59

我正在尝试使用pymc3创建一个相对简单的分层贝叶斯模型。然而,我不断地得到一个错误。代码是:

import numpy as np
import pymc3 as pm

# Example data.
ncond = 4
nSubj = 40
trials = 64

N = np.repeat([trials], (ncond * nSubj))
z = np.array([45, 63, 58, 64, 58, 63, 51, 60, 59, 47, 63, 61, 60, 51, 59, 45,
61, 59, 60, 58, 63, 56, 63, 64, 64, 60, 64, 62, 49, 64, 64, 58, 64, 52, 64, 64,
64, 62, 64, 61, 59, 59, 55, 62, 51, 58, 55, 54, 59, 57, 58, 60, 54, 42, 59, 57,
59, 53, 53, 42, 59, 57, 29, 36, 51, 64, 60, 54, 54, 38, 61, 60, 61, 60, 62, 55,
38, 43, 58, 60, 44, 44, 32, 56, 43, 36, 38, 48, 32, 40, 40, 34, 45, 42, 41, 32,
48, 36, 29, 37, 53, 55, 50, 47, 46, 44, 50, 56, 58, 42, 58, 54, 57, 54, 51, 49,
52, 51, 49, 51, 46, 46, 42, 49, 46, 56, 42, 53, 55, 51, 55, 49, 53, 55, 40, 46,
56, 47, 54, 54, 42, 34, 35, 41, 48, 46, 39, 55, 30, 49, 27, 51, 41, 36, 45, 41,
53, 32, 43, 33])
condition = np.repeat([0,1,2,3], nSubj)


# Specify the model in PyMC
with pm.Model() as model:
    # define the hyperparameters
    kappa = pm.Gamma('kappa', 1, 0.1)
    mu = pm.Beta('mu', 1, 1, shape=ncond)
    # define the prior
    theta = pm.Beta('theta', mu[condition] * kappa, (1 - mu[condition]) * kappa, shape=len(z))
    # define the likelihood
    y = pm.Binomial('y', p=theta, n=N, observed=z)
    start = pm.find_MAP()
    step1 = pm.Metropolis([mu])
    step2 = pm.Metropolis([theta])
    step3 = pm.NUTS([kappa])
#    samplers = [pm.Metropolis([rv]) for rv in model.unobserved_RVs]
    trace = pm.sample(10000, [step1, step2, step3], start=start, progressbar=False)
但是我一直在得到一个关于find_MAP()函数的错误。谁能向我解释一下这个错误吗

    ---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-2-c4e40b20fd5c> in <module>()
     38     # define the likelihood
     39     y = pm.Binomial('y', p=theta, n=N, observed=z)
---> 40     start = pm.find_MAP()
     41     step1 = pm.Metropolis([mu])
     42     step2 = pm.Metropolis([theta])

/Library/Python/2.7/site-packages/pymc3/tuning/starting.pyc in find_MAP(start, vars, fmin, return_raw, disp, model, *args, **kwargs)
    124                          "density. 2) your distribution logp's are " +
    125                          "properly specified. Specific issues: \n" +
--> 126                          specific_errors)
    127     mx = {v.name: np.floor(mx[v.name]) if v.dtype in discrete_types else
    128           mx[v.name] for v in model.vars}

ValueError: Optimization error: max, logp or dlogp at max have non-finite values. Some values may be outside of distribution support. max: {'mu': array([ 14.66440283,  67.64627608,  36.73991444,  -2.27146408]), 'theta': array([ -3.28858534e+02,   1.49945045e+02,  -7.02150417e+01,
         9.97352990e-01,  -7.02150417e+01,   1.49945045e+02,
        -1.50195789e+02,   5.63428376e+00,  -9.29002815e+01,
        -2.70445580e+02,   1.49945045e+02,   1.03986058e+02,
         5.63428376e+00,  -1.50195789e+02,  -9.29002815e+01,
        -3.28858534e+02,   1.03986058e+02,  -9.29002815e+01,
         5.63428376e+00,  -7.02150417e+01,   1.49945045e+02,
        -5.57301509e+01,   1.49945045e+02,   1.01682005e+00,
         9.62368437e-01,   5.63428376e+00,   9.95206871e-01,
         5.88827819e+01,  -2.08511670e+02,  -7.51688112e+00,
         9.54524715e+00,  -7.02150417e+01,   1.02401342e+00,
        -1.24386722e+02,   1.00553699e+00,   1.00113792e+00,
         1.05862921e+00,   5.88827819e+01,   9.96530636e-01,
         1.03986058e+02,  -1.66473577e+02,  -1.66473577e+02,
         1.21070195e+02,   7.06961277e+01,   1.51469750e+02,
        -1.01158381e+02,   1.21070195e+02,   1.47085125e+02,
        -1.66473577e+02,  -5.55202522e-01,  -1.01158381e+02,
         5.37160225e+01,   1.47085125e+02,  -3.00112781e+01,
        -1.66473577e+02,  -5.55202522e-01,  -1.66473577e+02,
         1.58340576e+02,   1.58340575e+02,  -3.00112781e+01,
        -1.66473577e+02,  -5.55202521e-01,  -1.87830813e+01,
        -7.63325604e+01,   1.51469750e+02,   6.56687525e+02,
         5.37160224e+01,   1.47085125e+02,   1.47085125e+02,
        -7.30815598e+01,   5.20052822e+02,   5.37160224e+01,
         5.20052822e+02,   5.37160224e+01,   7.06961278e+01,
         1.21070195e+02,  -7.30815598e+01,  -1.20799887e+01,
        -1.01158381e+02,   5.37160224e+01,   2.55349034e+01,
         2.55349034e+01,  -1.42715299e+02,   3.77924839e+01,
         4.84747986e+00,  -1.07962425e+02,  -8.33028412e+01,
         1.00157336e+02,  -1.42715299e+02,  -5.22680519e+01,
        -5.22680519e+01,  -1.27123074e+02,   4.61912845e+01,
        -1.52905863e+01,  -3.44347435e+01,  -1.42715299e+02,
         1.00157336e+02,  -1.07962425e+02,  -1.65836239e+02,
        -9.64018880e+01,   1.06636770e+02,   6.59333401e+01,
         1.19873182e+02,   8.44063494e+01,   6.60981540e+01,
         2.55349034e+01,   1.19873182e+02,   3.77924839e+01,
        -3.45990714e+01,  -1.52905863e+01,  -3.45990714e+01,
         8.91977361e+01,   5.07494024e+00,   8.91977361e+01,
         1.21864768e+02,   1.12323534e+02,   1.17572851e+02,
         1.21864768e+02,   1.12323534e+02,   1.21864768e+02,
         6.29159569e+01,   6.29159569e+01,  -1.64948241e+01,
         1.05932671e+02,   6.29159569e+01,   1.85689051e+01,
        -1.64948241e+01,   9.30151996e+01,   4.81456147e+01,
         1.12276366e+02,   4.81456147e+01,   1.05932671e+02,
         9.30151996e+01,   4.81456147e+01,  -5.32061084e+01,
         6.29159569e+01,   1.85689051e+01,   8.03463229e+01,
         7.34110211e+01,   7.34110211e+01,  -1.64948241e+01,
        -1.29160807e+02,  -1.19831995e+02,  -3.54559256e+01,
         9.50334978e+01,   6.29159569e+01,  -6.95343458e+01,
         4.81456147e+01,  -1.61402820e+02,   1.05932671e+02,
        -1.92150490e+02,   1.12276366e+02,  -3.54559256e+01,
        -1.09378401e+02,   4.37180227e+01,  -3.54559256e+01,
         9.30151996e+01,  -1.45569868e+02,   3.34881430e+00,
        -1.37632194e+02]), 'kappa': array(1399.2675885517883)} logp: array(-inf) dlogp: array([         nan,          nan,          nan,          nan,
                nan,  -0.        ,   0.        ,  -0.        ,
        64.16985826,  -0.        ,   0.        ,  -0.        ,
         0.        ,  -0.        ,  -0.        ,   0.        ,
         0.        ,   0.        ,  -0.        ,  -0.        ,
        -0.        ,   0.        ,  -0.        ,   0.        ,
        -0.        ,   0.        ,  -0.        ,   0.        ,
         0.        ,  66.50259666,   0.        ,  64.30823767,
         0.        ,  -0.        ,  -0.        ,   0.        ,
        -0.        ,   0.        ,  -0.        ,   0.        ,
         0.        ,   0.        ,   0.        ,  64.22281229,
         0.        ,  -0.        ,  -0.        ,   0.        ,
         0.        ,   0.        ,  -0.        ,   0.        ,
         0.        ,  -0.        ,  -0.        ,  -0.        ,
         0.        ,   0.        ,  -0.        ,  -0.        ,
        -0.        ,  -0.        ,   0.        ,   0.        ,
        -0.        ,  -0.        ,  -0.        ,  -0.        ,
        -0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,   0.        ,  -0.        ,   0.        ,
         0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,  -0.        ,  -0.        ,  -0.        ,
         0.        ,   0.        ,   0.        ,  -0.        ,
         0.        ,   0.        ,  -0.        ,  -0.        ,
         0.        ,  -0.        ,  -0.        ,  -0.        ,
        -0.        ,   0.        ,  -0.        ,  -0.        ,
        -0.        ,   0.        ,  -0.        ,  -0.        ,
        -0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,  -0.        ,  -0.        ,  -0.        ,
         0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,   0.        ,   0.        ,   0.        ,
         0.        ,   0.        ,   0.        ,   0.        ,   0.        ])Check that 1) you don't have hierarchical parameters, these will lead to points with infinite density. 2) your distribution logp's are properly specified. Specific issues: 
mu.logp bad: -inf
theta.dlogp bad at idx: (array([160, 161, 162, 163, 164]),) with values: [ nan  nan  nan  nan  nan]
theta.logp bad: -inf
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
38#定义可能性
39 y=pm.二项式('y',p=θ,n=n,观测值=z)
--->40开始=下午。查找地图()
41步骤1=下午大都市([mu])
42步骤2=下午大都市([θ])
/find_MAP中的Library/Python/2.7/site-packages/pymc3/tuning/starting.pyc(start、vars、fmin、return_raw、disp、model、*args、**kwargs)
124“密度。2)您的分布日志是”+
125“正确指定。特定问题:\n”+
-->126个特定的错误)
127 mx={v.name:np.floor(mx[v.name]),如果v.dtype为离散类型,则为其他类型
model.vars}中v的128 mx[v.name]
ValueError:优化错误:max、logp或dlogp在max时具有非有限值。某些值可能不在分发支持范围内。最大:{'mu':数组([14.66440283,67.64627608,36.73991444,-2.27146408]),'theta':数组([-3.28858534e+02,1.49945045e+02,-7.02150417e+01,
9.97352990e-01,-7.02150417e+01,1.49945045e+02,
-1.50195789e+02,5.63428376e+00,-9.29002815e+01,
-2.70445580e+02、1.49945045e+02、1.03986058e+02、,
5.63428376e+00,-1.50195789e+02,-9.29002815e+01,
-3.28858534e+02,1.03986058e+02,-9.29002815e+01,
5.63428376e+00,-7.02150417e+01,1.49945045e+02,
-5.57301509e+01、1.49945045e+02、1.01682005e+00、,
9.62368437e-01、5.63428376e+00、9.95206871e-01、,
5.88827819e+01,-2.08511670e+02,-7.51688112e+00,
9.54524715e+00,-7.02150417e+01,1.02401342e+00,
-1.24386722e+02、1.00553699e+00、1.00113792e+00、,
1.05862921e+00、5.88827819e+01、9.96530636e-01、,
1.03986058e+02,-1.66473577e+02,-1.66473577e+02,
1.21070195e+02、7.06961277e+01、1.51469750e+02、,
-1.01158381e+02、1.21070195e+02、1.47085125e+02、,
-1.66473577e+02,-5.55202522e-01,-1.01158381e+02,
5.37160225e+01,1.47085125e+02,-3.00112781e+01,
-1.66473577e+02,-5.55202522e-01,-1.66473577e+02,
1.58340576e+02,1.58340575e+02,-3.00112781e+01,
-1.66473577e+02,-5.55202521e-01,-1.87830813e+01,
-7.63325604e+01、1.51469750e+02、6.56687525e+02、,
5.37160224e+01、1.47085125e+02、1.47085125e+02、,
-7.30815598e+01、5.20052822e+02、5.37160224e+01、,
5.20052822e+02、5.37160224e+01、7.06961278e+01、,
1.21070195e+02,-7.30815598e+01,-1.20799887e+01,
-1.01158381e+02、5.37160224e+01、2.55349034e+01、,
2.55349034e+01,-1.42715299e+02,3.77924839e+01,
4.84747986e+00,-1.07962425e+02,-8.33028412e+01,
1.00157336e+02,-1.42715299e+02,-5.22680519e+01,
-5.22680519e+01,-1.27123074e+02,4.61912845e+01,
-1.52905863e+01,-3.44347435e+01,-1.42715299e+02,
1.00157336e+02,-1.07962425e+02,-1.65836239e+02,
-9.64018880e+01、1.06636770e+02、6.59333401e+01、,
1.19873182e+02、8.44063494e+01、6.60981540e+01、,
2.55349034e+01、1.19873182e+02、3.77924839e+01、,
-3.45990714e+01,-1.52905863e+01,-3.45990714e+01,
8.91977361e+01、5.07494024e+00、8.91977361e+01、,
1.21864768e+02、1.12323534e+02、1.17572851e+02、,
1.21864768e+02、1.12323534e+02、1.21864768e+02、,
6.29159569e+01,6.29159569e+01,-1.64948241e+01,
1.05932671e+02、6.29159569e+01、1.85689051e+01、,
-1.64948241e+01、9.30151996e+01、4.81456147e+01、,
1.12276366e+02、4.81456147e+01、1.05932671e+02、,
9.30151996e+01,4.81456147e+01,-5.32061084e+01,
6.29159569e+01、1.85689051e+01、8.03463229e+01、,
7.34110211e+01,7.34110211e+01,-1.64948241e+01,
-1.29160807e+02,-1.19831995e+02,-3.54559256e+01,
9.50334978e+01,6.29159569e+01,-6.95343458e+01,
4.81456147e+01,-1.61402820e+02,1.05932671e+02,
-1.92150490e+02,1.12276366e+02,-3.54559256e+01,
-1.09378401e+02,4.37180227e+01,-3.54559256e+01,
9.30151996e+01,-1.45569868e+02,3.34881430e+00,
-1.37632194e+02),“kappa”:数组(1399.2675885517883)}logp:array(-inf)dlogp:array([nan,nan,nan,nan,
nan,-0,0.,-0,
64.16985826,  -0.        ,   0.        ,  -0.        ,
0.        ,  -0.        ,  -0.        ,   0.        ,
0.        ,   0.        ,  -0.        ,  -0.        ,
-0.        ,   0.        ,  -0.        ,   0.        ,
-0.        ,   0.        ,  -0.        ,   0.        ,
0.        ,  66.50259666,   0.        ,  64.30823767,
0.        ,  -0.        ,  -0.        ,   0.        ,
-0.        ,   0.        ,  -0.        ,   0.        ,
0.        ,   0.        ,   0.        ,  64.22281229,
0.        ,  -0.        ,  -0.        ,   0.        ,
0.        ,   0.        ,  -0.        ,   0.        ,
0.        ,  -0.        ,  -0.        ,  -0.        ,
0.        ,   0.        ,  -0.        ,  -0.        ,
-0.        ,  -0.        ,   0.        ,   0.        ,
-0.        ,  -0.        ,  -0.        ,  -0.        ,
-0.        ,   0.        ,   0.        ,   0.        ,
0.        ,   0.        ,  -0.        ,   0.        ,
0.        ,   0.        ,   0.        ,   0.        ,
0.        ,  -0.        ,  -0.        ,  -0.        ,