23 votos

Prueba si las distribuciones multidimensionales son iguales

Digamos que tengo dos o más poblaciones de muestra de vectores con valores continuos n-dimensionales. ¿Existe una forma no paramétrica de probar si estas muestras son de la misma distribución? En caso afirmativo, ¿hay alguna función en R o Python para esto?

2 votos

El test de Kolmogorov-Smirnov es una herramienta no paramétrica típica para probar si dos distribuciones son iguales. No estoy familiarizado con él, pero wikipedia hace referencia a Justel, A., Peña, D. y Zamar, R. (1997) A multivariate Kolmogorov-Smirnov test of goodness of fit, Statistics & Probability Letters, 35(3), 251-259 para una extensión multivariante de este test.

1 votos

Hay una pregunta del CV que aborda esto en dos dimensiones: stats.stackexchange.com/questions/25946/…. Incluso en dos dimensiones, no hay una forma estándar de hacerlo.

9voto

Gordon Puntos 597

Acabo de hacer mucha investigación sobre pruebas de dos muestras multivariadas cuando me di cuenta de que la prueba de Kolmogorov-Smirnov no era multivariada. Así que miré la prueba Chi, el T^2 de Hotelling, Anderson-Darling, el criterio de Cramer-von Mises, Shapiro-Wilk, etc. Hay que tener cuidado porque algunas de estas pruebas dependen de que los vectores que se comparan tengan la misma longitud. Otros solo se utilizan para rechazar la suposición de normalidad, no para comparar dos distribuciones de muestras.

La solución principal parece comparar las funciones de distribución acumulativa de las dos muestras con todas las posibles ordenaciones, lo cual, como puedes sospechar, es muy intensivo computacionalmente, del orden de minutos para una única ejecución de una muestra que contenga unos pocos miles de registros:

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

Como indica la documentación de Xiao, la prueba de Fasano y Franceschini es una variante de la prueba de Peacock:

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

La prueba de Fasano y Franceschini fue específicamente diseñada para ser menos intensiva computacionalmente, pero no he encontrado una implementación de su trabajo en R.

Para aquellos que deseen explorar los aspectos computacionales de la prueba de Peacock versus la prueba de Fasano y Franceschini, echa un vistazo a Algoritmos computacionalmente eficientes para la prueba de dos dimensiones de Kolmogorov-Smirnov

3voto

woky Puntos 720

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

  • Una manera reciente de probar los conjuntos de muestras multivariadas es a través de la Discrepancia Máxima de la 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ás interesado, por favor revisa los artículos citando estos artículos, para tener una imagen general del estado del arte en este problema. Y SÍ, para esto hay implementaciones en R.

Si tu interés es comparar varios conjuntos de puntos (conjuntos de muestras) con el conjunto de puntos de referencia, para ver cuán cerca se aproximan al conjunto de puntos de referencia, puedes usar f-divergencia.

  • Un caso especial popular de esto es Divergencia Kullback-Leibler. Esto se utiliza en muchos regímenes de aprendizaje automático. Esto también se puede hacer de dos maneras no paramétricas; a través del enfoque de ventana de parzen (núcleo) y estimadores de PDF de Vecinos Más Cercanos.

También puede haber otras formas de abordar esto, ¡Esta respuesta de ninguna manera es un tratamiento completo de tu pregunta! ;)

1voto

ran8 Puntos 149

El paquete de R np (no paramétrico) tiene una prueba de igualdad de densidades de datos continuos y categóricos utilizando la densidad cuadrada integrada. Li, Maasoumi y Racine(2009)

Al igual que el pdf condicional de np en la sección 6.

0voto

Mike Marks Puntos 111

Ya que estoy trabajando en el mismo problema, puedo compartir algunas de mis ideas hasta ahora (que están lejos de ser expertas). Estás buscando una prueba que responda a la pregunta de si dos distribuciones de muestra son extraídas de la misma distribución o no. Una pregunta que también se hace frecuentemente en pruebas es si dos distribuciones de muestra son extraídas de una distribución con un valor esperado idéntico.

En este marco, los tamaños de las distribuciones de muestra a menudo se denominan n1n1 y n2n2, mientras que la dimensión de los datos se denomina pp.

En la prueba que se refiere solo a la ubicación, las hipótesis son: H0:μF=μGH1:μFμG Las implementaciones para p>>1 son:

Python: https://hotelling.readthedocs.io/en/latest/. Solo pude acceder al código a través del repositorio de GitHub: https://github.com/dionresearch/hotelling pero tal vez tengas más suerte.

R: https://www.rdocumentation.org/packages/highmean/versions/3.0. El documento respectivo es: https://academic.oup.com/biomet/article/103/3/609/1744173?login=true

Hay mucha investigación en esa área, tal vez quieras considerar trabajos conectados para una búsqueda: https://www.connectedpapers.com/main/3c14196155b1e9def9241a841e359e6054a4d44b/A-Simple-TwoSample-Test-in-High-Dimensions-Based-on-L2Norm/graph

Para el primer tipo de prueba, las hipótesis se definen de la siguiente manera: H0:F(x)=G(x)H1:F(x)G(x) Hubo algunos enfoques a finales de los años 80 con MST (árboles de expansión mínima) y búsqueda del vecino más cercano. Por ejemplo: https://amstat.tandfonline.com/doi/abs/10.1080/01621459.1986.10478337#.YEjb79wo9EY Creo que este enfoque ha sido descartado, pero sería feliz si se me demuestra lo contrario.

0voto

chrishmorris Puntos 9

En resumen, ¡esto es difícil!

Por lo tanto, es útil alejarse de la pregunta abstracta. ¿Por qué quieres comparar estas distribuciones? Quizás este objetivo se pueda cumplir de alguna otra manera.

Por ejemplo, una razón para hacer esto es al entrenar un GAN. En esta situación, el entrenamiento es iterativo y estocástico. Por lo tanto, es suficiente usar una aproximación estocástica a la respuesta, que se puede hacer de la siguiente manera: cada vez que desees medir la distancia entre las distribuciones, elige una proyección aleatoria a una dimensión. Luego, calcula la métrica de Kolmogorov-Smirnov para las dos distribuciones proyectadas.

Disculpa, olvidé la referencia para este método, que fue inventado por alguien más inteligente que yo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X