scipy.special.betainc#

scipy.special.betainc(a, b, x, out=None) = <ufunc 'betainc'>#

Incomplete beta function.

Computes the incomplete beta function, defined as [1]:

\[I_x(a, b) = \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \int_0^x t^{a-1}(1-t)^{b-1}dt,\]

for \(0 \leq x \leq 1\).

Parameters
a, barray_like

Positive, real-valued parameters

xarray_like

Real-valued such that \(0 \leq x \leq 1\), the upper limit of integration

outndarray, optional

Optional output array for the function values

Returns
scalar or ndarray

Value of the incomplete beta function

See also

beta

beta function

betaincinv

inverse of the incomplete beta function

Notes

The incomplete beta function is also sometimes defined without the gamma terms, in which case the above definition is the so-called regularized incomplete beta function. Under this definition, you can get the incomplete beta function by multiplying the result of the SciPy function by beta.

References

1

NIST Digital Library of Mathematical Functions https://dlmf.nist.gov/8.17

Examples

Let \(B(a, b)\) be the beta function.

>>> import scipy.special as sc

The coefficient in terms of gamma is equal to \(1/B(a, b)\). Also, when \(x=1\) the integral is equal to \(B(a, b)\). Therefore, \(I_{x=1}(a, b) = 1\) for any \(a, b\).

>>> sc.betainc(0.2, 3.5, 1.0)
1.0

It satisfies \(I_x(a, b) = x^a F(a, 1-b, a+1, x)/ (aB(a, b))\), where \(F\) is the hypergeometric function 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

This functions satisfies the relationship \(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