Python 如何指定任意、有界的多元分布?

Python 如何指定任意、有界的多元分布?,python,bayesian,pymc3,Python,Bayesian,Pymc3,我正在尝试拟合一个贝塔二项回归模型,并希望在参数a,b上指定以下先验值: p(a, b) ~ | (a + b)^(-5/2) if a > 0 and b > 0 | 0 otherwise. 到目前为止,我已尝试通过以下方式使用DensityDist: import pymc3 as mc logp = lambda x: mc.switch( mc.and_(mc.gt(x[0], 0), mc.gt(x[1], 0)), -2.5 *

我正在尝试拟合一个贝塔二项回归模型,并希望在参数
a,b
上指定以下先验值:

p(a, b) ~ | (a + b)^(-5/2) if a > 0 and b > 0
          | 0 otherwise.
到目前为止,我已尝试通过以下方式使用
DensityDist

import pymc3 as mc

logp = lambda x: mc.switch(
    mc.and_(mc.gt(x[0], 0), mc.gt(x[1], 0)),
    -2.5 * mc.log(x[0] + x[1]),
    -np.inf)

ab = mc.DensityDist('ab', logp, shape=(2,), testval=(1, 1))
但是像这样分段定义可能性(可以理解)会导致中的数值优化出现问题,例如,
find\u MAP


我遇到过
有界的
,它允许定义有界的一维分布,但还没有弄清楚如何将其扩展到多元分布。是否有可能以一种惯用的方式实现上述功能,从而很好地与数值优化配合使用?

您可能会用一个非常大的数字替换np.inf。那么概率分布基本上还是一样的,但是优化器仍然可以正常工作。