Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pymc3:Dirichlet先验参数的观测值_Pymc3 - Fatal编程技术网

Pymc3:Dirichlet先验参数的观测值

Pymc3:Dirichlet先验参数的观测值,pymc3,Pymc3,我写了一些小的pymc3代码,但不起作用 import pymc3 def create_model_pymc(data): with pymc3.Model() as model: k = 3 #discussion about conjugate prior of a dirichlet are not so common see http://andrewgelman.com/2009/04/29/conjugate_prior/

我写了一些小的pymc3代码,但不起作用

import pymc3

def create_model_pymc(data):
    with pymc3.Model() as model:
        k = 3
        #discussion about conjugate prior of a dirichlet are not so common see http://andrewgelman.com/2009/04/29/conjugate_prior/
        #u = pymc3.Uniform("u", lower=.1, upper=data.max()+1., observed=data, shape=k)
        u = pymc3.Exponential('u', 1./10, observed=data, shape=k)
        p = pymc3.Dirichlet('p', a=u, shape=k)
        c = pymc3.Categorical('c', p=p)
    return model

alpha_posterior = np.array([10., 3., 4.])
model = create_model_pymc(alpha_posterior)

with model:
    step = pymc3.Metropolis(model.vars)
    trace = pymc3.sample(20000, step)
    #trace = pymc3.sample(20000)
我收到了一条无错误的“IndexError:index out-bounds”错误消息,但我不知道为什么。我尝试了上面代码的不同变体,但都不起作用

如果你对代码的含义感到好奇,那是为了 检查dirichlet参数的后验值 观察三类的多项式计数:(10,3,4) 具有“均匀”狄里克莱先验(α=[1,1,1.])结果 在(10,3,4.)

简单直接抽样:

a=alpha_posterior
print a
nb_samples = 200000
c_ = np.ndarray(nb_samples)
for i in range(nb_samples):
    d = scipy.stats.dirichlet.rvs(a,1)[0]
    c_[i] = np.random.choice(3, 1, p=d)
ns = float(nb_samples)

print (c_==0).sum()/ns
print (c_==1).sum()/ns
print (c_==2).sum()/ns
print x
print x/float(x.sum())

这段代码对我来说运行良好,没有错误

import numpy as np
import pymc3

with pymc3.Model() as model:
    data = np.array([10., 3., 4.])
    k = 3
    u = pymc3.Exponential('u', 1./10, observed=data, shape=k)
    p = pymc3.Dirichlet('p', a=u, shape=k)
    c = pymc3.Categorical('c', p=p)
    step = pymc3.Metropolis()
    trace = pymc3.sample(20, step)
链中只有20个样本

多进程采样(4个作业中的4个链)

复合台阶

大都会:[c] 大都会:[p]
取样4链:100%|███████████████████████████████████████████████████████| 2080/2080[00:02这方面有进展吗?