Después de realizar con éxito esta práctica serás capaz de:
1. Construir un diagrama de caja para una serie de datos utilizando R
2. Describir las principales características de una serie de datos utilizando un diagrama de caja
3. Construir diagramas de caja para dos o más series de datos
4. Describir las principales características de dos o más series de datos utilizando diagramas de cajas
En R la función que nos permite construir un boxplot o diagrama de caja es boxplot() que por defecto genera el diagrama de manera vertical (muy útil cuando es espacio es limitado) pero que fácilmente podemos modificar agregando el argumento horizontal=TRUE. Veamos su uso con un caso real.
El reporte técnico “Ozone Season emissions by State” (U.S. environmental Protection Agency, 2002) proporciona los siguientes datos para la emisión de óxido nitroso (en miles de toneladas) para 48 estados de EEUU.
76, 22, 40, 7, 30, 5, 6, 136, 72, 33, 89, 136, 39, 92, 40, 13, 27, 1, 63, 33, 60, 0, 27, 16, 63, 32, 20, 2, 15, 36, 19, 39, 0, 130, 40, 4, 85, 38, 7, 68, 151, 32, 34, 0, 6, 43, 89, 34
Para construir el diagrama seguimos los siguientes pasos:
1. Iniciamos almacenando los datos en una variable. La llamaremos emisiones.
emisiones <- c(76, 22, 40, 7, 30, 5, 6, 136, 72, 33, 89, 136, 39, 92, 40, 13, 27, 1, 63, 33, 60, 0, 27, 16, 63, 32, 20, 2, 15, 36, 19, 39, 0, 130, 40, 4, 85, 38, 7, 68, 151, 32, 34, 0, 6, 43, 89, 34)
boxplot(emisiones, horizontal = TRUE, main="Emisiones de óxido Nitroso \n [en miles de toneladas] ",col="lightSalmon")
Copie y ejecute los códigos anteriores Modifique el parámetro horizontal a FALSE para ver su efecto en el gráfico
El gráfico nos muestra que la distribución de datos presenta un sesgo a la derecha. Un valor representativo es 33,500 toneladas. El 50% central de los datos se dispersa en un intervalo de 48.5 puntos porcentuales. El gráfico también revela la presencia de un valor atípico de 151,000 toneladas.
Nota: recuerde que si la distribución es sesgada, usamos la mediana y el IQR para medir el centro y la variabilidad de la serie de datos. Puede usar la función summary() para calcular estos valores.También puede usar la función IQR() para calcular directamente el IQR
summary(emisiones)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 14.50 33.50 42.71 63.00 151.00
IQR(emisiones)
## [1] 48.5
En el siguiente gráfico se muestra el histograma y el diagrama de caja para emisiones
par(mfrow= c(2,1))
hist(emisiones,main="Histograma y Boxplot para la Variable Emisiones",probability = TRUE,col="lightSalmon")
boxplot(emisiones, horizontal = TRUE, main=" ",col="lightSalmon")
Note como el bigote (la línea de la derecha de la caja) se hace más largo hacia donde está el sesgo de la distribución. En el caso de una distribución aproximadamente simétrica, ambos bigotes deberán ser aproximadamente iguales. Ejecute varias veces el siguiente código (lo que generará gráficos diferentes cada vez) para que se familiarice con el boxplot de una distribución aproximadamente simétrica.
simetrica <- rnorm(200,10,1.6)
par(mfrow= c(2,1))
hist(simetrica,main="Histograma y Boxplot para una Distribución Simétrica",probability = TRUE,col = "LightSalmon", xlab = "")
boxplot(simetrica, horizontal = TRUE, main=" ",col = "LightSalmon")
Recuerde que esta distribución se describe con la media y la desviación estándar.
La versatilidad de los diagramas de caja se hace visible cuando deseamos comparar series de datos. Copie el siguiente código y ejecútelo. Los datos representan los contenidos de sodio para dos marcas de queso.
contenido1 <- c(310, 420, 45, 40, 220, 240, 180, 90)
contenido2 <- c(270, 180, 250, 290, 130, 260, 340, 310)
boxplot(contenido1,contenido2,names = c("Marca 1","Marca 2"),main="Contenido de Sodio",col="LightSalmon")
El diagrama nos revela que ambas distribuciones de datos presentan sesgos. Para la marca 1 la distribución de los contenidos es sesgada a la derecha, mientras que para la marca 2 es sesgada a la izquierda. Ninguna de las distribuciones presenta valores atípicos. En cuanto al valor representativo vemos que no hay una diferencia significativa para los contenidos de sodio de ambas marcas, sin embargo, cerca del 75% de los contenidos de la marca 1 son menores que 265, el valor representativo de la marca 2, que presenta una variabilidad menor que la marca 1.El siguiente código genera el mismo diagrama pero de manera horizontal.
contenido1 <- c(310, 420, 45, 40, 220, 240, 180, 90)
contenido2 <- c(270, 180, 250, 290, 130, 260, 340, 310)
boxplot(contenido1,contenido2,horizontal = TRUE,names = c("Marca 1","Marca 2"),main="Contenido de Sodio",col="LightSalmon")