Histogramas y gráficos de densidad

Guía practica para su uso en R

TCV

2016.9.30

Introducción

En estadística, un histograma es una representación gráfica de una variable en forma de barras, donde el area de cada barra es proporcional a la frecuencia de los valores representados, ya sea en forma diferencial o acumulada. Sirven para obtener una “primera vista” general, o panorama, de la distribución de los datos, respecto a una característica, cuantitativa y continua. De esta manera ofrece una visión en grupo permitiendo observar una preferencia, o tendencia, por parte de la muestra o población. Un ejemplo de esto se puede ver en la siguiente imagen, con su respectivo código en R para realizarlo mediante el paquete “ggplot2”.

Demostrar el efecto del número de bins o rangos en un histograma

Como se puede ver, en el histograma recien mostrado R toma la columna “price” y la “segmenta” en 30 diferentes unidades o en inglés “bins”. Esto puede conllevar a errores o mal interpretaciones a la hora de estimar la distribucion de los datos. Por ejemplo en la siguiente imagen los bins son en extremo poco.

Histograma de la frecuencia de precio con pocos bins Histograma de la frecuencia de precio con pocos bins

ggplot(diamonds, aes(price)) + geom_histogram(bins=5)  

Esto en ambos casos extremos genera que sea dificil estimar la distribución de los datos, como vemos al tener demasiados bins es también muy dificil estimar la distribución de los datos.

Histograma de la frecuencia de precio con muchos bins Histograma de la frecuencia de precio con muchos bins

ggplot(diamonds, aes(price)) + geom_histogram(bins = 9999)  

Mas cómo podremos determinar el número exacto de bins que debe presentar un gráfico de histograma, una forma es empleandola fórmula de Sturges, donde :

k = 1 + 3.322 log10(n)

siendo k el número de bins y n el número de observaciones

Histograma de la frecuencia de precio con la cantidad justa de bins Histograma de la frecuencia de precio con la cantidad justa de bins

ggplot(diamonds, aes(price)) + geom_histogram(bins = 30)  

Otra cosa divertida que permite hacer ggplot es generar gráficas de histogramas donde cada “barra” se pude dividir en diferentes elementos que la componen.

Histograma de la frecuencia de precio con la cantidad justa de bins y donde cada columna representa en colores el porcentage de cada corte que la componen Histograma de la frecuencia de precio con la cantidad justa de bins y donde cada columna representa en colores el porcentage de cada corte que la componen

ggplot(diamonds, aes(price, fill = cut)) +
  geom_histogram(position = "stack",bins =30)

Contrastar el uso de las funciones geom_density

Como un complemento a los gráficos de histograma se pueden realizar gráficas de densidad, donde se calcula una curva de distribución, pudiendo esta ser ajustada a los datos según la exigencia sea necesaria.

Densidad de la frecuencia de precio Densidad de la frecuencia de precio

ggplot(diamonds, aes(price)) + geom_density()  

He aquí dos ejemplos de cómo puede ser ajustada la curva de distribución de los datos.

Densidad de la frecuencia de precio ajustado a 1/5 Densidad de la frecuencia de precio ajustado a 1/5

ggplot(diamonds, aes(price)) +
  geom_density(adjust = 1/5)

Densidad de la frecuencia de precio ajustado a 5 Densidad de la frecuencia de precio ajustado a 5

ggplot(diamonds, aes(price)) +
  geom_density(adjust = 5)

geom_density2d

Adicionalmente ggplot2 permite realizar estimaciones de densidad en 2 dimensiones lo cual puede ser de utilidad para lidear con el sobre ploteo.

Gráfica de densidad en dos dimensiones Gráfica de densidad en dos dimensiones

m <- ggplot(faithful, aes(x = eruptions, y = waiting)) +
 geom_point() +
 xlim(0.5, 6) +
 ylim(40, 110)
m + geom_density_2d()