PyMC3:对Categorical变量进行采样时的PositiveDefiniteError

时间:2016-11-11 15:52:59

标签: python theano pymc pymc3

我正在尝试使用Dirichlet之前对分类分布的简单模型进行采样。这是我的代码:

PositiveDefiniteError: Scaling is not positive definite. Simple check failed. Diagonal contains negatives. Check indexes [0 1 2 3 4]

我收到了这个错误:

int homescore = 0; 
int awayscore = 0;

1 个答案:

答案 0 :(得分:1)

问题是NUTS无法正确初始化。一种解决方案是使用另一个这样的采样器:

with pm.Model() as model:
    p = pm.Dirichlet('p', a=alpha)
    categ = pm.Categorical('categ', p=p)

    step = pm.Metropolis(vars=p)
    tr = pm.sample(1000, step=step)

我在这里手动将p分配给Metropolis,让PyMC3将categ分配给合适的采样器。