scipy.stats.Uniform.

logcdf#

Uniform.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 並取對數互補(請參閱「Notes」)

  • 'quadrature':數值對數積分 log-PDF

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

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

並非所有分布都提供所有 method 選項。如果所選的 method 不可用,將會引發 NotImplementedError

返回::
outarray

在提供的參數評估的 log-CDF。

另請參閱

cdf
logccdf

筆記

假設連續機率分布具有支持度 \([l, r]\)。log-CDF 對於 \(x ≤ l\) 評估為其最小值 \(\log(0) = -\infty\),對於 \(x ≥ r\) 評估為其最大值 \(\log(1) = 0\)

對於具有無限支持度的分布,常見的情況是 cdf 在參數理論上在支持度內時返回 0;這可能會發生,因為 CDF 的真實值太小,無法以選定的 dtype 表示。logcdf 然而,通常會在更大的域中返回有限(非 -inf)結果。同樣地,logcdf 可能會為 cdf 將返回 1.0 的參數提供嚴格的負結果。因此,可能更希望使用機率的對數,以避免浮點數的下溢和相關限制。

數字的「對數互補」在數學上等價於 \(\log(1-\exp(z))\),但它的計算是為了避免當 \(\exp(z)\) 幾乎是 \(0\)\(1\) 時的精度損失。同樣地,「對數差」\(w\)\(z\) 在此處用於表示 \(\log(\exp(w)-\exp(z))\)

如果 y < x,則 CDF 為負,因此 log-CCDF 是複數,虛部為 \(\pi\)。為了保持一致性,當提供 y 時,此函數的結果始終具有複數 dtype,無論虛部的值如何。

參考文獻

[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