Tester si les distributions multidimensionnelles sont les mêmes

15

Disons que j'ai deux ou plusieurs populations d'échantillons de vecteurs à valeurs continues à n dimensions. Existe-t-il un moyen non paramétrique de tester si ces échantillons proviennent de la même distribution? Si oui, existe-t-il une fonction en R ou en python pour cela?

mbc
la source
2
Le test de Kolmogorov-Smirnov est un outil non paramétrique typique pour tester si deux distributions sont identiques. Je ne le connais pas, mais wikipedia fait référence à Justel, A., Peña, D. et Zamar, R. (1997) A multivariate Kolmogorov-Smirnov test of goodness of fit, Statistics & Probability Letters, 35 (3), 251-259 . pour une extension multivariée de ce test.
Macro du
1
Il y a une question CV traitant de cela en deux dimensions: stats.stackexchange.com/questions/25946/… . Même en deux dimensions, il n'existe aucun moyen standard de le faire.
Flounderer

Réponses:

8

Je viens de faire beaucoup de recherches sur les tests à deux échantillons multivariés lorsque j'ai réalisé que le test de Kolmogorov-Smirnov n'était pas multivarié. J'ai donc regardé le test du Chi, le T ^ 2 de Hotelling, le critère d'Anderson-Darling, de Cramer-von Mises, de Shapiro-Wilk, etc. longueur. D'autres ne servent qu'à rejeter l'hypothèse de normalité, et non à comparer deux distributions d'échantillons.

La principale solution semble comparer les fonctions de distribution cumulative des deux échantillons avec toutes les ordonnances possibles qui, comme vous pouvez le soupçonner, sont très gourmandes en calcul, de l'ordre des minutes pour une seule exécution d'un échantillon contenant quelques milliers d'enregistrements:

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

Comme l'indique la documentation de Xiao, le test de Fasano et Franceschini est une variante du test Peacock:

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

Le test de Fasano et Franceschini était spécifiquement destiné à être moins intensif en calcul, mais je n'ai trouvé aucune implémentation de leur travail dans R.

Pour ceux d'entre vous qui souhaitent explorer les aspects informatiques du test Peacock versus Fasano et Franceschini, consultez les algorithmes efficaces en termes de calcul pour le test bidimensionnel de Kolmogorov-Smirnov

L Fischman
la source
Quelle est la distribution cumulative pour les variables multiples?
Aksakal
2
@Aksakal F(X,y)=P(X<X,Oui<y) avec des généralisations jusqu'à p et la fonction de distribution cumulative empirique multivariée est estimée de la même façon F(X,y)=je=1nje(Xje<X,Ouije<y)/n.
AdamO
2
Sympa et concis, AdamO. Le test Peacock semble carrément idiot de ne pas faire d'élagage, comme le font Fasano et Franceschini. Espérons que quelqu'un décide de le coder un jour pour R. C'est particulièrement utile pour la vitesse lorsque vous avez des enregistrements encore décomposés, peut-être par une variable catégorielle, et que vous voulez voir si vos décompositions sont en fait tirées de différentes distributions.
L Fischman
1

Le package R np (non paramétrique) a un test pour l'égalité des densités de données continues et catégoriques utilisant la densité au carré intégrée. Li, Maasoumi et Racine (2009)

Ainsi que pdf conditionnel np dans la section 6 .

ran8
la source
1

Oui, il existe des moyens non paramétriques de tester si deux échantillons multivariés proviennent de la même distribution conjointe. Je mentionnerai des détails à l'exclusion de ceux mentionnés par L Fischman . Le problème de base que vous posez peut être appelé un `` problème à deux échantillons '' et de nombreuses recherches sont actuellement en cours dans des revues telles que Journal of Machine Learning Research et Annals of Statistics et d'autres. Avec mon peu de connaissances sur ce problème, je peux donner des directives comme suit

  • Une façon récente de tester les ensembles d'échantillons multivariés est d'utiliser l'écart moyen maximal (MMD); littérature connexe: Arthur Gretton 2012 , Bharath 2010 et autres. D'autres méthodes connexes peuvent être trouvées dans ces articles de recherche. Si vous êtes intéressé, veuillez parcourir les articles citant ces articles, pour obtenir une vue d'ensemble de l'état de l'art dans ce problème. Et OUI, pour cela il y a des implémentations R.

Si votre intérêt est de comparer différents ensembles de points (ensembles d'échantillons) avec l'ensemble de points de référence, pour voir à quel point ils se rapprochent de l'ensemble de points de référence, vous pouvez utiliser la f-divergence .

  • Un cas spécial populaire de ceci est la divergence de Kullback-Leibler . Ceci est utilisé dans de nombreux régimes d'apprentissage automatique. Cela peut de nouveau être fait de deux manières np; grâce à une approche de fenêtre parzen (noyau) et à des estimateurs PDF du voisin le plus proche.

Il peut également y avoir d'autres façons d'approcher, cette réponse n'est en aucun cas un traitement global de votre question;)

Krishna
la source