27.8 Diagramas de dispersión
Los diagramas de dispersión se utilizan para un par de variables numéricas continuas. Se realizan con la geometría geom_point. Se les puede añadir una capa de ajuste lineal en los casos donde hay cierta correlación entre el par de variables.
ggplot(data = saber %>% filter(!is.na(estu_inse_individual))) +
aes(x= estu_inse_individual, y = punt_matematicas) +
geom_point(alpha = 0.2, shape = 20, color = "salmon") +
geom_smooth(method = "lm", color = "maroon", linewidth = 0.2) +
labs(title = "Desempeño en matemáticas en Saber 11",
x = "Nivel socioeconómico familiar",
y = "Puntaje",
caption = "Fuente: ICFES 2019")
geom_smooth por defecto regresa la variable del eje y respecto a la variable del eje x, como debe ser.
Se ajustan los puntos numéricos que se desean presentar en cada eje:
ggplot(data = saber %>% filter(!is.na(estu_inse_individual))) +
aes(x = estu_inse_individual,y = punt_matematicas) +
geom_point(alpha = 0.2, shape = 20, color = "salmon") +
geom_smooth(method = "lm", color = "maroon", linewidth = 0.2) +
labs(title = "Desempeño en matemáticas en Saber 11",
x = "Nivel socioeconómico familiar",
y = "Puntaje",
caption = "Fuente: ICFES 2019") +
scale_x_continuous(breaks = seq(10, 90, 10)) +
scale_y_continuous(breaks = seq(5, 100, 10)) +
scale_color_brewer(palette = "Set2")
Automáticamente añade el intervalo de confianza al \(95\)% como una banda gris. Debido a la gran cantidad de datos, es muy estrecha.
La regresión se puede realizar por alguna variable categórica. Se añade en la aesthetic (aes).
# Si fuese necesario
saber$desemp_ingles %<>%
factor(levels = rev(levels(saber$desemp_ingles)),
ordered = TRUE)
levels(saber$desemp_ingles)## [1] "B+" "B1" "A2" "A1" "A-"
ggplot(data = saber %>% filter(!is.na(estu_inse_individual))) +
aes(x = estu_inse_individual, y = punt_matematicas,
color = desemp_ingles) +
geom_point(alpha = 0.2, shape = 20, color = "#882255") +
geom_smooth(method = "lm", linewidth = 1) +
labs(title = "Desempeño en matemáticas en Saber 11",
x = "Nivel socioeconómico familiar",
y = "Puntaje",
caption = "Fuente: ICFES 2019",
color = "Nivel desempeño\nen inglés") +
scale_color_manual(values = c('#0077BB', '#33BBEE', '#009988', '#EE7733', '#CC3311')) +
scale_x_continuous(breaks = seq(10, 90, 10)) +
scale_y_continuous(breaks = seq(5, 100, 10)) +
theme_minimal()
La banda gris alrededor del nivel B+ es más ancha porque hay menor cantidad de datos, es decir, no hay muchos estudiantes en dicho nivel.
No se han modificado los colores de los puntos en función a la variable categórica porque se especificó un color fijo. Se elimina.
ggplot(data = saber %>% filter(!is.na(estu_inse_individual))) +
aes(x = estu_inse_individual, y = punt_matematicas,
color = desemp_ingles) +
geom_point(alpha = 0.2, shape = 20) +
geom_smooth(method = "lm", linewidth = 1) +
labs(title = "Desempeño en matemáticas en Saber 11",
x = "Nivel socioeconómico familiar",
y = "Puntaje",
caption = "Fuente: ICFES 2019",
color = "Nivel desempeño\nen inglés") +
scale_color_manual(values = c('#0077BB', '#33BBEE', '#009988', '#EE7733', '#CC3311')) +
scale_x_continuous(breaks = seq(10, 90, 10)) +
scale_y_continuous(breaks = seq(5, 100, 10))
Obsérvese que se ubica dentro del aes().
Por defecto, el suavizado se realiza mediante loess, que realiza regresiones locales y el suavizado es curvo:
ggplot(data = saber %>% filter(!is.na(estu_inse_individual))) +
aes(x = estu_inse_individual, y = punt_matematicas) +
geom_point(alpha = 0.2, shape = 20, color = "salmon") +
geom_smooth(linewidth = 0.8, color = "maroon") +
labs(title = "Desempeño en matemáticas en Saber 11",
x = "Nivel socioeconómico familiar",
y = "Puntaje",
caption = "Fuente: ICFES 2019")
Todas las capas que se han ido presentando se puede utilizar con todos los geomas. Y las características sobre unir parámetros se pueden aplicar también a los restantes. Por ejemplo, respecto a la forma del punto:
ggplot(data = saber %>% filter(!is.na(cole_bilingue))) +
aes(x = estu_inse_individual, y = punt_matematicas,
color = cole_bilingue, shape = cole_bilingue) +
geom_point(alpha = 0.4, size = 1.2) +
labs(title = "Desempeño en matemáticas en Saber 11",
x = "Nivel socioeconómico familiar",
y = "Puntaje",
caption = "Fuente: ICFES 2019",
color = "IE bilingüe",
shape = "IE bilingüe") +
scale_color_manual(values = c('#009988', '#CC3311'))