gluonts.torch.distributions.isqf 模块#
- class gluonts.torch.distributions.isqf.ISQF(spline_knots: torch.Tensor, spline_heights: torch.Tensor, beta_l: torch.Tensor, beta_r: torch.Tensor, qk_y: torch.Tensor, qk_x: torch.Tensor, tol: float = 0.0001, validate_args: bool = False)[源代码]#
基类:
torch.distributions.distribution.Distribution
在 Park, Robinson, Aubet, Kan, Gasthaus, Wang 的论文
Learning Quantile Functions without Quantile Crossing for Distribution-free Time Series Forecasting
中提出的增量(样条)分位数函数的分布类 :param spline_knots: 张量,参数化样条结点的 x 坐标(y 坐标)形状:(*batch_shape, (num_qk-1), num_pieces)
- 参数
- property batch_shape: torch.Size#
返回参数批处理的形状。
- cdf(z: torch.Tensor) torch.Tensor [源代码]#
计算分位数水平 alpha_tilde,使得 q(alpha_tilde) = z :param z: 形状为 (*batch_shape,) 的张量
- 返回
形状为 (*batch_shape,) 的张量
- 返回类型
alpha_tilde
- cdf_spline(z: torch.Tensor) torch.Tensor [源代码]#
对于观测 z 和在 [qk_x[k], qk_x[k+1]] 中定义的样条,计算分位数水平 alpha_tilde,使得 alpha_tilde.
= q^{-1}(z) 如果 z 在 qk_x[k] 和 qk_x[k+1] 之间 = qk_x[k] 如果 z
qk_x[k+1] :param z: 观测,形状为 (*batch_shape,) - 返回
对应的分位数水平,形状为 (*batch_shape, num_qk-1)
- 返回类型
alpha_tilde
- cdf_tail(z: torch.Tensor, left_tail: bool = True) torch.Tensor [源代码]#
计算分位数水平 alpha_tilde,使得 alpha_tilde.
= q^{-1}(z) 如果 z 在尾部区域 = qk_x_l 或 qk_x_r 如果 z 在非尾部区域 :param z: 观测,形状为 (*batch_shape,) :param left_tail: 如果为 True,计算左尾部的 alpha_tilde
否则,计算右尾部的 alpha_tilde
- 返回
对应的分位数水平,形状为 (*batch_shape,)
- 返回类型
alpha_tilde
- crps(z: torch.Tensor) torch.Tensor [源代码]#
以解析形式计算 CRPS :param z: 要评估的观测。形状为 (*batch_shape,)
- 返回
包含 CRPS 的张量,形状与 z 相同
- 返回类型
张量
- crps_spline(z: torch.Tensor) torch.Tensor [源代码]#
以解析形式计算样条的 CRPS :param z: 要评估的观测。形状为 (*batch_shape,)
- 返回
包含 CRPS 的张量,形状与 z 相同
- 返回类型
张量
- crps_tail(z: torch.Tensor, left_tail: bool = True) torch.Tensor [源代码]#
以解析形式计算左/右尾部的 CRPS :param z: 要评估的观测。形状为 (*batch_shape,) :param left_tail: 如果为 True,计算左尾部的 CRPS
否则,计算右尾部的 CRPS
- 返回
包含 CRPS 的张量,形状与 z 相同
- 返回类型
张量
- static parameterize_qk(quantile_knots: torch.Tensor) Tuple[torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor] [源代码]#
函数,参数化 num_qk 分位数结点的 x 或 y 坐标 :param quantile_knots: 分位数结点的 x 或 y 坐标
形状:(*batch_shape, num_qk)
- static parameterize_spline(spline_knots: torch.Tensor, qk: torch.Tensor, qk_plus: torch.Tensor, tol: float = 0.0001) Tuple[torch.Tensor, torch.Tensor] [源代码]#
函数,参数化样条结点的 x 或 y 坐标 :param spline_knots: 参数化样条结点位置的变量 :param qk: 分位数结点 (qk) 的 x 或 y 坐标,
索引为 1, …, num_qk-1,形状:(*batch_shape, num_qk-1)
- static parameterize_tail(beta: torch.Tensor, qk_x: torch.Tensor, qk_y: torch.Tensor) Tuple[torch.Tensor, torch.Tensor] [源代码]#
函数,参数化尾部参数 注意,指数尾部由 q(alpha) 给出
= a_l log(alpha) + b_l 如果是左尾部 = a_r log(1-alpha) + b_r 如果是右尾部 其中 a_l=1/beta_l, b_l=-a_l*log(qk_x_l)+q(qk_x_l) a_r=1/beta_r, b_r=a_r*log(1-qk_x_r)+q(qk_x_r) :param beta: 参数化左尾部或右尾部,形状:(*batch_shape,) :param qk_x: 分位数结点最左或最右的 x 坐标,
形状:(*batch_shape,)
- 参数
qk_y – 分位数结点最左或最右的 y 坐标,形状:(*batch_shape,)
- 返回
tail_a – 上述的 a_l 或 a_r
tail_b – 上述的 b_l 或 b_r
- quantile_internal(alpha: torch.Tensor, dim: Optional[int] = None) torch.Tensor [源代码]#
在分位数水平 input_alpha 处评估分位数函数 :param alpha: 如果 axis=None,形状为 (*batch_shape,) 的张量,否则包含一个
在指定位置的额外轴
- 参数
dim – 包含要计算的不同分位数水平的轴索引。详情请阅读下面的描述
- 返回
分位数张量,形状与 alpha 相同
- 返回类型
张量
- class gluonts.torch.distributions.isqf.ISQFOutput(num_pieces: int, qk_x: List[float], tol: float = 0.0001)[源代码]#
基类:
gluonts.torch.distributions.distribution_output.DistributionOutput
增量(样条)分位数函数的 DistributionOutput 类 :param num_pieces: 每个样条的样条段数量
当 num_pieces = 1 时,ISQF 退化为 IQF
- 参数
qk_x – 包含分位数结点 x 坐标的列表
tol – 用于数值安全性的容差
- distr_cls#
- distribution(distr_args, loc: Optional[torch.Tensor] = None, scale: Optional[torch.Tensor] = None) gluonts.torch.distributions.isqf.ISQF [源代码]#
输出分布类的函数 distr_args: 分布参数 loc: 数据均值的偏移 scale: 数据缩放
- classmethod domain_map(spline_knots: torch.Tensor, spline_heights: torch.Tensor, beta_l: torch.Tensor, beta_r: torch.Tensor, quantile_knots: torch.Tensor, tol: float = 0.0001) Tuple[torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor] [源代码]#
域映射函数 此函数的输入由 self.args_dim 指定。
spline_knots, spline_heights: 参数化样条结点的 x-/ y-坐标,形状 = (*batch_shape, (num_qk-1)*num_pieces)
beta_l, beta_r: 参数化左/右尾部,形状 = (*batch_shape, 1)
quantile_knots: 参数化分位数结点 y 坐标,形状 = (*batch_shape, num_qk)
- property event_shape: Tuple#
与输出对象兼容的每个独立事件的形状。
- class gluonts.torch.distributions.isqf.TransformedISQF(base_distribution: gluonts.torch.distributions.isqf.ISQF, transforms: List[torch.distributions.transforms.AffineTransform], validate_args=None)[源代码]#
基类:
torch.distributions.transformed_distribution.TransformedDistribution