scipy.stats.

variation#

scipy.stats.variation(a, axis=0, nan_policy='propagate', ddof=0, *, keepdims=False)[Quelle]#

Berechnet den Variationskoeffizienten.

Der Variationskoeffizient ist die Standardabweichung geteilt durch den Mittelwert. Diese Funktion ist äquivalent zu

np.std(x, axis=axis, ddof=ddof) / np.mean(x)

Der Standardwert für ddof ist 0, aber viele Definitionen des Variationskoeffizienten verwenden die Quadratwurzel der unverzerrten Stichprobenvarianz für die Stichprobenstandardabweichung, was ddof=1 entspricht.

Die Funktion nimmt nicht den Absolutwert des Mittelwerts der Daten, daher ist der Rückgabewert negativ, wenn der Mittelwert negativ ist.

Parameter:
aarray_like

Eingabearray.

axisint oder None, Standard: 0

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.

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.

ddofint, optional

Gibt die „Delta-Freiheitsgrade“ an, die bei der Berechnung der Standardabweichung verwendet werden. Der Teiler bei der Berechnung der Standardabweichung ist N - ddof, wobei N die Anzahl der Elemente ist. ddof muss kleiner als N sein; andernfalls ist das Ergebnis nan oder inf, abhängig von N und den Werten im Array. Standardmäßig ist ddof aus Gründen der Abwärtskompatibilität Null, aber es wird empfohlen, ddof=1 zu verwenden, um sicherzustellen, dass die Stichprobenstandardabweichung als Quadratwurzel der unverzerrten Stichprobenvarianz berechnet wird.

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:
variationndarray

Die berechnete Variation entlang der angeforderten Achse.

Hinweise

Es gibt mehrere Randfälle, die ohne Warnung behandelt werden

  • Wenn sowohl der Mittelwert als auch die Standardabweichung Null sind, wird nan zurückgegeben.

  • Wenn der Mittelwert Null und die Standardabweichung ungleich Null ist, wird inf zurückgegeben.

  • Wenn die Eingabe die Länge Null hat (entweder weil das Array die Länge Null hat oder weil alle Eingabewerte nan sind und nan_policy auf 'omit' gesetzt ist), wird nan zurückgegeben.

  • Wenn die Eingabe inf enthält, wird nan zurückgegeben.

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

[1]

Zwillinger, D. und Kokoska, S. (2000). CRC Standard Probability and Statistics Tables and Formulae. Chapman & Hall: New York. 2000.

Beispiele

>>> import numpy as np
>>> from scipy.stats import variation
>>> variation([1, 2, 3, 4, 5], ddof=1)
0.5270462766947299

Berechnet die Variation entlang einer gegebenen Dimension eines Arrays, das einige nan-Werte enthält

>>> x = np.array([[  10.0, np.nan, 11.0, 19.0, 23.0, 29.0, 98.0],
...               [  29.0,   30.0, 32.0, 33.0, 35.0, 56.0, 57.0],
...               [np.nan, np.nan, 12.0, 13.0, 16.0, 16.0, 17.0]])
>>> variation(x, axis=1, ddof=1, nan_policy='omit')
array([1.05109361, 0.31428986, 0.146483  ])