59 votos

¿Cómo identificar una distribución bimodal?

Entiendo que una vez que trazamos los valores como un gráfico, podemos identificar una distribución bimodal observando los picos gemelos, pero ¿cómo se encuentra programáticamente? (Estoy buscando un algoritmo).

5 votos

Pregunta intrigante. No sé nada de esto, así que no intentaré responder, pero buscar en Google bimodalidad+prueba da bastantes pistas prometedoras. google.es/search?q=bimodalidad+prueba

0 votos

un código programático para probar la multimodalidad está disponible en www.estima.com y se llama MODES.SRC. Se puede convertir fácilmente a Matlab, R u otros softwares. Saludos, guido.

1 votos

No se puede identificar el número de modos (no hay límite para el número de pequeños meneos que puede tener una distribución), pero se puede obtener un límite inferior. por ejemplo, ver aquí projecteuclid.org/euclid.aos/1176351045

35voto

jldugger Puntos 7490

La identificación de una moda para una distribución continua requiere suavizar o dividir los datos.

Binning suele ser demasiado procrastinador: los resultados suelen depender de dónde se coloquen los puntos de corte de los contenedores.

Alisamiento del núcleo (concretamente, en forma de estimación de la densidad del núcleo ) es una buena opción. Aunque son posibles muchas formas de núcleo, normalmente el resultado no depende mucho de la forma. Depende del ancho de banda del núcleo. Por lo tanto, la gente utiliza un núcleo adaptativo suave o llevar a cabo una secuencia de alisados del núcleo para variar los anchos de banda fijos con el fin de comprobar la estabilidad de los modos que se identifican. Aunque el uso de un suavizador adaptativo u "óptimo" es atractivo, tenga en cuenta que la mayoría de ellos (¿todos?) están diseñados para lograr un equilibrio entre la precisión y la exactitud media: no están diseñados para optimizar la estimación de la ubicación de los modos.

En cuanto a la implementación, los suavizadores de núcleo desplazan y escalan localmente una función predeterminada para ajustarse a los datos. Siempre que esta función básica sea diferenciable -los gaussianos son una buena opción porque se pueden diferenciar tantas veces como se quiera-, lo único que hay que hacer es sustituirla por su derivada para obtener la derivada del suavizado. Entonces es simplemente cuestión de aplicar un procedimiento estándar de búsqueda del cero para detectar y comprobar los puntos críticos. ( El método de Brent funciona bien). Por supuesto, se puede hacer el mismo truco con la segunda derivada para obtener una prueba rápida de si cualquier punto crítico es un máximo local, es decir, un modo.

3 votos

@venkasub, también podrías mirar el método de Muller para la búsqueda de raíces. Es más sencillo que el método de Brent y "casi" tan eficiente como el de Newton, pero sin necesidad de conocer las derivadas de la función objetivo.

27voto

giulio Puntos 166

Existe un conocido artículo de Silverman que trata esta cuestión. Emplea la estimación de la densidad del núcleo. Véase

B. W. Silverman, Uso de estimaciones de densidad de núcleo para investigar la multimodalidad , J. Real Stat. Soc. B , vol. 43, nº 1, 1981, pp. 97-99.

Tenga en cuenta que hay algunos errores en las tablas del documento. Es sólo un punto de partida, pero bastante bueno. Proporciona un algoritmo bien definido para usar, en el caso de que sea lo que más buscas. Podrías buscar en Google Scholar los artículos que lo citan para enfoques más "modernos".

5 votos

+1 Este trabajo explota la información sobre cómo el número de modos aparentes depende de la anchura del núcleo (para núcleos gaussianos) para seleccionar una anchura adecuada y luego continúa como se describe en mi respuesta.

3voto

Kots Puntos 163

He llegado tarde a la fiesta, pero si sólo te interesa si es multimodal o no, es decir, no te interesa el número de modos, deberías mirar diptest .

En R el paquete se llama diptest .

3 votos

El nombre completo es Hartigan's Dip Test of Unimodality. En el documento original se da esta descripción: La prueba de inmersión mide la multimodalidad en una muestra por la diferencia máxima, sobre todos los puntos de la muestra, entre la función de distribución empírica y la función de distribución unimodal que minimiza esa diferencia máxima. El algoritmo no es trivial, pero se pueden encontrar fácilmente traducciones de C, Python, MATLAB y Fortran modernas basadas en la implementación original de Fortran en Cálculo de la estadística Dip para comprobar la unimodalidad .

1 votos

0voto

JC. Puntos 168

La definición en la wiki me resulta ligeramente confusa. La probabilidad de que un conjunto de datos continuo tenga una sola moda es cero. Una forma sencilla de programar una distribución bimodal es con dos distribuciones normales separadas centradas de forma diferente. Esto crea dos picos o lo que wiki llama modos. En realidad se puede utilizar casi cualquier dos distribuciones, pero una de las oportunidades estadísticas más difíciles es encontrar cómo se formó el conjunto de datos después de combinar las dos distribuciones de datos aleatorios.

0 votos

¿Cómo identificarás los centros de las dos distribuciones normales?

0 votos

@venkasub, el centro de la distribución normal es su media. Si sabes que la bimodalidad proviene de dos distribuciones normales puedes ajustar el modelo de mezcla para estimar las medias, que serán dos modos.

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