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

贝塔分布

注释

此函数名称中的术语正则化指的是函数按公式中显示的伽玛函数项进行缩放。当没有限定为正则化时,名称不完全贝塔函数通常仅指积分表达式,而不包含伽玛项。可以使用 beta 函数,从 scipy.special 获取此“非正则化”不完全贝塔函数,方法是将 betainc(a, b, x) 的结果乘以 beta(a, b)

此函数包装了 Boost Math C++ 库中的 ibeta 例程 [2]

参考文献

[1]

NIST 数学函数数字图书馆 https://dlmf.nist.gov/8.17

[2]

Boost 开发者。“Boost C++ 库”。 https://boost.ac.cn/

示例

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