En este artículo, aprenderás a utilizar la función hist() para crear histogramas en la programación de R con la ayuda de numerosos ejemplos.
El histograma se puede crear utilizando la función hist()
en el lenguaje de programación R. Esta función toma un vector de valores para los que se traza el histograma.
Utilicemos el conjunto de datos incorporado airquality
que tiene Mediciones diarias de la calidad del aire en Nueva York, de mayo a septiembre de 1973.Documentación de R.
> str(airquality)'data.frame':153 obs. of 6 variables:$ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ...$ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...$ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...$ Temp : int 67 72 74 62 56 66 65 59 61 69 ...$ Month : int 5 5 5 5 5 5 5 5 5 5 ...$ Day : int 1 2 3 4 5 6 7 8 9 10 ...
Utilizaremos el parámetro de temperatura que tiene 154 observaciones en grados Fahrenheit.
Ejemplo 1: Histograma simple
Temperature <- airquality$Temphist(Temperature)
Podemos ver arriba que hay 9 celdas con cortes igualmente espaciados. En este caso, la altura de una celda es igual al número de observaciones que caen en esa celda.
Podemos pasar parámetros adicionales para controlar el aspecto de nuestro gráfico. Puedes leer sobre ellos en la sección de ayuda ?hist
.
Algunos de los más utilizados son, main
para dar el título, xlab
y ylab
para proporcionar etiquetas a los ejes, xlim
y ylim
para proporcionar el rango de los ejes, col
para definir el color, etc.
Además, con el argumento freq=FALSE
podemos obtener la distribución de probabilidad en lugar de la frecuencia.
Ejemplo 2: Histograma con parámetros añadidos
# histogram with added parametershist(Temperature,main="Maximum daily temperature at La Guardia Airport",xlab="Temperature in degrees Fahrenheit",xlim=c(50,100),col="darkmagenta",freq=FALSE)
Nota que el eje y está etiquetado como densidad en lugar de frecuencia. En este caso, el área total del histograma es igual a 1.
Valor de retorno de hist()
La función hist()
devuelve una lista con 6 componentes.
> h <- hist(Temperature)> h$breaks 55 60 65 70 75 80 85 90 95 100$counts 8 10 15 19 33 34 20 12 2$density 0.010457516 0.013071895 0.019607843 0.024836601 0.043137255 0.044444444 0.026143791 0.015686275 0.002614379$mids 57.5 62.5 67.5 72.5 77.5 82.5 87.5 92.5 97.5$xname "Temperature"$equidist TRUEattr(,"class") "histogram"
Vemos que se devuelve un objeto de clase histogram
que tiene:
-
breaks
los lugares donde se producen las rupturas, -
counts
el número de observaciones que caen en esa celda, -
density
la densidad de celdas,mids
-los puntos medios de las celdas, -
xname
-el nombre del argumento x y -
equidist
-un valor lógico que indica si las rupturas están igualmente espaciadas o no.
Podemos utilizar estos valores para su posterior procesamiento.
Por ejemplo, en el siguiente ejemplo utilizamos los valores de retorno para colocar los recuentos en la parte superior de cada celda utilizando la función text()
.
Ejemplo 3: Usar los valores de retorno del histograma para las etiquetas usando text()
h <- hist(Temperature,ylim=c(0,40))text(h$mids,h$counts,labels=h$counts, adj=c(0.5, -0.5))
Definiendo el número de rupturas
Con el argumento breaks
podemos especificar el número de celdas que queremos en el histograma. Sin embargo, este número es sólo una sugerencia.
R calcula el mejor número de celdas, teniendo en cuenta esta sugerencia. A continuación se muestran dos histogramas sobre los mismos datos con diferente número de celdas.
Ejemplo 4: Histograma con diferentes rupturas
hist(Temperature, breaks=4, main="With breaks=4")hist(Temperature, breaks=20, main="With breaks=20")
En la figura anterior vemos que el número real de celdas trazadas es mayor que el que habíamos especificado.
También podemos definir puntos de ruptura entre las celdas como un vector. Esto permite trazar un histograma con intervalos desiguales. En este caso, el área de la celda es proporcional al número de observaciones que caen dentro de esa celda.
Ejemplo 5: Histograma con anchura no uniforme
hist(Temperature,main="Maximum daily temperature at La Guardia Airport",xlab="Temperature in degrees Fahrenheit",xlim=c(50,100),col="chocolate",border="brown",breaks=c(55,60,70,75,80,100))
.