如何指定任意的,有界的多变量分布?

时间:2016-10-12 00:15:41

标签: python bayesian pymc3

我尝试使用beta-binomial回归模型,并希望在参数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_MAP

我遇到了Bounded,它允许用户定义有界的1-d分布,但是还没有能够弄清楚如何将其扩展到多变量分布。是否有可能以惯用的方式实现上述方法,并与数值优化相得益彰?

0 个答案:

没有答案