circvar#
- scipy.stats.circvar(samples, high=6.283185307179586, low=0, axis=None, nan_policy='propagate', *, keepdims=False)[Quelle]#
Berechnet die zirkuläre Varianz einer Stichprobe von Winkelbeobachtungen.
Gegeben \(n\) Winkelbeobachtungen \(x_1, \cdots, x_n\), gemessen in Radiant, ist ihre zirkuläre Varianz definiert durch ([2], Gl. 2.3.3)
\[1 - \left| \frac{1}{n} \sum_{k=1}^n e^{i x_k} \right|\]wobei \(i\) die imaginäre Einheit ist und \(|z|\) die Länge der komplexen Zahl \(z\) angibt. \(|z|\) im obigen Ausdruck ist bekannt als die mittlere resultierende Länge.
- Parameter:
- samplesarray_like
Eingabearray von Winkelbeobachtungen. Der Wert eines vollen Winkels entspricht
(high - low).- highfloat, optional
Obere Grenze des Hauptwertes eines Winkels. Standardwert ist
2*pi.- lowfloat, optional
Untere Grenze des Hauptwertes eines Winkels. Standardwert ist
0.- 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.- 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 einValueErrorausgelöst.
- 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:
- circvarfloat
Zirkuläre Varianz. Der zurückgegebene Wert liegt im Bereich
[0, 1], wobei0keine Varianz und1große Varianz anzeigt.Wenn das Eingabearray leer ist, wird
np.nanzurückgegeben.
Hinweise
Im Grenzfall kleiner Winkel ist die zirkuläre Varianz nahe der halben "linearen" Varianz, wenn sie in Radiant gemessen wird.
Seit SciPy 1.9 werden
np.matrix-Eingaben (für neuen Code nicht empfohlen) vor der Berechnung innp.ndarraykonvertiert. In diesem Fall ist die Ausgabe eine Skalar- odernp.ndarraymit geeigneter Form anstelle eines 2D-np.matrix. Ebenso werden, während maskierte Elemente von Masked Arrays ignoriert werden, die Ausgabe eine Skalar- odernp.ndarrayanstelle eines Masked Arrays mitmask=Falsesein.Referenzen
[1]Fisher, N.I. Statistical analysis of circular data. Cambridge University Press, 1993.
[2]Mardia, K. V. und Jupp, P. E. Directional Statistics. John Wiley & Sons, 1999.
Beispiele
>>> import numpy as np >>> from scipy.stats import circvar >>> import matplotlib.pyplot as plt >>> samples_1 = np.array([0.072, -0.158, 0.077, 0.108, 0.286, ... 0.133, -0.473, -0.001, -0.348, 0.131]) >>> samples_2 = np.array([0.111, -0.879, 0.078, 0.733, 0.421, ... 0.104, -0.136, -0.867, 0.012, 0.105]) >>> circvar_1 = circvar(samples_1) >>> circvar_2 = circvar(samples_2)
Zeichnen Sie die Stichproben.
>>> fig, (left, right) = plt.subplots(ncols=2) >>> for image in (left, right): ... image.plot(np.cos(np.linspace(0, 2*np.pi, 500)), ... np.sin(np.linspace(0, 2*np.pi, 500)), ... c='k') ... image.axis('equal') ... image.axis('off') >>> left.scatter(np.cos(samples_1), np.sin(samples_1), c='k', s=15) >>> left.set_title(f"circular variance: {np.round(circvar_1, 2)!r}") >>> right.scatter(np.cos(samples_2), np.sin(samples_2), c='k', s=15) >>> right.set_title(f"circular variance: {np.round(circvar_2, 2)!r}") >>> plt.show()