scipy.special.fdtri#
- scipy.special.fdtri(dfn, dfd, p, out=None) = <ufunc 'fdtri'>#
Das p-te Quantil der F-Verteilung.
Diese Funktion ist die Umkehrfunktion der F-Verteilungs-CDF,
fdtr, und gibt das x zurück, so dass fdtr(dfn, dfd, x) = p.- Parameter:
- dfnarray_like
Erster Parameter (positive Gleitkommazahl).
- dfdarray_like
Zweiter Parameter (positive Gleitkommazahl).
- parray_like
Kumulative Wahrscheinlichkeit, im Bereich [0, 1].
- outndarray, optional
Optionales Ausgabe-Array für die Funktionswerte
- Rückgabe:
- xSkalar oder ndarray
Das Quantil entsprechend p.
Siehe auch
fdtrF-Verteilung kumulative Verteilungsfunktion
fdtrcF-Verteilung Überlebensfunktion
scipy.stats.fF-Verteilung
Hinweise
Die Berechnung wird unter Verwendung der Beziehung zur inversen regulierten Beta-Funktion \(I^{-1}_x(a, b)\) durchgeführt. Sei \(z = I^{-1}_p(d_d/2, d_n/2).\) Dann gilt:
\[x = \frac{d_d (1 - z)}{d_n z}.\]Wenn p so beschaffen ist, dass \(x < 0.5\), wird stattdessen die folgende Beziehung zur Verbesserung der Stabilität verwendet: Sei \(z' = I^{-1}_{1 - p}(d_n/2, d_d/2).\) Dann gilt:
\[x = \frac{d_d z'}{d_n (1 - z')}.\]Wrapper für die Cephes [1] Routine
fdtri.Die F-Verteilung ist auch als
scipy.stats.fverfügbar. Das direkte Aufrufen vonfdtrikann die Leistung im Vergleich zurppfMethode vonscipy.stats.fverbessern (siehe letztes Beispiel unten).Referenzen
[1]Cephes Mathematical Functions Library, http://www.netlib.org/cephes/
Beispiele
fdtrirepräsentiert die Umkehrung der F-Verteilungs-CDF, die alsfdtrverfügbar ist. Hier berechnen wir die CDF fürdf1=1,df2=2beix=3.fdtrigibt dann3zurück, wenn die gleichen Werte für df1, df2 und den berechneten CDF-Wert verwendet werden.>>> import numpy as np >>> from scipy.special import fdtri, fdtr >>> df1, df2 = 1, 2 >>> x = 3 >>> cdf_value = fdtr(df1, df2, x) >>> fdtri(df1, df2, cdf_value) 3.000000000000006
Berechnen Sie die Funktion an mehreren Punkten, indem Sie ein NumPy-Array für x angeben.
>>> x = np.array([0.1, 0.4, 0.7]) >>> fdtri(1, 2, x) array([0.02020202, 0.38095238, 1.92156863])
Plotten Sie die Funktion für mehrere Parametersätze.
>>> import matplotlib.pyplot as plt >>> dfn_parameters = [50, 10, 1, 50] >>> dfd_parameters = [0.5, 1, 1, 5] >>> linestyles = ['solid', 'dashed', 'dotted', 'dashdot'] >>> parameters_list = list(zip(dfn_parameters, dfd_parameters, ... linestyles)) >>> x = np.linspace(0, 1, 1000) >>> fig, ax = plt.subplots() >>> for parameter_set in parameters_list: ... dfn, dfd, style = parameter_set ... fdtri_vals = fdtri(dfn, dfd, x) ... ax.plot(x, fdtri_vals, label=rf"$d_n={dfn},\, d_d={dfd}$", ... ls=style) >>> ax.legend() >>> ax.set_xlabel("$x$") >>> title = "F distribution inverse cumulative distribution function" >>> ax.set_title(title) >>> ax.set_ylim(0, 30) >>> plt.show()
Die F-Verteilung ist auch als
scipy.stats.fverfügbar. Die direkte Verwendung vonfdtrikann wesentlich schneller sein als das Aufrufen derppfMethode vonscipy.stats.f, insbesondere für kleine Arrays oder einzelne Werte. Um die gleichen Ergebnisse zu erzielen, muss die folgende Parametrisierung verwendet werden:stats.f(dfn, dfd).ppf(x)=fdtri(dfn, dfd, x).>>> from scipy.stats import f >>> dfn, dfd = 1, 2 >>> x = 0.7 >>> fdtri_res = fdtri(dfn, dfd, x) # this will often be faster than below >>> f_dist_res = f(dfn, dfd).ppf(x) >>> f_dist_res == fdtri_res # test that results are equal True