La dificultad con el uso de histogramas para inferir la forma
Si bien los histogramas son a menudo útiles y a veces útiles, pueden ser engañosos. Su apariencia puede cambiar bastante con los cambios en la ubicación de los límites del contenedor.
Este problema se conoce desde hace mucho tiempo *, aunque tal vez no tan ampliamente como debería ser: rara vez se lo menciona en las discusiones de nivel primario (aunque hay excepciones).
* por ejemplo, Paul Rubin [1] lo expresó de esta manera: " es bien sabido que cambiar los puntos finales en un histograma puede alterar significativamente su apariencia ". .
Creo que es un tema que debería debatirse más ampliamente al introducir histogramas. Daré algunos ejemplos y discusión.
¿Por qué debe tener cuidado de no confiar en un solo histograma de un conjunto de datos?
Eche un vistazo a estos cuatro histogramas:
Son cuatro histogramas de aspecto muy diferente.
Si pega los siguientes datos en (estoy usando R aquí):
Annie <- c(3.15,5.46,3.28,4.2,1.98,2.28,3.12,4.1,3.42,3.91,2.06,5.53,
5.19,2.39,1.88,3.43,5.51,2.54,3.64,4.33,4.85,5.56,1.89,4.84,5.74,3.22,
5.52,1.84,4.31,2.01,4.01,5.31,2.56,5.11,2.58,4.43,4.96,1.9,5.6,1.92)
Brian <- c(2.9, 5.21, 3.03, 3.95, 1.73, 2.03, 2.87, 3.85, 3.17, 3.66,
1.81, 5.28, 4.94, 2.14, 1.63, 3.18, 5.26, 2.29, 3.39, 4.08, 4.6,
5.31, 1.64, 4.59, 5.49, 2.97, 5.27, 1.59, 4.06, 1.76, 3.76, 5.06,
2.31, 4.86, 2.33, 4.18, 4.71, 1.65, 5.35, 1.67)
Chris <- c(2.65, 4.96, 2.78, 3.7, 1.48, 1.78, 2.62, 3.6, 2.92, 3.41, 1.56,
5.03, 4.69, 1.89, 1.38, 2.93, 5.01, 2.04, 3.14, 3.83, 4.35, 5.06,
1.39, 4.34, 5.24, 2.72, 5.02, 1.34, 3.81, 1.51, 3.51, 4.81, 2.06,
4.61, 2.08, 3.93, 4.46, 1.4, 5.1, 1.42)
Zoe <- c(2.4, 4.71, 2.53, 3.45, 1.23, 1.53, 2.37, 3.35, 2.67, 3.16,
1.31, 4.78, 4.44, 1.64, 1.13, 2.68, 4.76, 1.79, 2.89, 3.58, 4.1,
4.81, 1.14, 4.09, 4.99, 2.47, 4.77, 1.09, 3.56, 1.26, 3.26, 4.56,
1.81, 4.36, 1.83, 3.68, 4.21, 1.15, 4.85, 1.17)
Entonces puedes generarlos tú mismo:
opar<-par()
par(mfrow=c(2,2))
hist(Annie,breaks=1:6,main="Annie",xlab="V1",col="lightblue")
hist(Brian,breaks=1:6,main="Brian",xlab="V2",col="lightblue")
hist(Chris,breaks=1:6,main="Chris",xlab="V3",col="lightblue")
hist(Zoe,breaks=1:6,main="Zoe",xlab="V4",col="lightblue")
par(opar)
Ahora mira esta tabla de tiras:
x<-c(Annie,Brian,Chris,Zoe)
g<-rep(c('A','B','C','Z'),each=40)
stripchart(x~g,pch='|')
abline(v=(5:23)/4,col=8,lty=3)
abline(v=(2:5),col=6,lty=3)
(Si aún no es evidente, ver lo que sucede cuando se resta de datos de Annie de cada conjunto: head(matrix(x-Annie,nrow=40))
)
Los datos simplemente se han desplazado a la izquierda cada 0.25.
Sin embargo, las impresiones que obtenemos de los histogramas (inclinación derecha, uniforme, inclinación izquierda y bimodal) fueron completamente diferentes. Nuestra impresión se regió por completo por la ubicación del primer origen del contenedor en relación con el mínimo.
Entonces, no solo 'exponencial' vs 'no-realmente-exponencial' sino 'sesgado a la derecha' versus 'sesgo a la izquierda' o 'bimodal' vs 'uniforme' simplemente moviéndose donde comienzan sus contenedores.
Editar: si varía el ancho del contenedor, puede hacer que sucedan cosas como esta:
10.8
x <- c(1.03, 1.24, 1.47, 1.52, 1.92, 1.93, 1.94, 1.95, 1.96, 1.97, 1.98,
1.99, 2.72, 2.75, 2.78, 2.81, 2.84, 2.87, 2.9, 2.93, 2.96, 2.99, 3.6,
3.64, 3.66, 3.72, 3.77, 3.88, 3.91, 4.14, 4.54, 4.77, 4.81, 5.62)
hist(x,breaks=seq(0.3,6.7,by=0.8),xlim=c(0,6.7),col="green3",freq=FALSE)
hist(x,breaks=0:8,col="aquamarine",freq=FALSE)
Ingenioso, ¿eh?
Sí, esos datos se generaron deliberadamente para hacer eso ... pero la lección es clara: lo que cree que ve en un histograma puede no ser una impresión particularmente precisa de los datos.
¿Qué podemos hacer?
Los histogramas son ampliamente utilizados, frecuentemente convenientes de obtener y, a veces, esperados. ¿Qué podemos hacer para evitar o mitigar estos problemas?
Como Nick Cox señala en un comentario a una pregunta relacionada : la regla general siempre debe ser que los detalles robustos a las variaciones en el ancho y el origen del contenedor probablemente sean genuinos; Es probable que los detalles frágiles a tales sean espurios o triviales .
Por lo menos, siempre debe hacer histogramas en varios anchos de bandeja u orígenes de bandeja diferentes, o preferiblemente en ambos.
Alternativamente, verifique una estimación de densidad del kernel en un ancho de banda no demasiado ancho.
Otro enfoque que reduce la arbitrariedad de los histogramas son los histogramas desplazados promediados ,
(ese es uno de ese conjunto de datos más reciente) pero si haces ese esfuerzo, creo que también podrías usar una estimación de densidad del núcleo.
Si estoy haciendo un histograma (los uso a pesar de ser muy consciente del problema), casi siempre prefiero usar muchos más bins de los que suelen ofrecer los valores predeterminados del programa y muy a menudo me gusta hacer varios histogramas con diferentes anchuras de bin. (y, ocasionalmente, origen). Si son razonablemente consistentes en la impresión, no es probable que tenga este problema, y si no son consistentes, debe mirar con más cuidado, tal vez intente una estimación de densidad del núcleo, un CDF empírico, un gráfico QQ o algo así. similar.
Si bien los histogramas a veces pueden ser engañosos, los diagramas de caja son aún más propensos a tales problemas; con un diagrama de caja ni siquiera tienes la capacidad de decir "usar más contenedores". Vea los cuatro conjuntos de datos muy diferentes en esta publicación , todos con diagramas de caja simétricos e idénticos, a pesar de que uno de los conjuntos de datos es bastante sesgado.
[1]: Rubin, Paul (2014) "Histogram Abuse!",
Publicación de blog, O en un mundo OB ,
enlace del 23 de enero de 2014 ... (enlace alternativo)