Prueba si las distribuciones multidimensionales son iguales

15

Digamos que tengo dos o más poblaciones de muestra de vectores de valores continuos n-dimensionales. ¿Hay alguna forma no paramétrica de probar si estas muestras son de la misma distribución? Si es así, ¿hay una función en R o python para esto?

mbc
fuente
2
La prueba de Kolmogorov-Smirnov es una herramienta típica no paramétrica para probar si dos distribuciones son iguales. No estoy familiarizado con él, pero Wikipedia se refiere a Justel, A., Peña, D. y Zamar, R. (1997) Una prueba multivariada de bondad de ajuste de Kolmogorov-Smirnov, Estadísticas y Cartas de Probabilidad, 35 (3), 251-259 . para una extensión multivariante de esta prueba.
Macro
1
Hay una pregunta de CV que aborda esto en dos dimensiones: stats.stackexchange.com/questions/25946/… . Incluso en dos dimensiones, no hay una forma estándar de hacerlo.
Flounderer

Respuestas:

8

Acabo de investigar mucho sobre las pruebas de dos muestras multivariadas cuando me di cuenta de que la prueba de Kolmogorov-Smirnov no era multivariada. Así que miré la prueba de Chi, la T ^ 2 de Hotelling, el criterio de Anderson-Darling, Cramer-von Mises, Shapiro-Wilk, etc. Hay que tener cuidado porque algunas de estas pruebas dependen de que los vectores se comparen para ser del mismo longitud. Otros solo se utilizan para rechazar el supuesto de normalidad, no para comparar dos distribuciones de muestra.

La solución principal parece comparar las funciones de distribución acumulativa de las dos muestras con todos los ordenamientos posibles que, como puede sospechar, es muy computacionalmente intensivo, del orden de minutos para una sola ejecución de una muestra que contiene unos pocos miles de registros:

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

Como dice la documentación de Xiao, la prueba de Fasano y Franceschini es una variante de la prueba de Pavo Real:

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

La prueba de Fasano y Franceschini tenía la intención específica de ser menos computacionalmente intensiva, pero no he encontrado una implementación de su trabajo en R.

Para aquellos de ustedes que desean explorar los aspectos computacionales de la prueba de Peacock versus Fasano y Franceschini, revisen los algoritmos computacionalmente eficientes para la prueba bidimensional de Kolmogorov-Smirnov

L Fischman
fuente
¿Qué es la distribución acumulativa para multivariantes?
Aksakal
2
F(X,y)=PAG(X<X,Y<y)pagF(X,y)=yo=1norteyo(Xyo<X,Yyo<y)/ /norte
2
Agradable y conciso, AdamO. La prueba de Peacock parece francamente tonta al no podar, como lo hacen Fasano y Franceschini. Esperemos que alguien decida codificarlo algún día para R. Es particularmente útil para la velocidad cuando tiene registros descompuestos aún más, tal vez por una variable categórica, y desea ver si sus descomposiciones en realidad provienen de diferentes distribuciones.
L Fischman
1

Sí, hay formas no paramétricas de probar si dos muestras multivariadas provienen de la misma distribución conjunta. Mencionaré detalles, excepto los mencionados por L Fischman . El problema básico que está preguntando puede denominarse como 'Problema de dos muestras' y actualmente se está realizando una buena cantidad de investigación en revistas como Journal of Machine Learning Research y Annals of Statistics y otras. Con mi poco conocimiento sobre este problema, puedo dar instrucciones de la siguiente manera

  • Una forma reciente de probar los conjuntos de muestras multivariadas es a través de la máxima discrepancia media (MMD); literatura relacionada: Arthur Gretton 2012 , Bharath 2010 y otros. Otros métodos relacionados se pueden encontrar en estos artículos de investigación. Si está interesado, revise los artículos que citan estos artículos, para obtener una visión general del estado del arte en este problema. Y SÍ, para esto hay implementaciones de R.

Si su interés es comparar varios conjuntos de puntos (conjuntos de muestras) con el conjunto de puntos de referencia, para ver qué tan cerca se aproximan al conjunto de puntos de referencia, puede usar la divergencia f .

  • Un caso especial popular de esto es la divergencia Kullback-Leibler . Esto se usa en muchos regímenes de aprendizaje automático. Esto puede hacerse nuevamente de dos maneras np; a través del enfoque de ventana de parzen (kernel) y estimadores de PDF de K-Nearest Neighbour

También puede haber otras formas de abordar, esta respuesta no es de ninguna manera un tratamiento integral de su pregunta;)

Krishna
fuente