scipy.stats.

directional_stats#

scipy.stats.directional_stats(samples, *, axis=0, normalize=True)[Quelle]#

Berechnet Stichprobenstatistiken für gerichtete Daten.

Berechnet den gerichteten Mittelwert (auch als mittlerer Richtungsvektor bezeichnet) und die mittlere resultierende Länge einer Stichprobe von Vektoren.

Der gerichtete Mittelwert ist ein Maß für die „bevorzugte Richtung“ von Vektordaten. Er ist analog zum Stichprobenmittelwert, wird jedoch für Fälle verwendet, in denen die Länge der Daten irrelevant ist (z. B. Einheitsvektoren).

Die mittlere resultierende Länge ist ein Wert zwischen 0 und 1, der zur Quantifizierung der Streuung gerichteter Daten verwendet wird: Je kleiner die mittlere resultierende Länge, desto größer die Streuung. Mehrere Definitionen der gerichteten Varianz, die die mittlere resultierende Länge beinhalten, sind in [1] und [2] aufgeführt.

Parameter:
samplesarray_like

Eingabearray. Muss mindestens zweidimensional sein, und die letzte Achse des Inputs muss der Dimensionalität des Vektorraums entsprechen. Wenn der Input genau zweidimensional ist, bedeutet dies, dass jede Zeile der Daten eine Vektorbeobachtung ist.

axisint, Standard: 0

Achse, entlang derer der gerichtete Mittelwert berechnet wird.

normalize: boolean, default: True

Wenn True, normalisieren Sie die Eingabe, um sicherzustellen, dass jede Beobachtung ein Einheitsvektor ist. Wenn die Beobachtungen bereits Einheitsvektoren sind, sollten Sie dies auf False setzen, um unnötige Berechnungen zu vermeiden.

Rückgabe:
resDirectionalStats

Ein Objekt, das Attribute enthält

mean_directionndarray

Gerichteter Mittelwert.

mean_resultant_lengthndarray

Die mittlere resultierende Länge [1].

Siehe auch

circmean

kreisrunder Mittelwert; d.h. gerichteter Mittelwert für 2D-Winkel

circvar

kreisrunde Varianz; d.h. gerichtete Varianz für 2D-Winkel

Hinweise

Dies verwendet eine Definition des gerichteten Mittelwerts aus [1]. Unter der Annahme, dass die Beobachtungen Einheitsvektoren sind, erfolgt die Berechnung wie folgt.

mean = samples.mean(axis=0)
mean_resultant_length = np.linalg.norm(mean)
mean_direction = mean / mean_resultant_length

Diese Definition ist für gerichtete Daten (d.h. Vektordaten, bei denen die Magnitude jeder Beobachtung irrelevant ist) geeignet, aber nicht für axiale Daten (d.h. Vektordaten, bei denen die Magnitude und das Vorzeichen jeder Beobachtung irrelevant sind).

Mehrere Definitionen der gerichteten Varianz, die die mittlere resultierende Länge R beinhalten, wurden vorgeschlagen, darunter 1 - R [1], 1 - R**2 [2] und 2 * (1 - R) [2]. Anstatt eine auszuwählen, gibt diese Funktion R als Attribut mean_resultant_length zurück, sodass der Benutzer sein bevorzugtes Streuungsmaß berechnen kann.

Referenzen

[1] (1,2,3,4)

Mardia, Jupp. (2000). Directional Statistics (S. 163). Wiley.

Beispiele

>>> import numpy as np
>>> from scipy.stats import directional_stats
>>> data = np.array([[3, 4],    # first observation, 2D vector space
...                  [6, -8]])  # second observation
>>> dirstats = directional_stats(data)
>>> dirstats.mean_direction
array([1., 0.])

Im Gegensatz dazu wäre der normale Stichprobenmittelwert der Vektoren von der Magnitude jeder Beobachtung beeinflusst. Außerdem wäre das Ergebnis kein Einheitsvektor.

>>> data.mean(axis=0)
array([4.5, -2.])

Ein beispielhafter Anwendungsfall für directional_stats ist die Ermittlung eines aussagekräftigen Zentrums für eine Menge von Beobachtungen auf einer Kugel, z. B. geografische Standorte.

>>> data = np.array([[0.8660254, 0.5, 0.],
...                  [0.8660254, -0.5, 0.]])
>>> dirstats = directional_stats(data)
>>> dirstats.mean_direction
array([1., 0., 0.])

Der normale Stichprobenmittelwert liefert im Gegensatz dazu ein Ergebnis, das nicht auf der Oberfläche der Kugel liegt.

>>> data.mean(axis=0)
array([0.8660254, 0., 0.])

Die Funktion gibt auch die mittlere resultierende Länge zurück, die zur Berechnung einer gerichteten Varianz verwendet werden kann. Wenn wir beispielsweise die Definition Var(z) = 1 - R aus [2] verwenden, wobei R die mittlere resultierende Länge ist, können wir die gerichtete Varianz der Vektoren im obigen Beispiel wie folgt berechnen:

>>> 1 - dirstats.mean_resultant_length
0.13397459716167093