scipy.special.betainc#

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

Regulierte inkomplette Betafunktion.

Berechnet die regulierte inkomplette Betafunktion, definiert als [1]

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

für \(0 \leq x \leq 1\).

Diese Funktion ist die kumulative Verteilungsfunktion für die Betaverteilung; ihr Wertebereich ist [0, 1].

Parameter:
a, barray_like

Positive, reellwertige Parameter

xarray_like

Reellwertig, so dass \(0 \leq x \leq 1\) gilt, die obere Integrationsgrenze

outndarray, optional

Optionales Ausgabe-Array für die Funktionswerte

Rückgabe:
skalar oder ndarray

Wert der regulierten inkompletten Betafunktion

Siehe auch

beta

Betafunktion

betaincinv

Inverse der regulierten inkompletten Betafunktion

betaincc

Komplement der regulierten inkompletten Betafunktion

scipy.stats.beta

Betaverteilung

Hinweise

Der Begriff reguliert im Namen dieser Funktion bezieht sich auf die Skalierung der Funktion mit den Gammafunktions-Termen, die in der Formel gezeigt werden. Wenn nicht als reguliert qualifiziert, bezieht sich der Name inkomplette Betafunktion oft nur auf den Integral-Ausdruck, ohne die Gamma-Terme. Man kann die Funktion beta aus scipy.special verwenden, um diese „nicht regulierte“ inkomplette Betafunktion zu erhalten, indem man das Ergebnis von betainc(a, b, x) mit beta(a, b) multipliziert.

betainc(a, b, x) wird als eine zweiparametrige Familie von Funktionen einer einzelnen Variablen x behandelt, anstatt als Funktion von drei Variablen. Dies wirkt sich nur auf die Grenzfälle a = 0, b = 0, a = inf, b = inf aus.

Im Allgemeinen

\[\lim_{(a, b) \rightarrow (a_0, b_0)} \mathrm{betainc}(a, b, x)\]

wird als punktweiser Grenzwert in x behandelt. So ist zum Beispiel betainc(0, b, 0) gleich 0 für b > 0, obwohl es unbestimmt wäre, wenn man den simultanen Grenzwert (a, x) -> (0+, 0+) betrachtet.

Diese Funktion wrappt die ibeta Routine aus der Boost Math C++ Bibliothek [2].

betainc hat experimentelle Unterstützung für Python Array API Standard-kompatible Backends zusätzlich zu NumPy. Bitte erwägen Sie, diese Funktionen zu testen, indem Sie eine Umgebungsvariable SCIPY_ARRAY_API=1 setzen und CuPy-, PyTorch-, JAX- oder Dask-Arrays als Array-Argumente bereitstellen. Die folgenden Kombinationen von Backend und Gerät (oder anderen Fähigkeiten) werden unterstützt.

Bibliothek

CPU

GPU

NumPy

n/a

CuPy

n/a

PyTorch

JAX

Dask

n/a

Siehe Unterstützung für den Array API Standard für weitere Informationen.

Referenzen

[1]

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

[2]

The Boost Developers. “Boost C++ Libraries”. https://www.boost.org/.

Beispiele

Sei \(B(a, b)\) die beta-Funktion.

>>> import scipy.special as sc

Der Koeffizient in Bezug auf gamma ist gleich \(1/B(a, b)\). Auch wenn \(x=1\) ist, ist das Integral gleich \(B(a, b)\). Daher ist \(I_{x=1}(a, b) = 1\) für alle \(a, b\).

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

Es erfüllt \(I_x(a, b) = x^a F(a, 1-b, a+1, x)/ (aB(a, b))\), wobei \(F\) die hypergeometrische Funktion hyp2f1 ist.

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

Diese Funktion erfüllt die Beziehung \(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