scipy.stats.Normal.

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, y類陣列

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 進行對數積分

'complement' 的位置,雙參數形式接受

  • 'subtraction':計算每個引數的 log-CDF 並取對數差(請參閱「註解」)

並非所有 method 選項都適用於所有分佈。如果選定的 method 不可用,將會引發 NotImplementedError

回傳值:
out陣列

在提供的引數下評估的 log-CDF。

另請參閱

cdf
logccdf

註解

假設一個連續機率分佈的支持域為 \([l, r]\)。對於 \(x ≤ l\),log-CDF 的評估值為其最小值 \(\log(0) = -\infty\),對於 \(x ≥ r\),其評估值為最大值 \(\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\)。為了保持一致性,當提供 y 時,此函數的結果始終具有複數 dtype,而與虛部的值無關。

參考文獻

範例

使用所需的參數實例化分佈

>>> 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