quantile#
- scipy.stats.quantile(x, p, *, method='linear', axis=0, nan_policy='propagate', keepdims=None)[Quelle]#
Berechnet das p-te Quantil der Daten entlang der angegebenen Achse.
- Parameter:
- xarray_like von reellen Zahlen
Daten-Array.
- parray_like von float
Wahrscheinlichkeit oder Sequenz von Wahrscheinlichkeiten der zu berechnenden Quantile. Werte müssen zwischen 0 und 1 (einschließlich) liegen. Muss eine Länge von 1 entlang der Achse haben, es sei denn,
keepdims=True.- methodstr, Standard: ‘linear’
Die Methode zur Schätzung des Quantils. Die verfügbaren Optionen, nummeriert wie in [1], sind
‘inverted_cdf’
‘averaged_inverted_cdf’
‘closest_observation’
‘interpolated_inverted_cdf’
‘hazen’
‘weibull’
‘linear’ (Standard)
‘median_unbiased’
‘normal_unbiased’
‘harrell-davis’ ist ebenfalls verfügbar, um die Quantilschätzung gemäß [2] zu berechnen. Siehe Hinweise für Details.
- axisint oder None, Standard: 0
Achse, entlang der die Quantile berechnet werden.
Noneverflacht sowohl x als auch p vor der Berechnung, ohne zu prüfen, ob die ursprünglichen Formen kompatibel waren.- nan_policystr, Standard: ‘propagate’
Definiert, wie mit NaNs in den Eingabedaten x umgegangen wird.
propagate: Wenn ein NaN in dem Achsenslice (z. B. Zeile) vorhanden ist, entlang dem die Statistik berechnet wird, enthält der entsprechende Slice der Ausgabe NaN(s).omit: NaNs werden bei der Berechnung weggelassen. Wenn nicht genügend Daten im Achsenslice verbleiben, entlang dem die Statistik berechnet wird, enthält der entsprechende Slice der Ausgabe NaN(s).raise: Wenn ein NaN vorhanden ist, wird einValueErrorausgelöst.
Wenn NaNs in p vorhanden sind, wird ein
ValueErrorausgelöst.- keepdimsbool, optional
Betrachten Sie den Fall, dass x 1-D ist und p ein Skalar ist: das Quantil ist eine reduzierende Statistik, und das Standardverhalten ist, ein Skalar zurückzugeben. Wenn keepdims auf True gesetzt ist, wird die Achse nicht reduziert, und das Ergebnis ist ein 1-D-Array mit einem Element.
Der allgemeine Fall ist subtiler, da für jeden Achsenslice von x mehrere Quantile angefordert werden können. Wenn beispielsweise sowohl x als auch p 1-D sind und
p.size > 1ist, kann keine Achse reduziert werden; es muss eine Achse geben, die die Anzahl der durchp.sizegegebenen Quantile enthält. DaherStandardmäßig wird die Achse reduziert, wenn möglich (d. h. wenn es genau ein Element von q pro Achsenslice von x gibt).
Wenn keepdims auf True gesetzt ist, wird die Achse nicht reduziert.
Wenn keepdims auf False gesetzt ist, wird die Achse reduziert, wenn möglich, und andernfalls wird ein Fehler ausgelöst.
- Rückgabe:
- quantileSkalar oder ndarray
Das/die resultierende(n) Quantil(e). Der dtype ist der Ergebnis-dtype von x und p.
Hinweise
Gegeben eine Stichprobe x aus einer zugrunde liegenden Verteilung, bietet
quantileeine nichtparametrische Schätzung der inversen kumulativen Verteilungsfunktion.Standardmäßig geschieht dies durch Interpolation zwischen benachbarten Elementen in
y, einer sortierten Kopie von x(1-g)*y[j] + g*y[j+1]
wobei der Index
jund der Koeffizientgdie ganzzahligen und gebrochenen Komponenten vonp * (n-1)sind, undndie Anzahl der Elemente in der Stichprobe ist.Dies ist ein Sonderfall der Gleichung 1 von H&F [1]. Allgemeiner gilt:
j = (p*n + m - 1) // 1, undg = (p*n + m - 1) % 1,
wobei
mgemäß verschiedenen Konventionen definiert sein kann. Die bevorzugte Konvention kann über den Parametermethodausgewählt werdenMethodeNummer in H&F
minterpolated_inverted_cdf4
0hazen5
1/2weibull6
plinear(Standard)7
1 - pmedian_unbiased8
p/3 + 1/3normal_unbiased9
p/4 + 3/8Beachten Sie, dass die Indizes
jundj + 1auf den Bereich0bisn - 1beschnitten werden, wenn die Ergebnisse der Formel außerhalb des zulässigen Bereichs nicht-negativer Indizes liegen würden. Wennjauf null beschnitten wird, wird auchgauf null gesetzt. Die-1in den Formeln fürjundgberücksichtigt die 0-basierte Indizierung von Python.Die obige Tabelle enthält nur die Schätzer aus [1], die kontinuierliche Funktionen der Wahrscheinlichkeit p sind (Schätzer 4-9). SciPy bietet auch die drei diskontinuierlichen Schätzer aus [1] (Schätzer 1-3), wobei
jwie oben definiert ist,mwie folgt definiert ist undggleich0ist, wennindex = p*n + m - 1kleiner als0ist, und andernfalls wie unten definiert ist.inverted_cdf:m = 0undg = int(index - j > 0)averaged_inverted_cdf:m = 0undg = (1 + int(index - j > 0)) / 2closest_observation:m = -1/2undg = 1 - int((index == j) & (j%2 == 1))
Eine andere Strategie zur Berechnung von Quantilen aus [2],
method='harrell-davis', verwendet eine gewichtete Kombination aller Elemente. Die Gewichte werden berechnet als\[w_{n, i} = I_{i/n}(a, b) - I_{(i - 1)/n}(a, b)\]wobei \(n\) die Anzahl der Elemente in der Stichprobe ist, \(i\) die Indizes \(1, 2, ..., n-1, n\) der sortierten Elemente sind, \(a = p (n + 1)\), \(b = (1 - p)(n + 1)\), \(p\) die Wahrscheinlichkeit des Quantils ist und \(I\) die regularisierte, untere unvollständige Betafunktion ist (
scipy.special.betainc).Referenzen
Beispiele
>>> import numpy as np >>> from scipy import stats >>> x = np.asarray([[10, 8, 7, 5, 4], ... [0, 1, 2, 3, 5]])
Nimmt den Median entlang der letzten Achse.
>>> stats.quantile(x, 0.5, axis=-1) array([7., 2.])
Nimmt ein anderes Quantil entlang jeder Achse.
>>> stats.quantile(x, [[0.25], [0.75]], axis=-1, keepdims=True) array([[5.], [3.]])
Nimmt mehrere Quantile entlang jeder Achse.
>>> stats.quantile(x, [0.25, 0.75], axis=-1) array([[5., 8.], [1., 3.]])