scipy.stats.

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 ein ValueError ausgelö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], wobei 0 keine Varianz und 1 große Varianz anzeigt.

Wenn das Eingabearray leer ist, wird np.nan zurückgegeben.

Siehe auch

circmean

Zirkulärer Mittelwert.

circstd

Zirkuläre Standardabweichung.

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 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]

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()
../../_images/scipy-stats-circvar-1.png