7.2 Agregando densidades y graficando Boxplot
Dadas las cualidades de la librería ggplot2, se pueden agregar nuevas capas a los gráficos, particularmente, a los histogramas antes realizados. La densidad se agrega con el argumento geom_density
y se incorpora el parámetro alpha
que regula la transparencia del relleno. A continuacuón, se muestra cómo se agregan las densidades:
+ geom_density(fill = "blue", alpha = 0.3) |
plot1_Ponde + geom_density(fill = "blue", alpha = 0.3) plot2_Ponde
Ahora bien, al aplicar aes(fill = Zone)
permite que la densidad sea agregada para cada una de las agrupaciones como se muestra a continución,
+ geom_density(aes(fill = Zone), alpha = 0.3) |
plot3_Ponde + geom_density(aes(fill = Zone), alpha = 0.3) plot4_Ponde
En está oportunidad se agrega la desnidad por sexo,
+ geom_density(aes(fill = Sex), alpha = 0.3) |
plot5_Ponde + geom_density(aes(fill = Sex), alpha = 0.3) plot6_Ponde
Boxplot
El boxplot, diagrama de caja y bigotes, es un gráfico resumen presentado por John Tukey en 1977 que en la actualidad es ampliamente utilizado en la práctica estadística. En este diagrama se visualiza de forma general un conjunto de datos empleando el resumen de cinco números. La forma generada por este gráfico compuesto por un rectángulo (“caja”) y dos brazos (“bigotes”) suministra información sobre la relación ente los cuartiles (Q1, Q2 o mediana y Q3) y los valores mínimo y máximo, sobre la existencia de valores atípicos y la simetría de la distribución.
Para realizar este gráfico en ggplot2 se utiliza la función geom_boxplot
. A continuación, se presentan los Boxplot para las variables ingresos y gastos respectivamente:
<- ggplot(
plot7_Ponde data = encuesta, aes(x = Income, weight = wk)
+
) geom_boxplot() +
ggtitle("Ponderado") +
coord_flip() +
theme_cepal()
<- ggplot(
plot8_Ponde
encuesta,aes(x = Expenditure, weight = wk)
+
) geom_boxplot() +
ggtitle("Ponderado") +
coord_flip() +
theme_cepal()
| plot8_Ponde plot7_Ponde
En los gráficos anteriores se puede observar que la variable ingresos tiene más variabilidad que la variable gastos. En ambos gráficos se observan datos atípicos.
Estos diagramas también permiten la comparación entre dos o más niveles de agrupamiento, por ejemplo, por zonas para las variables ingresos y gastos como se muestra a continuación,
<- ggplot(
plot9_Ponde
encuesta,aes(x = Income, weight = wk)
+
) geom_boxplot(aes(fill = Zone)) +
ggtitle("Ponderado") +
coord_flip() +
theme_cepal()
<- ggplot(
plot10_Ponde
encuesta,aes(x = Expenditure, weight = wk)
+
) geom_boxplot(aes(fill = Zone)) +
ggtitle("Ponderado") +
coord_flip() +
theme_cepal()
| plot10_Ponde plot9_Ponde
Observándose, entre otros que, para la variable gasto en la zona rural es donde más datos atípico hay.
Ahora, si se desea personalizar los colores del relleno debe hacer uso de la función scale_fill_manual
como se muestra a continuación:
<- c(Urban = "#48C9B0", Rural = "#117864")
colorZona + scale_fill_manual(values = colorZona) |
plot9_Ponde + scale_fill_manual(values = colorZona) plot10_Ponde
Para mayores colores, ver la ayuda de la librería. Ahora, si se desea comparar los ingresos y gastos por sexo se procede de la siguiente manera:
<- ggplot(
plot11_Ponde data = encuesta,
aes(x = Income, weight = wk)) +
geom_boxplot(aes(fill = Sex)) +
ggtitle("Ponderado") +
coord_flip() +
theme_cepal()
<- ggplot(
plot12_Ponde
encuesta,aes(x = Expenditure, weight = wk)
+
) geom_boxplot(aes(fill = Sex)) +
ggtitle("Ponderado") +
coord_flip() +
theme_cepal()
| plot12_Ponde plot11_Ponde
Definiendo el color del relleno para hombres y mujeres:
<- c(Male = "#5DADE2", Female = "#2874A6")
colorSex + scale_fill_manual(values = colorSex) |
plot11_Ponde + scale_fill_manual(values = colorSex) plot12_Ponde
Realizando la comparación para más de dos categorías, por ejemplo región, se procede como:
<- ggplot(
plot13_Ponde data = encuesta,
aes(x = Income, weight = wk)) +
geom_boxplot(aes(fill = Region)) +
ggtitle("Ponderado") +
coord_flip() +
theme_cepal()
<- ggplot(
plot14_Ponde data = encuesta,
aes(x = Expenditure, weight = wk)) +
geom_boxplot(aes(fill = Region)) +
ggtitle("Ponderado") +
coord_flip() +
theme_cepal()
| plot14_Ponde plot13_Ponde
Personalizando los coles cuando hay más de dos categorías, se realiza como se muestra a continuación:
<- c(
colorRegion Norte = "#D6EAF8", Sur = "#85C1E9",
Centro = "#3498DB", Occidente = "#2E86C1", Oriente = "#21618C"
)+ scale_fill_manual(values = colorRegion) |
plot13_Ponde + scale_fill_manual(values = colorRegion) plot14_Ponde
La función geom_boxplot
permite realizar comparaciones con más de dos variables al tiempo. A continuación se compara los ingresos por sexo en las diferentes zonas.
<-ggplot(data = encuesta,
plot15_Ponde aes(x = Income, y = Zone, weight = wk)) +
geom_boxplot(aes(fill = Sex)) +
ggtitle("Ponderado") +
scale_fill_manual(values = colorSex) +
coord_flip()
plot15_Ponde
De forma análoga podemos realizar la comparación de los gastos por sexo en las diferentes zonas:
<- ggplot(data = encuesta,
plot16_Ponde aes(x = Expenditure, y = Zone, weight = wk)) +
geom_boxplot(aes(fill = Sex)) +
ggtitle("Ponderado") +
scale_fill_manual(values = colorSex) +
coord_flip()
/ plot16_Ponde plot15_Ponde
Se puede extender las comparaciones a variables que tienen más de dos categorías.
<- ggplot(data = encuesta,
plot17_Ponde aes(x = Income, y = Region, weight = wk)) +
geom_boxplot(aes(fill = Sex)) +
ggtitle("Ponderado") +
scale_fill_manual(values = colorSex) +
coord_flip()
plot17_Ponde
<- ggplot(data = encuesta,
plot18_Ponde aes(x = Expenditure,
y = Region, weight = wk)) +
geom_boxplot(aes(fill = Sex)) +
ggtitle("Ponderado") +
scale_fill_manual(values = colorSex) +
coord_flip()
/ plot18_Ponde plot17_Ponde