pymc.distributions.transforms.Interval#

class pymc.distributions.transforms.Interval(lower=None, upper=None, *, bounds_fn=None)[源代码]#

用于随机变量 transform 参数中的 pymc.logprob.transforms.IntervalTransform 的包装器。

参数:
lower : intfloat, 可选python:int 或 python:float, 可选

区间变换的下限。必须是一个常数有限值。默认情况下(lower=None),区间没有下限。

upper : intfloat, 可选python:int 或 python:float, 可选

区间变换的上限。必须是一个常数有限值。默认情况下 (upper=None),区间没有上限。

bounds_fn : callable(), 可选python:callable(),可选

替代下限和上限。必须返回一个元组,包含下限和上限作为相应分布输入的符号函数。如果下限或上限之一为 None ,则该区间在该边缘是无界的。

警告

bounds_fn 返回的表达式应仅依赖于分布输入或其他常量。依赖于非局部变量(如在模型上下文中定义的其他分布)的表达式可能会破坏采样。

示例

在 -1 和 +1 之间创建一个区间变换

with pm.Model():
    interval = pm.distributions.transforms.Interval(lower=-1, upper=1)
    x = pm.Normal("x", transform=interval)

在0处创建一个下界区间变换,使用可调用对象

def get_bounds(rng, size, dtype, mu, sigma):
    return 0, None

with pm.Model():
    interval = pm.distributions.transforms.Interval(bounds_fn=get_bounds)
    x = pm.Normal("x", transform=interval)

创建一个依赖于分布参数的下界区间变换

def get_bounds(rng, size, dtype, mu, sigma):
    return mu - 1, None

interval = pm.distributions.transforms.Interval(bounds_fn=get_bounds)

with pm.Model():
    mu = pm.Normal("mu")
    x = pm.Normal("x", mu=mu, sigma=2, transform=interval)

方法

Interval.__init__([lower, upper, bounds_fn])

参数:

Interval.backward(value, *inputs)

反转变换。

Interval.forward(value, *inputs)

应用变换。

Interval.get_a_and_b(inputs)

返回区间边界值。

Interval.log_jac_det(value, *inputs)

构建雅可比行列式绝对值的对数。

属性

name

ndim_supp