Das Testen auf Gleichförmigkeit ist etwas übliches, ich frage mich jedoch, wie dies für eine mehrdimensionale Punktewolke gemacht werden kann.
Das Testen auf Gleichförmigkeit ist etwas übliches, ich frage mich jedoch, wie dies für eine mehrdimensionale Punktewolke gemacht werden kann.
Antworten:
Die Standardmethode verwendet die K-Funktion von Ripley oder eine davon abgeleitete Funktion , z. B. eine L-Funktion. Dies ist eine grafische Darstellung, die die durchschnittliche Anzahl der Nachbarn der Punkte als Funktion des maximalen Abstands ( ) zusammenfasst. Für eine gleichmäßige Verteilung in n Dimensionen sollte sich dieser Durchschnitt wie ρ n verhalten : und dies wird immer für kleine ρ gelten . Es weicht von diesem Verhalten aufgrund von Clustering, anderen Formen der räumlichen Nichtunabhängigkeit und Randeffekten ab (daher ist es wichtig, den von den Punkten abgetasteten Bereich anzugeben). Wegen dieser Komplikation - die als schlimmer wirdsteigt - in den meisten Anwendungen wird ein Konfidenzband für die Null-K-Funktion durch Simulation erstellt und die beobachtete K-Funktion wird überzeichnet, um Abweichungen zu erkennen. Mit einigem Nachdenken und Erfahrung können die Exkursionen als Tendenzen zur Häufung oder nicht in bestimmten Entfernungen interpretiert werden.
Beispiele für eine K-Funktion und ihre zugehörige L-Funktion aus Dixon (2001), ibid. Die L-Funktion ist so aufgebaut, dass für eine gleichmäßige Verteilung die horizontale Linie bei Null ist: eine gute visuelle Referenz. Die gestrichelten Linien sind Konfidenzbänder für dieses spezielle Untersuchungsgebiet, die mittels Simulation berechnet wurden. Die durchgehende graue Kurve ist die L-Funktion für die Daten. Die positive Auslenkung bei Entfernungen von 0 bis 20 m deutet auf eine Häufung bei diesen Entfernungen hin.
Als Antwort auf eine verwandte Frage habe ich unter /stats//a/7984 ein Beispiel veröffentlicht, in dem ein Diagramm aus der K-Funktion für eine gleichmäßige Verteilung auf einer in R 3 eingebetteten zweidimensionalen Mannigfaltigkeit abgeleitet wurde ist geschätzt durch Simulation.
In funktionieren R
die spatstatkest
und k3est
berechnen die K-Funktion für bzw. n = 3 . In mehr als 3 Dimensionen sind Sie wahrscheinlich alleine, aber die Algorithmen wären genau gleich. Sie können die Berechnungen aus einer Distanzmatrix durchführen, wie sie von berechnet wurde (mit mäßiger Effizienz) .stats::dist
Es stellt sich heraus, dass die Frage schwieriger ist als ich dachte. Trotzdem machte ich meine Hausaufgaben und nachdem ich mich umgesehen hatte, fand ich zwei Methoden zusätzlich zu Ripleys Funktionen, um die Gleichförmigkeit in mehreren Dimensionen zu testen.
Ich habe ein R-Paket namens erstellt unf
, das beide Tests implementiert. Sie können es von github unter https://github.com/gui11aume/unf herunterladen . Ein großer Teil davon befindet sich in C, sodass Sie es auf Ihrem Computer mit kompilieren müssenR CMD INSTALL unf
. Die Artikel, auf denen die Implementierung basiert, sind im Paket im PDF-Format enthalten.
Die erste Methode stammt aus einer von @Procrastinator erwähnten Literaturstelle ( Testen der multivariaten Gleichförmigkeit und ihrer Anwendungen, Liang et al., 2000 ) und ermöglicht das Testen der Gleichförmigkeit nur auf dem Einheitshypercube. Die Idee ist, Diskrepanzstatistiken zu entwerfen, die nach dem zentralen Grenzwertsatz asymptotisch Gaußsch sind. Dies ermöglicht die Berechnung einer Statistik, die die Grundlage des Tests ist.
library(unf)
set.seed(123)
# Put 20 points uniformally in the 5D hypercube.
x <- matrix(runif(100), ncol=20)
liang(x) # Outputs the p-value of the test.
[1] 0.9470392
Der zweite Ansatz ist weniger konventionell und verwendet minimale Spannbäume . Die ersten Arbeiten wurden 1979 von Friedman & Rafsky durchgeführt (Referenz in der Packung), um zu testen, ob zwei multivariate Stichproben aus derselben Verteilung stammen. Das Bild unten zeigt das Prinzip.
Punkte aus zwei bivariaten Stichproben werden abhängig von ihrer ursprünglichen Stichprobe in Rot oder Blau dargestellt (linkes Feld). Der minimale Spannbaum der gepoolten Stichprobe in zwei Dimensionen wird berechnet (mittleres Feld). Dies ist der Baum mit der minimalen Summe der Kantenlängen. Der Baum wird in Teilbäume zerlegt, in denen alle Punkte die gleichen Bezeichnungen haben (rechtes Feld).
In der folgenden Abbildung zeige ich einen Fall, in dem blaue Punkte aggregiert werden, wodurch sich die Anzahl der Bäume am Ende des Prozesses verringert, wie Sie auf der rechten Seite sehen können. Friedman und Rafsky haben die asymptotische Verteilung der Anzahl der Bäume berechnet, die man in diesem Prozess erhält, wodurch ein Test durchgeführt werden kann.
Diese Idee, einen allgemeinen Test für die Homogenität einer multivariaten Stichprobe zu erstellen, wurde 1984 von Smith und Jain entwickelt und von Ben Pfaff in C umgesetzt (Referenz in der Packung). Die zweite Probe wird gleichmäßig in der ungefähren konvexen Hülle der ersten Probe erzeugt, und der Test von Friedman und Rafsky wird an dem Pool mit zwei Proben durchgeführt.
Der Vorteil des Verfahrens besteht darin, dass es die Gleichmäßigkeit für jede konvexe multivariate Form und nicht nur für den Hypercube testet. Der große Nachteil besteht darin, dass der Test eine zufällige Komponente aufweist, da die zweite Stichprobe zufällig generiert wird. Natürlich kann man den Test wiederholen und die Ergebnisse mitteln, um eine reproduzierbare Antwort zu erhalten, aber das ist nicht praktisch.
Fortsetzung der vorherigen R-Sitzung, hier ist, wie es geht.
pfaff(x) # Outputs the p-value of the test.
pfaff(x) # Most likely another p-value.
Fühlen Sie sich frei, den Code von github zu kopieren / abzweigen.