如果我们考虑以下 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 来创建变量的界限,但我不确定如何添加更复杂的约束。
感谢您的帮助!
一般的解决方案是使用势能。
const = pm.Potential('const', pm.math.switch(pm.math.eq(a**2 + b1**2, 25), 0, -np.inf))
潜力是可以添加到模型可能性中的任意因素。在此示例中,如果参数满足您的约束,则无需添加任何内容,否则添加 -inf。
为了将来参考,您也可以在这里提问