pymc.distributions.transforms.Interval#
- class pymc.distributions.transforms.Interval(lower=None, upper=None, *, bounds_fn=None)[源代码]#
用于随机变量
transform
参数中的pymc.logprob.transforms.IntervalTransform
的包装器。- 参数:
- lower :
int
或float
, 可选python:int 或 python:float, 可选 区间变换的下限。必须是一个常数有限值。默认情况下(
lower=None
),区间没有下限。- upper :
int
或float
, 可选python:int 或 python:float, 可选 区间变换的上限。必须是一个常数有限值。默认情况下 (
upper=None
),区间没有上限。- bounds_fn :
callable()
, 可选python:callable(),可选 替代下限和上限。必须返回一个元组,包含下限和上限作为相应分布输入的符号函数。如果下限或上限之一为
None
,则该区间在该边缘是无界的。警告
bounds_fn 返回的表达式应仅依赖于分布输入或其他常量。依赖于非局部变量(如在模型上下文中定义的其他分布)的表达式可能会破坏采样。
- lower :
示例
在 -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