ilogcdf#
- Binomial.ilogcdf(logp, /, *, method=None)[source]#
累积分布函数对数的逆函数。
累积分布函数对数的逆函数(“逆 log-CDF”)是参数 \(x\),对于该参数,累积分布函数的对数 \(\log(F(x))\) 的值为 \(\log(p)\)。
从数学上讲,它等效于 \(F^{-1}(\exp(y))\),其中 \(y = \log(p)\),但与朴素实现(计算 \(p = \exp(y)\),然后 \(F^{-1}(p)\))相比,它可能在数值上更有利。
ilogcdf
接受 logp 为 \(\log(p) ≤ 0\)。- 参数:
- logparray_like
逆 log-CDF 的参数。
- method{None, ‘formula’, ‘complement’, ‘inversion’}
用于评估逆 log-CDF 的策略。 默认情况下 (
None
),基础设施在以下选项之间进行选择,并按优先级顺序列出。'formula'
:使用逆 log-CDF 本身的公式'complement'
:在 logp 的对数补码处评估逆 log-CCDF(请参阅注释)'inversion'
:数值求解 log-CDF 等于 logp 的参数
并非所有 method 选项都适用于所有分布。 如果所选的 method 不可用,则会引发
NotImplementedError
。
- 返回:
- outarray
在提供的参数处评估的逆 log-CDF。
注释
假设概率分布支持 \([l, r]\)。 逆 log-CDF 在 \(\log(p) = \log(0) = -\infty\) 处返回其最小值 \(l\),在 \(\log(p) = \log(1) = 0\) 处返回其最大值 \(r\)。 由于 log-CDF 的范围为 \([-\infty, 0]\),因此逆 log-CDF 仅在负实数上定义; 对于 \(\log(p) > 0\),
ilogcdf
返回nan
。有时,需要找到 CDF 的参数,该参数使得到的概率非常接近
0
或1
- 太接近而无法用浮点运算准确表示。 然而,在许多情况下,此结果概率的对数可以用浮点运算表示,在这种情况下,可以使用此函数找到 CDF 的参数,对于该参数,结果概率的对数为 \(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-CDF
>>> X.ilogcdf(-0.25) 0.2788007830714034 >>> np.allclose(X.ilogcdf(-0.25), X.icdf(np.exp(-0.25))) True