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”.
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
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
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
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
ggplot(diamonds, aes(price, fill = cut)) +
geom_histogram(position = "stack",bins =30)
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
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
ggplot(diamonds, aes(price)) +
geom_density(adjust = 1/5)
Densidad de la frecuencia de precio ajustado a 5
ggplot(diamonds, aes(price)) +
geom_density(adjust = 5)
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
m <- ggplot(faithful, aes(x = eruptions, y = waiting)) +
geom_point() +
xlim(0.5, 6) +
ylim(40, 110)
m + geom_density_2d()