logcdf#
- Normal.logcdf(x, y=None, /, *, method=None)[源代码]#
- 累积分布函数的对数 - 累积分布函数(“CDF”),表示为 \(F(x)\),是随机变量 \(X\) 取小于或等于 \(x\) 的值的概率。 \[F(x) = P(X ≤ x)\]- 此函数的双参数变体也被定义为随机变量 \(X\) 取 \(x\) 和 \(y\) 之间的值的概率。 \[F(x, y) = P(x ≤ X ≤ y)\]- logcdf计算累积分布函数的对数(“log-CDF”),\(\log(F(x))\)/\(\log(F(x, y))\),但与朴素实现(计算 CDF 并取对数)相比,它可能在数值上更有利。- logcdf接受 x 作为 \(x\),y 作为 \(y\)。- 参数:
- x, yarray_like
- log-CDF 的参数。 x 是必需的; y 是可选的。 
- method{None, ‘formula’, ‘logexp’, ‘complement’, ‘quadrature’, ‘subtraction’}
- 用于评估 log-CDF 的策略。 默认情况下 ( - None),函数的单参数形式在以下选项中进行选择,并按优先级顺序列出。- 'formula':使用 log-CDF 本身的公式
- 'logexp':评估 CDF 并取对数
- 'complement':评估 log-CCDF 并取对数补码(参见注释)
- 'quadrature':数值积分 log-PDF(或者,在离散情况下,对 log-PMF 求对数和)
 - 代替 - 'complement',双参数形式接受- 'subtraction':计算每个参数处的 log-CDF 并取对数差(参见注释)
 - 并非所有 method 选项都适用于所有分布。 如果所选的 method 不可用,则会引发 - NotImplementedError。
 
- 返回值:
- outarray
- 在提供的参数处评估的 log-CDF。 
 
 - 注释 - 假设连续概率分布具有支撑 \([l, r]\)。 对于 \(x ≤ l\),log-CDF 的最小值为 \(\log(0) = -\infty\),对于 \(x ≥ r\),log-CDF 的最大值为 \(\log(1) = 0\)。 可以对离散分布做出类似的声明,但控制最小值的不等式是严格的。 - 对于具有无限支撑的分布,通常 - cdf在参数理论上在支撑范围内时返回- 0的值; 发生这种情况是因为 CDF 的真实值太小而无法由所选的 dtype 表示。 然而,- logcdf通常会在更大的域中返回有限的(不是- -inf)结果。 类似地,- logcdf可以提供严格的负结果,其参数为- cdf将返回- 1.0。 因此,可能首选使用概率的对数来避免浮点数的下溢和相关限制。- 数字 \(z\) 的“对数补码”在数学上等价于 \(\log(1-\exp(z))\),但计算它是为了避免当 \(\exp(z)\) 接近 \(0\) 或 \(1\) 时精度损失。 类似地,\(w\) 和 \(z\) 的术语“对数差”在此处用于表示 \(\log(\exp(w)-\exp(z))\)。 - 如果 - y < x,则 CDF 为负,因此 log-CCDF 是复数,虚部为 \(\pi\)。 为了保持一致性,无论虚部的值如何,此函数的结果始终具有复数 dtype(当提供 y 时)。- 参考文献 [1]- 累积分布函数,维基百科,https://en.wikipedia.org/wiki/Cumulative_distribution_function - 示例 - 使用所需的参数实例化分布 - >>> import numpy as np >>> from scipy import stats >>> X = stats.Uniform(a=-0.5, b=0.5) - 在所需参数处评估 log-CDF - >>> X.logcdf(0.25) -0.287682072451781 >>> np.allclose(X.logcdf(0.), np.log(X.cdf(0.))) True