ilogccdf#
- Mixture.ilogccdf(p, /, *, method=None)[原始碼]#
互補累積分布函數之對數的反函數。
互補累積分布函數之對數的反函數(“反向對數-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
反向對數-CCDF 的引數。
- method{None, ‘formula’, ‘complement’, ‘inversion’}
用於評估反向對數-CCDF 的策略。預設 (
None
) 情況下,基礎結構會從以下選項中選擇,選項依優先順序排列。'formula'
:使用反向對數-CCDF 本身的公式'complement'
:在 x 的對數互補處評估反向對數-CDF(請參閱「註解」)'inversion'
:數值求解對數-CCDF 等於 x 的引數
並非所有分布都提供所有 method 選項。如果選定的 method 不可用,則會引發
NotImplementedError
。
- 返回:
- outarray
在提供的引數下評估的反向對數-CCDF。
註解
假設連續機率分布具有支援度 \([l, r]\)。反向對數-CCDF 在 \(\log(p) = \log(1) = 0\) 時傳回其最小值 \(l\),在 \(\log(p) = \log(0) = -\infty\) 時傳回其最大值 \(r\)。由於對數-CCDF 的範圍為 \([-\infty, 0]\),因此反向對數-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)
在所需的引數下評估反向對數-CCDF
>>> X.ilogccdf(-0.25) -0.2788007830714034 >>> np.allclose(X.ilogccdf(-0.25), X.iccdf(np.exp(-0.25))) True