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
Truegesetzt 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 einValueErrorausgelö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.
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=1vom Standardwert abweicht, der von ähnlichen Funktionen wienumpy.stdundnumpy.varverwendet 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 Standardabweichungexp(std(log(a))).gstdhat 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 UmgebungsvariableSCIPY_ARRAY_API=1setzen 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])