我正在尝试使用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;
答案 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
分配给合适的采样器。