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
stdtridfInverse von stdtr in Bezug auf df
stdtritInverse von stdtr in Bezug auf t
scipy.stats.tStudent-t-Verteilung
Hinweise
Die Student-t-Verteilung ist auch als
scipy.stats.tverfügbar. Der direkte Aufruf vonstdtrkann die Leistung im Vergleich zurcdfMethode vonscipy.stats.tverbessern (siehe letztes Beispiel unten).stdtrbietet 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 UmgebungsvariableSCIPY_ARRAY_API=1setzen 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=3beit=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()
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
stdtran 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.tverfügbar. Der direkte Aufruf vonstdtrkann wesentlich schneller sein als der Aufruf dercdfMethode vonscipy.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