ilogccdf#
- Uniform.ilogccdf(logp, /, *, method=None)[源代码]#
互补累积分布函数对数的反函数。
互补累积分布函数对数的反函数(“反 log-CCDF”)是参数 \(x\),对于该参数,互补累积分布函数的对数 \(\log(G(x))\) 的值为 \(\log(p)\)。
在数学上,它等价于 \(G^{-1}(\exp(y))\),其中 \(y = \log(p)\),但与朴素的实现方式相比,它在数值上可能更有利(计算 \(p = \exp(y)\),然后计算 \(G^{-1}(p)\))。
ilogccdf
接受 logp 作为 \(\log(p) ≤ 0\)。- 参数:
- xarray_like
反 log-CCDF 的参数。
- method{None, ‘formula’, ‘complement’, ‘inversion’}
用于评估反 log-CCDF 的策略。默认情况下(
None
),基础结构会在以下选项之间进行选择,并按优先级顺序列出。'formula'
:使用反 log-CCDF 本身的公式'complement'
:在 x 的对数补数处评估反 log-CDF(请参见注释)'inversion'
:通过数值方法求解 log-CCDF 等于 x 的参数
并非所有分布都提供所有 method 选项。如果所选的 method 不可用,则会引发
NotImplementedError
。
- 返回值:
- out数组
在提供的参数处评估的反 log-CCDF。
注释
假设一个连续概率分布的支持为 \([l, r]\)。反 log-CCDF 在 \(\log(p) = \log(1) = 0\) 时返回其最小值 \(l\),在 \(\log(p) = \log(0) = -\infty\) 时返回其最大值 \(r\)。由于 log-CCDF 的范围是 \([-\infty, 0]\),因此反 log-CDF 仅在负实数上定义;对于 \(\log(p) > 0\),
ilogccdf
返回nan
。有时,需要找到 CCDF 的参数,使得结果概率非常接近
0
或1
- 太接近而无法用浮点算术精确表示。然而,在许多情况下,这个结果概率的对数可以用浮点算术表示,在这种情况下,可以使用此函数找到 CCDF 的参数,其中结果概率的对数为 y = log(p)。数字 \(z\) 的“对数补数”在数学上等价于 \(\log(1-\exp(z))\),但在 \(\exp(z)\) 接近 \(0\) 或 \(1\) 时,计算它的目的是为了避免精度损失。
示例
使用所需的参数实例化分布
>>> import numpy as np >>> from scipy import stats >>> X = stats.Uniform(a=-0.5, b=0.5)
在所需的参数处评估反 log-CCDF
>>> X.ilogccdf(-0.25) -0.2788007830714034 >>> np.allclose(X.ilogccdf(-0.25), X.iccdf(np.exp(-0.25))) True