logccdf#
- Normal.logccdf(x, y=None, /, *, method=None)[source]#
- 互补累积分布函数的对数 - 互补累积分布函数(“CCDF”),表示为 \(G(x)\) 是累积分布函数 \(F(x)\) 的补数;即,随机变量 \(X\) 取大于 \(x\) 的值的概率 \[ \begin{align}\begin{aligned} G(x) = 1 - F(x) = P(X > x)\\此函数的双参数变体是:\end{aligned}\end{align} \]\[G(x, y) = 1 - F(x, y) = P(X < x \quad \text{或} \quad X > y)\]- logccdf计算互补累积分布函数的对数(“log-CCDF”),\(\log(G(x))\)/\(\log(G(x, y))\),但与朴素实现(计算 CDF 并取对数)相比,它在数值上可能更有利。- logccdf接受 x 作为 \(x\),y 作为 \(y\)。- 参数:
- x, yarray_like
- log-CCDF 的参数。 x 是必需的; y 是可选的。 
- method{None, ‘formula’, ‘logexp’, ‘complement’, ‘quadrature’, ‘addition’}
- 用于评估 log-CCDF 的策略。 默认 ( - None),该函数的单参数形式在以下选项中进行选择,按优先级顺序列出。- 'formula':使用 log CCDF 本身的公式
- 'logexp':评估 CCDF 并取对数
- 'complement':评估 log-CDF 并取对数补数(参见注释)
- 'quadrature':数值积分 log-PDF(或者,在离散情况下,对 log-PMF 求对数和)
 - 双参数形式在以下选项中进行选择 - 'formula':使用 log CCDF 本身的公式
- 'addition':计算 x 处的 log-CDF 和 y 处的 log-CCDF,然后取对数和(参见注释)
 - 并非所有 method 选项都适用于所有分布。 如果所选的 method 不可用,则会引发 - NotImplementedError。
 
- 返回值:
- outarray
- 在提供的参数处评估的 log-CCDF。 
 
 - 注释 - 假设一个连续概率分布具有支持 \([l, r]\)。 log-CCDF 返回其最小值 \(\log(0)=-\infty\),对于 \(x ≥ r\),其最大值 \(\log(1) = 0\),对于 \(x ≤ l\)。 对于离散分布,可以做出类似的陈述,但控制最大值的不等式是严格的。 - 对于具有无限支持的分布,通常 - ccdf在参数理论上在支持范围内时返回- 0的值;这可能会发生,因为 CCDF 的真实值太小,无法用所选的 dtype 表示。 然而,CCDF 的对数通常在更大的域上是有限的(不是- -inf)。 类似地,- logccdf可以提供严格的负结果,其参数- ccdf将返回- 1.0。 因此,可能更喜欢使用概率的对数,以避免浮点数的下溢和相关限制。- 数字 \(z\) 的“对数补数”在数学上等同于 \(\log(1-\exp(z))\),但计算它是为了避免当 \(\exp(z)\) 接近 \(0\) 或 \(1\) 时精度损失。 类似地,\(w\) 和 \(z\) 的“对数和”在这里用于表示 \(\log(\exp(w)+\exp(z))\),又名 \(\text{LogSumExp}(w, z)\)。 - 参考文献 [1]- 累积分布函数,Wikipedia,https://en.wikipedia.org/wiki/Cumulative_distribution_function#Derived_functions - 示例 - 使用所需的参数实例化分布 - >>> import numpy as np >>> from scipy import stats >>> X = stats.Uniform(a=-0.5, b=0.5) - 在所需的参数处评估 log-CCDF - >>> X.logccdf(0.25) -1.3862943611198906 >>> np.allclose(X.logccdf(0.), np.log(X.ccdf(0.))) True