Testen Sie, ob mehrdimensionale Verteilungen gleich sind

15

Nehmen wir an, ich habe zwei oder mehr Stichprobenpopulationen von n-dimensionalen Vektoren mit kontinuierlichem Wert. Gibt es eine nichtparametrische Möglichkeit zu testen, ob diese Proben von derselben Verteilung stammen? Wenn ja, gibt es dafür eine Funktion in R oder Python?

mbc
quelle
2
Der Kolmogorov-Smirnov-Test ist ein typisches nicht-parametrisches Werkzeug zum Testen, ob zwei Verteilungen gleich sind. Ich kenne es nicht, aber Wikipedia bezieht sich auf Justel, A., Peña, D. und Zamar, R. (1997) Ein multivariater Kolmogorov-Smirnov-Test der Anpassungsgüte. 251-259 . für eine multivariate Erweiterung dieses Tests.
Makro
1
Es gibt eine CV-Frage, die dies in zwei Dimensionen behandelt: stats.stackexchange.com/questions/25946/… . Selbst in zwei Dimensionen gibt es keine Standardmethode.
Flunder

Antworten:

8

Ich habe gerade viel über multivariate Tests mit zwei Stichproben geforscht, als ich feststellte, dass der Kolmogorov-Smirnov-Test nicht multivariat war. Also habe ich mir den Chi-Test, Hotellings T ^ 2, Anderson-Darling, Cramer-von-Mises-Kriterium, Shapiro-Wilk usw. angeschaut. Sie müssen vorsichtig sein, da einige dieser Tests darauf beruhen, dass die Vektoren verglichen werden, um gleich zu sein Länge. Andere werden nur verwendet, um die Annahme der Normalität abzulehnen, nicht um zwei Stichprobenverteilungen zu vergleichen.

Die führende Lösung scheint die kumulativen Verteilungsfunktionen der beiden Stichproben mit allen möglichen Reihenfolgen zu vergleichen, die, wie Sie vielleicht vermuten, sehr rechenintensiv sind, und zwar in der Größenordnung von Minuten für einen einzelnen Durchlauf einer Stichprobe mit einigen tausend Datensätzen:

https://cran.r-project.org/web/packages/Peacock.test/Peacock.test.pdf

Wie die Dokumentation von Xiao feststellt, ist der Fasano- und Franceschini-Test eine Variante des Peacock-Tests:

http://adsabs.harvard.edu/abs/1987MNRAS.225..155F

Der Fasano- und der Franceschini-Test sollten weniger rechenintensiv sein, aber ich habe keine Implementierung ihrer Arbeit in R gefunden.

Für diejenigen unter Ihnen, die die rechnerischen Aspekte des Peacock-versus-Fasano- und des Franceschini-Tests untersuchen möchten, lesen Sie die rechnerisch effizienten Algorithmen für den zweidimensionalen Kolmogorov-Smirnov-Test

L Fischman
quelle
Was ist die kumulative Verteilung für Multivariate?
Aksakal
2
@Aksakal mit Verallgemeinerungen bis zu variiert und die multivariate empirische kumulative Verteilungsfunktion wird ähnlich geschätzt . F(x,y)=P(X<x,Y<y)pF(x,y)=i=1nI(Xi<x,Yi<y)/n
AdamO
2
Schön und prägnant, AdamO. Der Peacock-Test scheint geradezu albern, wenn man nicht beschneidet, wie es Fasano und Franceschini tun. Hoffen wir, dass sich jemand entscheidet, es eines Tages für R zu kodieren. Dies ist besonders hilfreich, wenn Sie Datensätze weiter zerlegt haben, möglicherweise durch eine kategoriale Variable, und prüfen möchten, ob Ihre Zerlegungen tatsächlich aus unterschiedlichen Verteilungen stammen.
L Fischman
1

Das R-Paket np (nicht parametrisch) hat einen Test für die Gleichheit der Dichten von kontinuierlichen und kategorialen Daten unter Verwendung der integrierten quadrierten Dichte. Li, Maasoumi und Racine

Sowie np conditional pdf in Abschnitt 6 .

ran8
quelle
1

Ja, es gibt nichtparametrische Methoden zum Testen, ob zwei multivariate Stichproben aus derselben gemeinsamen Verteilung stammen. Ich werde Details erwähnen, die nicht von L Fischman erwähnt wurden . Das grundlegende Problem, das Sie stellen, kann als "Zwei-Stichproben-Problem" bezeichnet werden. Derzeit wird in Zeitschriften wie Journal of Machine Learning Research und Annals of Statistics und anderen viel geforscht . Mit meinem geringen Wissen über dieses Problem kann ich folgende Anweisungen geben

  • Ein neuerer Weg, die multivariaten Stichproben zu testen, ist die Maximum Mean Discrepancy (MMD). Verwandte Literatur: Arthur Gretton 2012 , Bharath 2010 und andere. Weitere verwandte Methoden finden Sie in diesen Forschungsartikeln. Bei Interesse lesen Sie bitte die Artikel, in denen diese Artikel zitiert sind, um sich einen Überblick über den Stand der Technik bei diesem Problem zu verschaffen. Und JA, dafür gibt es R-Implementierungen.

Wenn Sie verschiedene Punktmengen (Beispielmengen) mit der Referenzmenge vergleichen möchten, können Sie die f-Divergenz verwenden , um festzustellen, inwieweit sie der Referenzmenge nahekommen .

  • Ein beliebter Spezialfall ist die Kullback-Leibler-Divergenz . Dies wird in vielen maschinellen Lernprogrammen verwendet. Dies kann wiederum auf zwei Arten geschehen; Through Parzen Window (Kernel) -Ansatz und K-Nearest Neighbor PDF-Schätzer.

Es kann auch andere Ansätze geben. Diese Antwort ist in keiner Weise eine umfassende Behandlung Ihrer Frage.

Krishna
quelle