如何向PyMC3模型添加约束?

时间:2017-12-14 18:45:49

标签: pymc3

如果我们考虑以下PyMC3的线性回归示例:

http://docs.pymc.io/notebooks/getting_started.html#A-Motivating-Example:-Linear-Regression

我们如何包含a + b1 + b2 = 1 or a^2 + b1^2 = 25

等约束

据我所知,我们可以使用Bound为变量创建边界,但我不知道如何添加更复杂的约束。

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

一般解决方案是使用潜力。

const = pm.Potential('const', pm.math.switch(pm.math.eq(a**2 + b1**2, 25),
                                             0,
                                             -np.inf))

潜力是您可以添加到模型可能性的任意因素。在此示例中,如果参数满足您的约束,则不添加任何内容,否则添加-inf。

为了将来参考,您还可以提出问题here