如何向 PyMC3 模型添加约束?

问题描述 投票:0回答:1

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

https://www.pymc.io/projects/docs/en/v3/pymc-examples/examples/getting_started.html#A-Motivating-Example:-线性回归

我们如何包含诸如

a + b1 + b2 = 1 or a^2 + b1^2 = 25
之类的约束?

我知道我们可以使用 Bound 来创建变量的界限,但我不确定如何添加更复杂的约束。

感谢您的帮助!

pymc3
1个回答
9
投票

一般的解决方案是使用势能。

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

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

为了将来参考,您也可以在这里提问

© www.soinside.com 2019 - 2024. All rights reserved.