scipy.special.stdtr#

scipy.special.stdtr(df, t, out=None) = <ufunc 'stdtr'>#

Student-t-Verteilung kumulative Verteilungsfunktion

Gibt das Integral zurück

\[\frac{\Gamma((df+1)/2)}{\sqrt{\pi df} \Gamma(df/2)} \int_{-\infty}^t (1+x^2/df)^{-(df+1)/2}\, dx\]
Parameter:
dfarray_like

Freiheitsgrade

tarray_like

Obere Grenze des Integrals

outndarray, optional

Optionales Ausgabe-Array für die Funktionsergebnisse

Rückgabe:
skalar oder ndarray

Wert der Student-t-CDF bei t

Siehe auch

stdtridf

Inverse von stdtr in Bezug auf df

stdtrit

Inverse von stdtr in Bezug auf t

scipy.stats.t

Student-t-Verteilung

Hinweise

Die Student-t-Verteilung ist auch als scipy.stats.t verfügbar. Der direkte Aufruf von stdtr kann die Leistung im Vergleich zur cdf Methode von scipy.stats.t verbessern (siehe letztes Beispiel unten).

stdtr bietet 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 die Umgebungsvariable SCIPY_ARRAY_API=1 setzen und CuPy, PyTorch, JAX oder Dask Arrays als Array-Argumente übergeben. Die folgenden Kombinationen von Backend und Gerät (oder anderer Fähigkeit) 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.

Beispiele

Berechnen Sie die Funktion für df=3 bei t=1.

>>> import numpy as np
>>> from scipy.special import stdtr
>>> import matplotlib.pyplot as plt
>>> stdtr(3, 1)
0.8044988905221148

Plotten Sie die Funktion für drei verschiedene Freiheitsgrade.

>>> x = np.linspace(-10, 10, 1000)
>>> fig, ax = plt.subplots()
>>> parameters = [(1, "solid"), (3, "dashed"), (10, "dotted")]
>>> for (df, linestyle) in parameters:
...     ax.plot(x, stdtr(df, x), ls=linestyle, label=f"$df={df}$")
>>> ax.legend()
>>> ax.set_title("Student t distribution cumulative distribution function")
>>> plt.show()
../../_images/scipy-special-stdtr-1_00_00.png

Die Funktion kann für mehrere Freiheitsgrade gleichzeitig berechnet werden, indem ein NumPy-Array oder eine Liste für df übergeben wird

>>> stdtr([1, 2, 3], 1)
array([0.75      , 0.78867513, 0.80449889])

Es ist möglich, die Funktion gleichzeitig an mehreren Punkten für mehrere verschiedene Freiheitsgrade zu berechnen, indem Arrays für df und t mit Formen, die für Broadcasting kompatibel sind, übergeben werden. Berechnen Sie stdtr an 4 Punkten für 3 Freiheitsgrade, was zu einem Array der Form 3x4 führt.

>>> dfs = np.array([[1], [2], [3]])
>>> t = np.array([2, 4, 6, 8])
>>> dfs.shape, t.shape
((3, 1), (4,))
>>> stdtr(dfs, t)
array([[0.85241638, 0.92202087, 0.94743154, 0.96041658],
       [0.90824829, 0.97140452, 0.98666426, 0.99236596],
       [0.93033702, 0.98599577, 0.99536364, 0.99796171]])

Die t-Verteilung ist auch als scipy.stats.t verfügbar. Der direkte Aufruf von stdtr kann wesentlich schneller sein als der Aufruf der cdf Methode von scipy.stats.t. Um die gleichen Ergebnisse zu erzielen, muss die folgende Parametrisierung verwendet werden: scipy.stats.t(df).cdf(x) = stdtr(df, x).

>>> from scipy.stats import t
>>> df, x = 3, 1
>>> stdtr_result = stdtr(df, x)  # this can be faster than below
>>> stats_result = t(df).cdf(x)
>>> stats_result == stdtr_result  # test that results are equal
True