Histograma y curva de densidad en una única figura en R

R tiene la potencialidad de que se puede modificar todo y adaptarlo a nuestras necesidades, cualesquieras que sean. Pues bien, realizar de forma separada histogramas y curvas de densidad para un conjunto de datos concreto es muy sencillo. A través de R Commander se puede hacer prácticamente con dos clicks. Pero… ¿y si queremos representar gráficamente un histograma y curva de densidad en R, apareciendo ambos en una única figura? Pues es posible, y en esta entrada os diré cómo hacerlo de un modo rápido y comprensible. De este modo, podréis juntar dos figuras en solo una, optimizando el espacio de vuestros trabajos sin perder información.

Cómo hacer un histograma y curva de densidad en solo un gráfico en R

R es poderosísimo, sin duda. Te permite personalizar hasta el último detalle. Pero antes de hacer un histograma y curva de densidad en R, vamos a hacer ambas figuras por separado, para luego finalmente unirlas en la figura final. ¿Y qué necesitamos para hacer las figuras? Datos, datos y más datos.

Generamos un conjunto de datos en R Commander

En R Commander generamos un conjunto de datos en R que sigan una distribución normal, con media = 50 y desviación estándar = 10. Vamos a llamar a este conjunto de datos den.his. Para ello, vamos a la siguiente ruta:

Distributions > Continuous distributions > Normal distribution > Sample from normal distribution…

Tened en cuenta que si obtenéis los datos siguiendo este procedimiento, las figuras que obtendréis a partir de ahora de histogramas y curvas de densidad serán ligeramente diferentes, ya que los datos con los que partiréis serán algo distintos. Vamos a meternos en faena.

Creando histogramas en R para nuestros datos

En R Commander hacer histogramas es realmente sencillo. Vamos a la siguiente ruta, donde aparecerá una pestaña con Opciones, pudiendo seleccionar cómo se hace el tipo de histograma (frequency counts, percentages y densities):

Graphs > Histogram…

De forma predeterminada, los histogramas en R Commander se hacen con color gris siguiendo el método de intervalos Sturges. Pero esto, obviamente, puede modificarse y adaptarse. A continuación os dejo los códigos con histogramas modificados, con intervalos siguiendo el método Freedman-Diaconis (FD) y con valores personalizados, y cambiando el color de las barras.

with(den.his, Hist(obs, scale="frequency", breaks="Sturges", col="darkgray"))
with(den.his, Hist(obs, scale="percent", breaks="Sturges", col="darkgray"))
with(den.his, Hist(obs, scale="density", breaks="Sturges", col="darkgray"))

with(den.his, Hist(obs, scale="frequency", breaks="FD", col="red"))
with(den.his, Hist(obs, scale="percent", breaks="FD", col="blue"))
with(den.his, Hist(obs, scale="density", breaks="FD", col="green"))

with(den.his, Hist(obs, scale="frequency", breaks=25, col="orange"))
with(den.his, Hist(obs, scale="percent", breaks=50, col="orange"))
with(den.his, Hist(obs, scale="density", breaks=100, col="orange"))

Dibujar la curva de densidad de un conjunto de datos

Ahora bien, si queremos representar gráficamente la curva de densidad de nuestros datos, tenemos que seguir la siguiente ruta:

Graph > Density estimate…

Combinando un histograma y curva de densidad en una sola figura

Ahora vamos a entrar en el meollo de la cuestión. Hemos aprendido a visualizar los datos de dos modos distintos, haciendo un histograma y curva de densidad. Pero ahora vamos a mezclarlos, a combinarlos en una sola figura para maximizar la información que se puede extraer. Para que sea satisfactoria la figura, tenemos que ejecutar dos comandos: primero el histograma y luego la densidad.

A continuación os dejo los códigos de tres ejemplos con su código correspondiente:


#Ejemplo 1
with(den.his, Hist(obs, scale="density", xlim=c(0,100), ylim=c(0,0.04), breaks="Sturges", col="lightblue"))
lines(density(den.his$obs), col="blue", lty=2, lwd=3)


#Ejemplo 2
with(den.his, Hist(obs, scale="density", xlim=c(0,100), ylim=c(0,0.05), breaks="FD", col="pink"))
lines(density(den.his$obs), col="purple", lty=3, lwd=4)

#Ejemplo 3
with(den.his, Hist(obs, scale="density", xlim=c(0,100), ylim=c(0,0.06), breaks=30, col="lightgreen"))
lines(density(den.his$obs), col="darkgreen", lty=6, lwd=10)

Como podéis observar, la primera línea de cada ejemplo es el histograma y la segunda es el dibujo de la curva de densidad sobre el histograma. Fijaros que hemos introducidos atributos nuevos (xlim y ylim se refieren a los intervalos del eje x e y respectivamente; lty y lwd se refieren al tipo de línea y grosor respectivamente de la curva de densidad). Es muy importante que en este caso siempre utilicés el histograma de densidad, y no el de porcentajes o el de frecuencias. El resultado sería el siguiente después de ejecutar los códigos anteriores (de izquierda a derecha, Ejemplo 1, Ejemplo 2 y Ejemplo 3):

Histograma y curva de densidad en una única figura en R

¿Quieres convertirte en un experto en programación en R? Con estos cursos online…

Completamente online, y comenzando cuando tú quieras, os proponemos estos 8 cursos de programación en R ofrecidos por Udemy, una de las mejores plataformas de cursos online de internet. Con ellos podrás mejorar sustancialmente tu curriculum vitae. ¿A qué estás esperando? Si quieres ver todos los cursos de programación en R, haz click aquí.

Deja un comentario

*