scipy.stats.Uniform.

ilogccdf#

Uniform.ilogccdf(logp, /, *, method=None)[source]#

互補累積分布函數之對數的反函數。

互補累積分布函數之對數(“反向 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

傳回:
outarray

在提供的引數下評估的反向 log-CCDF。

另請參閱

iccdf
ilogccdf

註解

假設連續機率分布具有支援 \([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 的引數,以取得非常接近 01 的結果機率 - 太過接近而無法以浮點算術準確表示。 然而,在許多情況下,此結果機率的對數可以用浮點算術表示,在這種情況下,可以使用此函數來尋找 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