scipy.stats.

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 rng erlaubt dieser Funktion, andere Perzentilbereiche als den tatsächlichen IQR zu berechnen. Beispielsweise ist die Einstellung von rng=(0, 100) äquivalent zu numpy.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 / scale eine 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 ein ValueError ausgelöst.

interpolationZeichenkette, optional

Gibt die Interpolationsmethode an, die verwendet werden soll, wenn die Perzentilgrenzen zwischen zwei Datenpunkten i und j liegen. Die folgenden Optionen sind verfügbar (Standard ist ‚linear‘)

  • ‚linear‘: i + (j - i)*fraction, wobei fraction der Bruchteil des Index ist, der von i und j umschlossen wird.

  • ‚lower‘: i.

  • ‚higher‘: j.

  • ‚nearest‘: i oder j, 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 method von numpy.percentile bereitgestellt 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 als np.float64 enthält, dann ist der Ausgabedatentyp np.float64. Andernfalls ist der Ausgabedatentyp derselbe wie der der Eingabe.

Siehe auch

numpy.std, numpy.var

Hinweise

Seit SciPy 1.9 werden np.matrix-Eingaben (für neuen Code nicht empfohlen) vor der Berechnung in np.ndarray konvertiert. In diesem Fall ist die Ausgabe eine Skalar- oder np.ndarray mit geeigneter Form anstelle eines 2D-np.matrix. Ebenso werden, während maskierte Elemente von Masked Arrays ignoriert werden, die Ausgabe eine Skalar- oder np.ndarray anstelle eines Masked Arrays mit mask=False sein.

Referenzen

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.]])