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
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
Rbeinhalten, wurden vorgeschlagen, darunter1 - R[1],1 - R**2[2] und2 * (1 - R)[2]. Anstatt eine auszuwählen, gibt diese FunktionRals Attribut mean_resultant_length zurück, sodass der Benutzer sein bevorzugtes Streuungsmaß berechnen kann.Referenzen
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_statsist 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 - Raus [2] verwenden, wobeiRdie 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