R Box Plot

En este artículo, usted aprenderá a crear whisker y box plot en la programación de R. También aprenderá a dibujar múltiples gráficos de caja en un solo gráfico.

En R, el boxplot (y el gráfico de bigotes) se crea utilizando la función boxplot().

La función boxplot() toma cualquier número de vectores numéricos, dibujando un boxplot para cada vector.

También puede pasar una lista (o marco de datos) con vectores numéricos como sus componentes. 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 ...

Hagamos un boxplot para las lecturas de ozono.

boxplot(airquality$Ozone)

Ploteo de caja por defecto en R Programming

Podemos ver que los datos por encima de la mediana están más dispersos. También podemos observar dos valores atípicos en el extremo superior.

Podemos pasar parámetros adicionales para controlar el aspecto de nuestro gráfico. Puedes leer sobre ellos en la sección de ayuda ?boxplot.

Algunos de los más utilizados son, mainpara dar el título, xlab y ylabpara proporcionar etiquetas a los ejes, col para definir el color, etc.

Además, con el argumento horizontal = TRUE podemos trazarlo horizontalmente y con notch = TRUE podemos añadir una muesca a la caja.

boxplot(airquality$Ozone,main = "Mean ozone in parts per billion at Roosevelt Island",xlab = "Parts Per Billion",ylab = "Ozone",col = "orange",border = "brown",horizontal = TRUE,notch = TRUE)

Ploteo de caja horizontal en R

Valor de retorno de boxplot()

La función boxplot() devuelve una lista con 6 componentes que se muestran a continuación.

> b <- boxplot(airquality$Ozone)> b$stats 1.0 18.0 31.5 63.5 122.0attr(,"class")1 "integer" $n 116$conf 24.82518 38.17482$out 135 168$group 1 1$names "1"

Como podemos ver arriba, se devuelve una lista que tiene stats-posición de los extremos superior/inferior de los bigotes y de la caja junto con la mediana,

  • n-el número de observación con el que se dibuja el boxplot (nótese que no se tienen en cuenta los NA)
  • conf-extremos superior/inferior de la muesca, out-valor de los valores atípicos
  • group-un vector de la misma longitud que out cuyos elementos indican a qué grupo pertenece el valor atípico y
  • names-un vector de nombres para los grupos.

Multiple Boxplots

Podemos dibujar múltiples boxplots en un solo gráfico, pasando una lista, un marco de datos o múltiples vectores.

Consideremos el campo Ozone y Temp del conjunto de datos airquality. Generemos también una distribución normal con la misma media y desviación estándar y representémoslas una al lado de la otra para compararlas.

# prepare the dataozone <- airquality$Ozonetemp <- airquality$Temp# gererate normal distribution with same mean and sdozone_norm <- rnorm(200,mean=mean(ozone, na.rm=TRUE), sd=sd(ozone, na.rm=TRUE))temp_norm <- rnorm(200,mean=mean(temp, na.rm=TRUE), sd=sd(temp, na.rm=TRUE))

Ahora hagamos 4 boxplots con estos datos. Utilizamos los argumentos at y names para denotar el lugar y la etiqueta.

boxplot(ozone, ozone_norm, temp, temp_norm,main = "Multiple boxplots for comparision",at = c(1,2,4,5),names = c("ozone", "normal", "temp", "normal"),las = 2,col = c("orange","red"),border = "brown",horizontal = TRUE,notch = TRUE)

r-multiple-boxplot

Fórmula de la forma boxplot

La función boxplot() también puede aceptar fórmulas de la forma y~x donde, y es un vector numérico que se agrupa según el valor de x.

Por ejemplo, en nuestro conjunto de datos airquality, el Temp puede ser nuestro vector numérico. El mes puede ser nuestra variable de agrupación, para que obtengamos el boxplot de cada mes por separado. En nuestro conjunto de datos, el mes tiene forma de número (1=enero, 2-febrero y así sucesivamente).

boxplot(Temp~Month,data=airquality,main="Different boxplots for each month",xlab="Month Number",ylab="Degree Fahrenheit",col="orange",border="brown")

Múltiples gráficos de caja en un solo gráfico

De la figura anterior se desprende que el mes número 7 (julio) es relativamente más cálido que el resto.