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

fdtr

F-Verteilung kumulative Verteilungsfunktion

fdtrc

F-Verteilung Überlebensfunktion

scipy.stats.f

F-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.f verfügbar. Das direkte Aufrufen von fdtri kann die Leistung im Vergleich zur ppf Methode von scipy.stats.f verbessern (siehe letztes Beispiel unten).

Referenzen

[1]

Cephes Mathematical Functions Library, http://www.netlib.org/cephes/

Beispiele

fdtri repräsentiert die Umkehrung der F-Verteilungs-CDF, die als fdtr verfügbar ist. Hier berechnen wir die CDF für df1=1, df2=2 bei x=3. fdtri gibt dann 3 zurü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()
../../_images/scipy-special-fdtri-1_00_00.png

Die F-Verteilung ist auch als scipy.stats.f verfügbar. Die direkte Verwendung von fdtri kann wesentlich schneller sein als das Aufrufen der ppf Methode von scipy.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