iqr#
- scipy.stats.iqr(x, axis=None, rng=(25, 75), scale=1.0, nan_policy='propagate', interpolation='linear', keepdims=False)[Quelle]#
Berechnet den Interquartilsabstand der Daten entlang der angegebenen Achse.
Der Interquartilsabstand (IQR) ist die Differenz zwischen dem 75. und dem 25. Perzentil der Daten. Er ist ein Maß für die Streuung, ähnlich der Standardabweichung oder Varianz, aber deutlich robuster gegenüber Ausreißern [2].
Der Parameter
rngerlaubt dieser Funktion, andere Perzentilbereiche als den tatsächlichen IQR zu berechnen. Beispielsweise ist die Einstellung vonrng=(0, 100)äquivalent zunumpy.ptp.Der IQR eines leeren Arrays ist np.nan.
Hinzugefügt in Version 0.18.0.
- Parameter:
- xarray_like
Eingabe-Array oder Objekt, das in ein Array konvertiert werden kann.
- axisint oder None, Standard: None
Wenn es sich um eine ganze Zahl handelt, ist dies die Achse des Eingabearrays, entlang der die Statistik berechnet wird. Die Statistik jedes Achsen-Slices (z. B. Zeile) der Eingabe erscheint dann in einem entsprechenden Element der Ausgabe. Wenn
None, wird die Eingabe vor der Berechnung der Statistik geglättet.- rngZweistufige Sequenz, die Gleitkommazahlen im Bereich [0,100] enthält, optional
Perzentile, über die der Bereich berechnet werden soll. Jede muss zwischen 0 und 100 liegen, einschließlich. Der Standardwert ist der tatsächliche IQR:
(25, 75). Die Reihenfolge der Elemente ist nicht wichtig.- scaleSkalar oder Zeichenkette oder Array-ähnlich aus reellen Zahlen, optional
Der numerische Wert von scale wird vom Endergebnis abgezogen. Die folgende Zeichenkettenwert wird ebenfalls erkannt
„normal“ : Skalieren mit \(2 \sqrt{2} erf^{-1}(\frac{1}{2}) \approx 1.349\).
Der Standardwert ist 1.0. Array-ähnliche scale vom realen dtype sind ebenfalls zulässig, solange sie korrekt auf die Ausgabe übertragen werden, sodass
out / scaleeine gültige Operation ist. Die Ausgabedimensionen hängen vom Eingabearray, x, dem Argument axis und dem Flag keepdims ab.- nan_policy{‘propagate’, ‘omit’, ‘raise’}
Definiert, wie Eingabe-NaNs behandelt werden.
propagate: Wenn ein NaN in der Achsen-Slice (z. B. Zeile) vorhanden ist, entlang der die Statistik berechnet wird, wird der entsprechende Eintrag der Ausgabe NaN sein.omit: NaNs werden bei der Berechnung weggelassen. Wenn im Achsen-Slice, entlang dem die Statistik berechnet wird, nicht genügend Daten verbleiben, wird der entsprechende Eintrag der Ausgabe NaN sein.raise: Wenn ein NaN vorhanden ist, wird einValueErrorausgelöst.
- interpolationZeichenkette, optional
Gibt die Interpolationsmethode an, die verwendet werden soll, wenn die Perzentilgrenzen zwischen zwei Datenpunkten
iundjliegen. Die folgenden Optionen sind verfügbar (Standard ist ‚linear‘)‚linear‘:
i + (j - i)*fraction, wobeifractionder Bruchteil des Index ist, der voniundjumschlossen wird.‚lower‘:
i.‚higher‘:
j.‚nearest‘:
ioderj, je nachdem, welcher am nächsten liegt.‚midpoint‘:
(i + j)/2.
Für NumPy >= 1.22.0 sind auch die zusätzlichen Optionen gültig, die durch das Schlüsselwort
methodvonnumpy.percentilebereitgestellt werden.- keepdimsbool, Standard: False
Wenn dies auf True gesetzt ist, bleiben die reduzierten Achsen im Ergebnis als Dimensionen mit der Größe eins erhalten. Mit dieser Option wird das Ergebnis korrekt gegen das Eingabearray gestreut (broadcasted).
- Rückgabe:
- iqrSkalar oder ndarray
Wenn
axis=None, wird ein Skalar zurückgegeben. Wenn die Eingabe Ganzzahlen oder Gleitkommazahlen mit geringerer Präzision alsnp.float64enthält, dann ist der Ausgabedatentypnp.float64. Andernfalls ist der Ausgabedatentyp derselbe wie der der Eingabe.
Hinweise
Seit SciPy 1.9 werden
np.matrix-Eingaben (für neuen Code nicht empfohlen) vor der Berechnung innp.ndarraykonvertiert. In diesem Fall ist die Ausgabe eine Skalar- odernp.ndarraymit geeigneter Form anstelle eines 2D-np.matrix. Ebenso werden, während maskierte Elemente von Masked Arrays ignoriert werden, die Ausgabe eine Skalar- odernp.ndarrayanstelle eines Masked Arrays mitmask=Falsesein.Referenzen
[1]„Interquartilsabstand“ https://en.wikipedia.org/wiki/Interquartile_range
[2]„Robuste Streuungsmaße“ https://en.wikipedia.org/wiki/Robust_measures_of_scale
[3]„Quantil“ https://en.wikipedia.org/wiki/Quantile
Beispiele
>>> import numpy as np >>> from scipy.stats import iqr >>> x = np.array([[10, 7, 4], [3, 2, 1]]) >>> x array([[10, 7, 4], [ 3, 2, 1]]) >>> iqr(x) 4.0 >>> iqr(x, axis=0) array([ 3.5, 2.5, 1.5]) >>> iqr(x, axis=1) array([ 3., 1.]) >>> iqr(x, axis=1, keepdims=True) array([[ 3.], [ 1.]])