scipy.special.betainc#
- scipy.special.betainc(a, b, x, out=None) = <ufunc 'betainc'>#
正規化不完全貝塔函數。
計算正規化不完全貝塔函數,定義如下 [1]
\[I_x(a, b) = \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \int_0^x t^{a-1}(1-t)^{b-1}dt,\]對於 \(0 \leq x \leq 1\)。
此函數是貝塔分佈的累積分布函數;其範圍為 [0, 1]。
- 參數:
- a, barray_like
正實數值參數
- xarray_like
實數值,使得 \(0 \leq x \leq 1\),積分上限
- outndarray, optional
函數值的可選輸出陣列
- 返回:
- 純量或 ndarray
正規化不完全貝塔函數的值
參見
beta
貝塔函數
betaincinv
正規化不完全貝塔函數的反函數
betaincc
正規化不完全貝塔函數的補函數
scipy.stats.beta
貝塔分佈
註解
此函數名稱中的正規化一詞指的是函數通過公式中顯示的伽瑪函數項進行縮放。當未限定為正規化時,名稱不完全貝塔函數通常僅指積分表達式,而不包含伽瑪項。可以使用來自
scipy.special
的函數beta
,通過將betainc(a, b, x)
的結果乘以beta(a, b)
來獲得此“非正規化”不完全貝塔函數。此函數包裝了 Boost Math C++ 庫 [2] 中的
ibeta
常式。參考文獻
[1]NIST 數位數學函數庫 https://dlmf.nist.gov/8.17
[2]Boost 開發者。「Boost C++ 函式庫」。 https://boost.dev.org.tw/。
範例
令 \(B(a, b)\) 為
beta
函數。>>> import scipy.special as sc
以
gamma
表示的係數等於 \(1/B(a, b)\)。此外,當 \(x=1\) 時,積分等於 \(B(a, b)\)。因此,對於任何 \(a, b\),\(I_{x=1}(a, b) = 1\)。>>> sc.betainc(0.2, 3.5, 1.0) 1.0
它滿足 \(I_x(a, b) = x^a F(a, 1-b, a+1, x)/ (aB(a, b))\),其中 \(F\) 是超幾何函數
hyp2f1
>>> a, b, x = 1.4, 3.1, 0.5 >>> x**a * sc.hyp2f1(a, 1 - b, a + 1, x)/(a * sc.beta(a, b)) 0.8148904036225295 >>> sc.betainc(a, b, x) 0.8148904036225296
此函數滿足關係式 \(I_x(a, b) = 1 - I_{1-x}(b, a)\)
>>> sc.betainc(2.2, 3.1, 0.4) 0.49339638807619446 >>> 1 - sc.betainc(3.1, 2.2, 1 - 0.4) 0.49339638807619446