scipy.stats.

gstd#

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

Berechnet die geometrische Standardabweichung eines Arrays.

Die geometrische Standardabweichung beschreibt die Streuung einer Menge von Zahlen, bei der der geometrische Mittelwert bevorzugt wird. Sie ist ein multiplikativer Faktor und somit eine dimensionslose Größe.

Sie ist definiert als die Exponentialfunktion der Standardabweichung der natürlichen Logarithmen der Beobachtungen.

Parameter:
aarray_like

Ein Array, das endliche, strikt positive, reelle Zahlen enthält.

axisint, tuple oder None, optional

Achse, entlang der operiert werden soll. Standard ist 0. Wenn None, wird über das gesamte Array a berechnet.

ddofint, optional

Freiheitsgradkorrektur bei der Berechnung der geometrischen Standardabweichung. Standard ist 1.

keepdimsboolean, optional

Wenn dies auf True gesetzt ist, bleiben die reduzierten Achsen im Ergebnis als Dimensionen mit der Länge eins erhalten. Mit dieser Option wird das Ergebnis korrekt gegen das Eingabearray gebroadcastet.

nan_policy{‘propagate’, ‘omit’, ‘raise’}, Standard: ‘propagate’

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.

Rückgabe:
gstdndarray oder float

Ein Array der geometrischen Standardabweichung. Wenn axis None ist oder a ein 1D-Array ist, wird ein Float zurückgegeben.

Siehe auch

gmean

Geometrisches Mittel

numpy.std

Standardabweichung

gzscore

Geometrische Standard-Score

Hinweise

Mathematisch kann die Stichproben-Geometrische Standardabweichung \(s_G\) in Bezug auf die natürlichen Logarithmen der Beobachtungen \(y_i = \log(x_i)\) definiert werden

\[s_G = \exp(s), \quad s = \sqrt{\frac{1}{n - d} \sum_{i=1}^n (y_i - \bar y)^2}\]

wobei \(n\) die Anzahl der Beobachtungen ist, \(d\) die Anpassung ddof an die Freiheitsgrade ist und \(\bar y\) den Mittelwert der natürlichen Logarithmen der Beobachtungen bezeichnet. Beachten Sie, dass der Standardwert ddof=1 vom Standardwert abweicht, der von ähnlichen Funktionen wie numpy.std und numpy.var verwendet wird.

Wenn eine Beobachtung unendlich ist, ist die geometrische Standardabweichung NaN (undefiniert). Nicht-positive Beobachtungen erzeugen ebenfalls NaNs in der Ausgabe, da der *natürliche* Logarithmus (im Gegensatz zum *komplexen* Logarithmus) nur für positive reelle Zahlen definiert und endlich ist. Die geometrische Standardabweichung wird manchmal mit der Exponentialfunktion der Standardabweichung, exp(std(a)), verwechselt. Stattdessen ist die geometrische Standardabweichung exp(std(log(a))).

gstd hat experimentelle Unterstützung für Backends, die mit dem Python Array API Standard kompatibel sind, zusätzlich zu NumPy. Bitte erwägen Sie, diese Funktionen zu testen, indem Sie die Umgebungsvariable SCIPY_ARRAY_API=1 setzen und CuPy-, PyTorch-, JAX- oder Dask-Arrays als Array-Argumente bereitstellen. Die folgenden Kombinationen aus Backend und Gerät (oder anderer Fähigkeit) werden unterstützt.

Bibliothek

CPU

GPU

NumPy

n/a

CuPy

n/a

PyTorch

JAX

Dask

n/a

Siehe Unterstützung für den Array API Standard für weitere Informationen.

Referenzen

[1]

„Geometric standard deviation“, Wikipedia, https://en.wikipedia.org/wiki/Geometric_standard_deviation.

[2]

Kirkwood, T. B., „Geometric means and measures of dispersion“, Biometrics, vol. 35, S. 908-909, 1979

Beispiele

Finden Sie die geometrische Standardabweichung einer log-normal verteilten Stichprobe. Beachten Sie, dass die Standardabweichung der Verteilung eins ist; auf einer logarithmischen Skala entspricht dies ungefähr exp(1).

>>> import numpy as np
>>> from scipy.stats import gstd
>>> rng = np.random.default_rng()
>>> sample = rng.lognormal(mean=0, sigma=1, size=1000)
>>> gstd(sample)
2.810010162475324

Berechnet die geometrische Standardabweichung eines mehrdimensionalen Arrays und entlang einer gegebenen Achse.

>>> a = np.arange(1, 25).reshape(2, 3, 4)
>>> gstd(a, axis=None)
2.2944076136018947
>>> gstd(a, axis=2)
array([[1.82424757, 1.22436866, 1.13183117],
       [1.09348306, 1.07244798, 1.05914985]])
>>> gstd(a, axis=(1,2))
array([2.12939215, 1.22120169])