¿Puedo usar gráficos de caja y bigotes también para distribución multimodal o solo para distribución unimodal?
¿Puedo usar gráficos de caja y bigotes también para distribución multimodal o solo para distribución unimodal?
Respuestas:
El problema es que el diagrama de caja habitual * generalmente no puede dar una indicación del número de modos. Mientras que en algunas circunstancias (generalmente raras) es posible obtener una indicación clara de que el número más pequeño de modos excede 1, más generalmente un diagrama de caja dado es consistente con uno o cualquier número mayor de modos.
* Se han sugerido varias modificaciones de los tipos habituales de diagrama de caja, que hacen más para indicar los cambios en la densidad y la cámara se pueden utilizar para identificar modos múltiples, pero no creo que ese sea el propósito de esta pregunta.
Por ejemplo, aunque esta trama hace indicar la presencia de al menos dos modos (los datos fueron generados a fin de tener exactamente dos) -
Por el contrario, este tiene dos modos muy claros en su distribución, pero simplemente no se puede distinguir de la gráfica de caja:
100): ningún cdf unimodal es consistente con las restricciones en el cdf en ese caso, que requiere un aumento relativamente brusco en el primer trimestre, un aplanamiento a (en promedio) una pequeña tasa de aumento en la mitad del medio y luego cambiar a otro aumento brusco en el último trimestre.
De hecho, la figura 1 aquí (que creo que es un documento de trabajo publicado más tarde en [1]) muestra cuatro conjuntos de datos diferentes con el mismo diagrama de caja.
No tengo esos datos a mano, pero es un asunto trivial hacer un conjunto de datos similar: como se indica en el enlace anterior relacionado con el resumen de cinco números, solo necesitamos restringir nuestras distribuciones para que se encuentren dentro de los cuadros rectangulares que el el resumen de cinco números nos restringe.
Aquí está el código R que generará datos similares a los del documento:
x1 = qnorm(ppoints(1:100,a=-.072377))
x1 = x1/diff(range(x1))*18+10
b = fivenum(x1) # all of the data has this five number summary
x2 = qnorm(ppoints(1:48));x2=x2/diff(range(x2))*.6
x2 = c(b[1],x2+b[2],.31+b[2],b[4]-.31,x2+b[4],b[5])
d = .1183675; x3 = ((0:34)-34/2)/34*(9-d)+(5.5-d/2)
x3 = c(x3,rep(9.5,15),rep(10.5,15),20-x3)
x4 = c(1,rep(b[2],24),(0:49)/49*(b[4]-b[2])+b[2],(0:24)/24*(b[5]-b[4])+b[4])
Aquí hay una visualización similar a la del documento, de los datos anteriores (excepto que muestro los cuatro diagramas de caja aquí):
Cuidado, sin embargo - histogramas también pueden tener problemas ; de hecho, vemos uno de sus problemas aquí, porque la distribución en el tercer histograma "pico" es en realidad claramente bimodal; el ancho del contenedor del histograma es simplemente demasiado ancho para mostrarlo. Además, como Nick Cox señala en los comentarios, las estimaciones de densidad del kernel también pueden afectar la impresión del número de modos (a veces difuminando modos ... o algunas veces sugiriendo modos pequeños donde no existen ninguno en la distribución original). Hay que tener cuidado con la interpretación de muchas pantallas comunes.
Hay modificaciones de la gráfica de caja que pueden indicar mejor la multimodalidad (gráficas de florero, violín y frijol, entre muchas otras). En algunas situaciones pueden ser útiles, pero si estoy interesado en encontrar modos, generalmente miraré un tipo diferente de pantalla.
x4
[1]: Choonpradub, C. y McNeil, D. (2005),
"¿Se puede mejorar el diagrama de caja?"
Songklanakarin J. Sci. Technol. , 27 : 3, págs. 649-657.
http://www.jourlib.org/paper/2081800
pdf
Existen múltiples opciones para detectar la multimodalidad con R. Los datos para los gráficos a continuación se generaron con tres modos (-3,0,1). Los demás superan claramente el diagrama de caja (el diagrama del violín parece tener diferentes configuraciones predeterminadas de densidad del núcleo), pero ninguno distingue realmente entre los modos 0 y 1. Realmente hay pocas razones para usar boxplots en la era de las computadoras. ¿Por qué tirar información?
dat <- c(rnorm(500, -3, 1), rnorm(200, 0, 1), rnorm(300, 1, 1))
par(mfrow=c(2, 2))
boxplot(dat, horizontal=TRUE, main="Boxplot")
require(beanplot)
beanplot(dat, horizontal=TRUE, main="Beanplot")
require(viopoints)
viopoints(dat, horizontal=TRUE, main="Viopoints")
require(vioplot)
vioplot(dat, horizontal=TRUE)
title("Violin Plot")