scipy.stats.

median_abs_deviation#

scipy.stats.median_abs_deviation(x, axis=0, center=<function median>, scale=1.0, nan_policy='propagate')[Quellcode]#

Berechnet die mediane absolute Abweichung der Daten entlang der angegebenen Achse.

Die mediane absolute Abweichung (MAD, [1]) berechnet den Median über die absoluten Abweichungen vom Median. Sie ist ein Maß für die Streuung, ähnlich der Standardabweichung, aber robuster gegenüber Ausreißern [2].

Die MAD eines leeren Arrays ist np.nan.

Hinzugefügt in Version 1.5.0.

Parameter:
xarray_like

Eingabe-Array oder Objekt, das in ein Array konvertiert werden kann.

axisint oder None, optional

Achse, entlang derer der Bereich berechnet wird. Standard ist 0. Wenn None, wird die MAD über das gesamte Array berechnet.

centercallable, optional

Eine Funktion, die den zentralen Wert zurückgibt. Standardmäßig wird np.median verwendet. Jede benutzerdefinierte Funktion muss die Funktionssignatur func(arr, axis) haben.

scaleskalar oder str, optional

Der numerische Wert von scale wird vom Endergebnis abgezogen. Standard ist 1.0. Der String „normal“ wird ebenfalls akzeptiert und führt dazu, dass scale der Kehrwert der Standardnormalverteilungsquantilfunktion bei 0,75 ist, was ungefähr 0,67449 entspricht. Array-ähnliche Skalen sind ebenfalls zulässig, solange sie korrekt mit der Ausgabe broadcasten, sodass out / scale eine gültige Operation ist. Die Ausgabedimensionen hängen vom Eingabearray, x, und dem axis-Argument ab.

nan_policy{‘propagate’, ‘raise’, ‘omit’}, optional

Definiert, wie mit NaN-Werten im Input umgegangen wird. Die folgenden Optionen sind verfügbar (Standard ist ‘propagate’)

  • ‘propagate’: gibt NaN zurück

  • ‘raise’: löst einen Fehler aus

  • ‘omit’: führt die Berechnungen unter Ignorierung von NaN-Werten durch

Rückgabe:
madskalar oder ndarray

Wenn axis=None, wird ein Skalar zurückgegeben. Wenn die Eingabe Ganzzahlen oder Fließkommazahlen mit geringerer Präzision als np.float64 enthält, ist der Datentyp der Ausgabe np.float64. Andernfalls entspricht der Datentyp der Ausgabe dem der Eingabe.

Hinweise

Das Argument center beeinflusst nur die Berechnung des zentralen Wertes, um den die MAD berechnet wird. Das heißt, wenn center=np.mean übergeben wird, wird die MAD um den Mittelwert berechnet – es wird nicht die *mittlere absolute Abweichung* berechnet.

Das Eingabearray kann inf enthalten, aber wenn center inf zurückgibt, ist die entsprechende MAD für diese Daten nan.

Referenzen

[1]

„Median absolute deviation“, https://en.wikipedia.org/wiki/Median_absolute_deviation

[2]

„Robust measures of scale“, https://en.wikipedia.org/wiki/Robust_measures_of_scale

Beispiele

Beim Vergleich des Verhaltens von median_abs_deviation mit np.std wird letzteres beeinflusst, wenn wir einen einzelnen Wert eines Arrays zu einem Ausreißerwert ändern, während sich die MAD kaum ändert

>>> import numpy as np
>>> from scipy import stats
>>> x = stats.norm.rvs(size=100, scale=1, random_state=123456)
>>> x.std()
0.9973906394005013
>>> stats.median_abs_deviation(x)
0.82832610097857
>>> x[0] = 345.6
>>> x.std()
34.42304872314415
>>> stats.median_abs_deviation(x)
0.8323442311590675

Beispiel für Achsenbehandlung

>>> x = np.array([[10, 7, 4], [3, 2, 1]])
>>> x
array([[10,  7,  4],
       [ 3,  2,  1]])
>>> stats.median_abs_deviation(x)
array([3.5, 2.5, 1.5])
>>> stats.median_abs_deviation(x, axis=None)
2.0

Beispiel für normale Skalierung

>>> x = stats.norm.rvs(size=1000000, scale=2, random_state=123456)
>>> stats.median_abs_deviation(x)
1.3487398527041636
>>> stats.median_abs_deviation(x, scale='normal')
1.9996446978061115