1 Lectura de datos

datos <- read.csv("Estado_nutricional_de_la_poblaci_n_menor_de_6_a_os_-_Municipio_de_Medell_n_2016.csv", encoding = "UTF-8")

2 Depuración de datos

2.1 Conversión a formato .Rdata

# Conversión
save(datos, file = "Nutricion.Rdata")
# Cargando datos en formato .Rdata
load("Nutricion.Rdata")

2.2 Estructura interna de los datos iniciales

str(datos)
## 'data.frame':    83861 obs. of  15 variables:
##  $ Regimen         : Factor w/ 4 levels "Contributivo",..: 3 1 1 1 1 1 1 1 1 1 ...
##  $ EPS             : Factor w/ 23 levels "ALIANSALUD","CAFESALUD EPS",..: 16 12 12 12 12 12 11 15 12 12 ...
##  $ Sexo            : Factor w/ 2 levels "F","M": 2 1 2 2 1 2 2 2 2 1 ...
##  $ Peso            : num  11.4 11.9 14.2 19.3 8.4 9.3 13.9 11.2 8.4 8.5 ...
##  $ Estatura        : num  79 86.5 91.5 101 72 74 97.5 89 66.5 74.6 ...
##  $ DS.P.E          : num  0.04 0.75 1.58 2.97 -0.55 0.03 -1.87 -1.52 -0.17 -1.36 ...
##  $ Denominación.P.E: Factor w/ 5 levels "Peso adecuado para la edad",..: 1 1 4 4 1 1 5 5 1 5 ...
##  $ DS.T.E          : num  -1.85 1.11 1.82 2.33 -0.85 0.08 -2.22 -0.96 -1.52 -1.62 ...
##  $ Denominación.T.E: Factor w/ 4 levels "Estatura adecuada para la edad",..: 4 1 1 1 1 1 2 1 4 4 ...
##  $ DS.P.T          : num  1.24 0.17 0.91 2.45 -0.22 0 -0.79 -1.55 0.99 -0.83 ...
##  $ Denominación.P.T: Factor w/ 9 levels "Adecuado para la edad",..: 9 4 4 3 4 4 4 7 4 4 ...
##  $ Comuna          : Factor w/ 22 levels "Altavista","Aranjuez",..: 15 9 8 3 4 17 7 4 9 18 ...
##  $ Zona            : Factor w/ 8 levels "Centro Occidental",..: 4 1 7 7 2 3 8 2 1 1 ...
##  $ Edad_en_dias    : int  641 684 721 980 408 350 1754 967 283 544 ...
##  $ Grupo.Edad      : Factor w/ 3 levels "1. De 0 a 2 Anos",..: 1 1 1 2 1 1 2 2 1 1 ...

2.3 Seleccionando columnas con select()

library(dplyr)
library(ggplot2)
datos2 <- datos %>% 
  select(-c(Regimen, EPS, Grupo.Edad))

str(datos2)
## 'data.frame':    83861 obs. of  12 variables:
##  $ Sexo            : Factor w/ 2 levels "F","M": 2 1 2 2 1 2 2 2 2 1 ...
##  $ Peso            : num  11.4 11.9 14.2 19.3 8.4 9.3 13.9 11.2 8.4 8.5 ...
##  $ Estatura        : num  79 86.5 91.5 101 72 74 97.5 89 66.5 74.6 ...
##  $ DS.P.E          : num  0.04 0.75 1.58 2.97 -0.55 0.03 -1.87 -1.52 -0.17 -1.36 ...
##  $ Denominación.P.E: Factor w/ 5 levels "Peso adecuado para la edad",..: 1 1 4 4 1 1 5 5 1 5 ...
##  $ DS.T.E          : num  -1.85 1.11 1.82 2.33 -0.85 0.08 -2.22 -0.96 -1.52 -1.62 ...
##  $ Denominación.T.E: Factor w/ 4 levels "Estatura adecuada para la edad",..: 4 1 1 1 1 1 2 1 4 4 ...
##  $ DS.P.T          : num  1.24 0.17 0.91 2.45 -0.22 0 -0.79 -1.55 0.99 -0.83 ...
##  $ Denominación.P.T: Factor w/ 9 levels "Adecuado para la edad",..: 9 4 4 3 4 4 4 7 4 4 ...
##  $ Comuna          : Factor w/ 22 levels "Altavista","Aranjuez",..: 15 9 8 3 4 17 7 4 9 18 ...
##  $ Zona            : Factor w/ 8 levels "Centro Occidental",..: 4 1 7 7 2 3 8 2 1 1 ...
##  $ Edad_en_dias    : int  641 684 721 980 408 350 1754 967 283 544 ...
  • Editanto nombres:
names(datos2) <- c("Sexo", "Peso", "Estatura", "DSPE", "DPE", "DSTE", "DTE",
                   "DSPT", "DPT", "Comuna", "Zona", "Edad")

str(datos2)
## 'data.frame':    83861 obs. of  12 variables:
##  $ Sexo    : Factor w/ 2 levels "F","M": 2 1 2 2 1 2 2 2 2 1 ...
##  $ Peso    : num  11.4 11.9 14.2 19.3 8.4 9.3 13.9 11.2 8.4 8.5 ...
##  $ Estatura: num  79 86.5 91.5 101 72 74 97.5 89 66.5 74.6 ...
##  $ DSPE    : num  0.04 0.75 1.58 2.97 -0.55 0.03 -1.87 -1.52 -0.17 -1.36 ...
##  $ DPE     : Factor w/ 5 levels "Peso adecuado para la edad",..: 1 1 4 4 1 1 5 5 1 5 ...
##  $ DSTE    : num  -1.85 1.11 1.82 2.33 -0.85 0.08 -2.22 -0.96 -1.52 -1.62 ...
##  $ DTE     : Factor w/ 4 levels "Estatura adecuada para la edad",..: 4 1 1 1 1 1 2 1 4 4 ...
##  $ DSPT    : num  1.24 0.17 0.91 2.45 -0.22 0 -0.79 -1.55 0.99 -0.83 ...
##  $ DPT     : Factor w/ 9 levels "Adecuado para la edad",..: 9 4 4 3 4 4 4 7 4 4 ...
##  $ Comuna  : Factor w/ 22 levels "Altavista","Aranjuez",..: 15 9 8 3 4 17 7 4 9 18 ...
##  $ Zona    : Factor w/ 8 levels "Centro Occidental",..: 4 1 7 7 2 3 8 2 1 1 ...
##  $ Edad    : int  641 684 721 980 408 350 1754 967 283 544 ...

2.4 Modificando niveles de factores con mutate()

datos3 <- datos2 %>% 
  mutate(Sexo = factor(Sexo, labels = c("Femenino", "Masculino")),
         DPE = factor(DPE, labels = c("Peso adecuado", "Peso bajo", "Peso muy bajo",
                                      "Encima de 1 DE", "Riesgo peso bajo")),
         DTE = factor(DTE, labels = c("Estatura adecuada", "Estatura baja",
                                      "Muy alto", "Riesgo de E. baja")),
         DPT = factor(DPT, labels = c("Adecuado-Edad", "Delgado", "Obeso",
                                      "Adecuado-Estatura", "D. Aguda",
                                      "D. Severa", "R. peso bajo", "R. Delgadez",
                                      "Sobrepeso")))

str(datos3)
## 'data.frame':    83861 obs. of  12 variables:
##  $ Sexo    : Factor w/ 2 levels "Femenino","Masculino": 2 1 2 2 1 2 2 2 2 1 ...
##  $ Peso    : num  11.4 11.9 14.2 19.3 8.4 9.3 13.9 11.2 8.4 8.5 ...
##  $ Estatura: num  79 86.5 91.5 101 72 74 97.5 89 66.5 74.6 ...
##  $ DSPE    : num  0.04 0.75 1.58 2.97 -0.55 0.03 -1.87 -1.52 -0.17 -1.36 ...
##  $ DPE     : Factor w/ 5 levels "Peso adecuado",..: 1 1 4 4 1 1 5 5 1 5 ...
##  $ DSTE    : num  -1.85 1.11 1.82 2.33 -0.85 0.08 -2.22 -0.96 -1.52 -1.62 ...
##  $ DTE     : Factor w/ 4 levels "Estatura adecuada",..: 4 1 1 1 1 1 2 1 4 4 ...
##  $ DSPT    : num  1.24 0.17 0.91 2.45 -0.22 0 -0.79 -1.55 0.99 -0.83 ...
##  $ DPT     : Factor w/ 9 levels "Adecuado-Edad",..: 9 4 4 3 4 4 4 7 4 4 ...
##  $ Comuna  : Factor w/ 22 levels "Altavista","Aranjuez",..: 15 9 8 3 4 17 7 4 9 18 ...
##  $ Zona    : Factor w/ 8 levels "Centro Occidental",..: 4 1 7 7 2 3 8 2 1 1 ...
##  $ Edad    : int  641 684 721 980 408 350 1754 967 283 544 ...

2.5 Creando nueva variable Edad2 en años

# Una forma con la biblioteca base de R
datos3$Edad2 <- datos3$Edad/365.5
datos4 <- datos3 %>% 
  mutate(Edad2 = Edad/365.5)

str(datos4)
## 'data.frame':    83861 obs. of  13 variables:
##  $ Sexo    : Factor w/ 2 levels "Femenino","Masculino": 2 1 2 2 1 2 2 2 2 1 ...
##  $ Peso    : num  11.4 11.9 14.2 19.3 8.4 9.3 13.9 11.2 8.4 8.5 ...
##  $ Estatura: num  79 86.5 91.5 101 72 74 97.5 89 66.5 74.6 ...
##  $ DSPE    : num  0.04 0.75 1.58 2.97 -0.55 0.03 -1.87 -1.52 -0.17 -1.36 ...
##  $ DPE     : Factor w/ 5 levels "Peso adecuado",..: 1 1 4 4 1 1 5 5 1 5 ...
##  $ DSTE    : num  -1.85 1.11 1.82 2.33 -0.85 0.08 -2.22 -0.96 -1.52 -1.62 ...
##  $ DTE     : Factor w/ 4 levels "Estatura adecuada",..: 4 1 1 1 1 1 2 1 4 4 ...
##  $ DSPT    : num  1.24 0.17 0.91 2.45 -0.22 0 -0.79 -1.55 0.99 -0.83 ...
##  $ DPT     : Factor w/ 9 levels "Adecuado-Edad",..: 9 4 4 3 4 4 4 7 4 4 ...
##  $ Comuna  : Factor w/ 22 levels "Altavista","Aranjuez",..: 15 9 8 3 4 17 7 4 9 18 ...
##  $ Zona    : Factor w/ 8 levels "Centro Occidental",..: 4 1 7 7 2 3 8 2 1 1 ...
##  $ Edad    : int  641 684 721 980 408 350 1754 967 283 544 ...
##  $ Edad2   : num  1.75 1.87 1.97 2.68 1.12 ...

2.6 Filtrando individuos con edad mayor a 6 años (filter())

datos5 <- datos4 %>% 
  filter(Edad2 <= 6)

2.7 Procesos concatenados con %>%

datos_final <- datos2 %>% 
  mutate(Sexo = factor(Sexo, labels = c("Femenino", "Masculino")),
         DPE = factor(DPE, labels = c("Peso adecuado", "Peso bajo", "Peso muy bajo",
                                      "Encima de 1 DE", "Riesgo peso bajo")),
         DTE = factor(DTE, labels = c("Estatura adecuada", "Estatura baja",
                                      "Muy alto", "Riesgo de E. baja")),
         DPT = factor(DPT, labels = c("Adecuado-Edad", "Delgado", "Obeso",
                                      "Adecuado-Estatura", "D. Aguda",
                                      "D. Severa", "R. peso bajo", "R. Delgadez",
                                      "Sobrepeso"))) %>%
  mutate(Edad2 = Edad/365.5) %>% 
  filter(Edad2 <= 6)
  
str(datos_final)  
## 'data.frame':    83407 obs. of  13 variables:
##  $ Sexo    : Factor w/ 2 levels "Femenino","Masculino": 2 1 2 2 1 2 2 2 2 1 ...
##  $ Peso    : num  11.4 11.9 14.2 19.3 8.4 9.3 13.9 11.2 8.4 8.5 ...
##  $ Estatura: num  79 86.5 91.5 101 72 74 97.5 89 66.5 74.6 ...
##  $ DSPE    : num  0.04 0.75 1.58 2.97 -0.55 0.03 -1.87 -1.52 -0.17 -1.36 ...
##  $ DPE     : Factor w/ 5 levels "Peso adecuado",..: 1 1 4 4 1 1 5 5 1 5 ...
##  $ DSTE    : num  -1.85 1.11 1.82 2.33 -0.85 0.08 -2.22 -0.96 -1.52 -1.62 ...
##  $ DTE     : Factor w/ 4 levels "Estatura adecuada",..: 4 1 1 1 1 1 2 1 4 4 ...
##  $ DSPT    : num  1.24 0.17 0.91 2.45 -0.22 0 -0.79 -1.55 0.99 -0.83 ...
##  $ DPT     : Factor w/ 9 levels "Adecuado-Edad",..: 9 4 4 3 4 4 4 7 4 4 ...
##  $ Comuna  : Factor w/ 22 levels "Altavista","Aranjuez",..: 15 9 8 3 4 17 7 4 9 18 ...
##  $ Zona    : Factor w/ 8 levels "Centro Occidental",..: 4 1 7 7 2 3 8 2 1 1 ...
##  $ Edad    : int  641 684 721 980 408 350 1754 967 283 544 ...
##  $ Edad2   : num  1.75 1.87 1.97 2.68 1.12 ...

3 Análisis exploratorio de datos

3.1 Distribución de variables categóricas (caso univariado)

3.1.1 Género

  • Tabla de distribución por género:
library(knitr)
fa_sexo <- datos_final %>% 
  group_by(Sexo) %>% 
  summarise(Total = n(), Porcentaje = round(Total/nrow(datos_final)*100,
                                            digits = 2)) %>% 
  kable()

fa_sexo
Sexo Total Porcentaje
Femenino 40453 48.5
Masculino 42954 51.5
  • Distribución por género:
# Base de datos con información a graficar
fa_sexo2 <- datos_final %>% 
  group_by(Sexo) %>% 
  summarise(Total = n(), Porcentaje = round(Total/nrow(datos_final)*100,
                                            digits = 2))
# Gráfico con ggplot2
ggplot(data = fa_sexo2, mapping = aes(x = Sexo, y = Total)) +
  geom_col(color = "black", fill = "dodgerblue2") +
  labs(x = "Género", y = "F. Absoluta",
       title = "Frecuencia absoluta por género") +
  theme_bw()

  • dplyr + ggplot2:
datos_final %>% 
  group_by(Sexo) %>% 
  summarise(Total = n(), Porcentaje = round(Total/nrow(datos_final)*100,
                                            digits = 2)) %>% 
  ggplot(data = ., mapping = aes(x = Sexo, y = Total)) +
  geom_col(color = "black", fill = "dodgerblue2") +
  labs(x = "Género", y = "F. Absoluta",
       title = "Frecuencia absoluta por género") +
  theme_bw()

3.1.2 Denominación peso-estatura

  • Tabla de distribución:
tabla_dpe <- datos_final %>% 
  group_by(DPE) %>% 
  summarise(Total = n(),
            Porcentaje = round((Total/nrow(datos_final)*100), digits = 2)) %>% 
  arrange(desc(Total)) %>% 
  kable()

tabla_dpe
DPE Total Porcentaje
Peso adecuado 56867 68.18
Riesgo peso bajo 12692 15.22
Encima de 1 DE 11095 13.30
Peso bajo 1959 2.35
Peso muy bajo 794 0.95
  • Visualización 1 (geom_col()):
# Proceso concatenado con %>% 
datos_final %>% 
  group_by(DPE) %>% 
  summarise(Total = n(),
            Porcentaje = round((Total/nrow(datos_final)*100), digits = 2)) %>% 
  ggplot(data = ., mapping = aes(x = DPE, y = Total)) +
  geom_col(color = "black", fill = "forestgreen") +
  labs(x = "Denominación", y = "Frecuencia",
       title = "Distribución de la denominación Peso-Estatura en infantes")

  • Visualización 2 (geom_point() y geom_line()):
# Proceso concatenado con %>% 
datos_final %>% 
  group_by(DPE) %>% 
  summarise(Total = n(),
            Porcentaje = round((Total/nrow(datos_final)*100), digits = 2)) %>% 
  ggplot(data = ., mapping = aes(x = DPE, y = Total)) +
  geom_point() +
  geom_line(mapping = aes(group = 1)) +
  labs(x = "Denominación", y = "Frecuencia",
       title = "Distribución de la denominación Peso-Estatura en infantes")

  • Visualización 3 (geom_col(), geom_point() y geom_line()):
# Proceso concatenado con %>% 
datos_final %>% 
  group_by(DPE) %>% 
  summarise(Total = n(),
            Porcentaje = round((Total/nrow(datos_final)*100), digits = 2)) %>% 
  ggplot(data = ., mapping = aes(x = DPE, y = Total)) +
  geom_col(color = "black", fill = "dodgerblue2") +
  geom_point(size = 4, color = "yellow2") +
  geom_line(mapping = aes(group = 1), lwd = 0.7) +
  labs(x = "Denominación", y = "Frecuencia",
       title = "Distribución de la denominación Peso-Estatura en infantes") +
  theme_minimal()

3.1.3 Denominación talla-estatura

  • Tabla de distribución:
tabla_dte <- datos_final %>% 
  group_by(DTE) %>% 
  summarise(Total = n(),
            Porcentaje = round((Total/nrow(datos_final)*100), digits = 2)) %>% 
  arrange(desc(Total)) %>% 
  kable()

tabla_dte
DTE Total Porcentaje
Estatura adecuada 58094 69.65
Riesgo de E. baja 18754 22.48
Estatura baja 5981 7.17
Muy alto 578 0.69
  • Visualización:
# Proceso concatenado con %>% 
datos_final %>% 
  group_by(DTE) %>% 
  summarise(Total = n(),
            Porcentaje = round((Total/nrow(datos_final)*100), digits = 2)) %>% 
  ggplot(data = ., mapping = aes(x = DTE, y = Total)) +
  geom_col(color = "black", fill = "forestgreen") +
  labs(x = "Denominación", y = "Frecuencia",
       title = "Distribución de la denominación Talla-Estatura en infantes")

3.1.4 Denominación peso-talla

  • Tabla de distribución:
tabla_dpt <- datos_final %>% 
  group_by(DPT) %>% 
  summarise(Total = n(),
            Porcentaje = round((Total/nrow(datos_final)*100), digits = 2)) %>% 
  arrange(desc(Total)) %>% 
  kable()

tabla_dpt
DPT Total Porcentaje
Adecuado-Estatura 50793 60.90
Sobrepeso 13415 16.08
R. peso bajo 7067 8.47
Adecuado-Edad 5843 7.01
Obeso 4133 4.96
D. Aguda 983 1.18
R. Delgadez 791 0.95
D. Severa 263 0.32
Delgado 119 0.14
  • Visualización:
# Proceso concatenado con %>% 
datos_final %>% 
  group_by(DPT) %>% 
  summarise(Total = n(),
            Porcentaje = round((Total/nrow(datos_final)*100), digits = 2)) %>% 
  ggplot(data = ., mapping = aes(x = DPT, y = Total/1000)) +
  geom_col(color = "black", fill = "forestgreen") +
  labs(x = "Denominación", y = "Frecuencia (miles)",
       title = "Distribución de la denominación Peso-Talla en infantes") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

3.1.5 Número de infantes por comuna

  • Tabla de distribución:
tabla_co <- datos_final %>% 
  group_by(Comuna) %>% 
  summarise(Total = n(),
            Porcentaje = round((Total/nrow(datos_final)*100), digits = 2)) %>% 
  arrange(desc(Total)) %>% 
  kable()

tabla_co
Comuna Total Porcentaje
Robledo 7353 8.82
San Javier 7348 8.81
Manrique 6630 7.95
Villa Hermosa 6491 7.78
Popular 6350 7.61
Doce de Octubre 6176 7.40
Belén 5896 7.07
Buenos Aires 5562 6.67
Aranjuez 4327 5.19
Sin Especificar 4019 4.82
Santa Cruz 3988 4.78
Castilla 3580 4.29
San Cristóbal 3044 3.65
La Candelaria 2444 2.93
La América 2297 2.75
Guayabal 1931 2.32
Laureles Estadio 1652 1.98
San Antonio de Prado 1195 1.43
Altavista 1192 1.43
El Poblado 1151 1.38
Santa Elena 658 0.79
Palmitas 123 0.15
  • Visualización:
# Proceso concatenado con %>% 
datos_final %>% 
  group_by(Comuna) %>% 
  summarise(Total = n(),
            Porcentaje = round((Total/nrow(datos_final)*100), digits = 2)) %>% 
  ggplot(data = ., mapping = aes(x = Comuna, y = Total)) +
  geom_col(color = "black", fill = "forestgreen") +
  labs(x = "Comuna", y = "Frecuencia",
       title = "Distribución de infantes por comuna",
       subtitle = "Medellín 2016") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

3.1.6 Número de infantes por zona

  • Tabla de distribución:
tabla_z <- datos_final %>% 
  group_by(Zona) %>% 
  summarise(Total = n(),
            Porcentaje = round((Total/nrow(datos_final)*100), digits = 2)) %>% 
  arrange(desc(Total)) %>% 
  kable()

tabla_z
Zona Total Porcentaje
Nororiental 21295 25.53
NorOccidental 17109 20.51
Centro Oriental 14497 17.38
Centro Occidental 11297 13.54
Sur Occidental 7827 9.38
Corregimientos 6212 7.45
Sin Datos 4019 4.82
Sur Oriental 1151 1.38
  • Visualización:
# Proceso concatenado con %>% 
datos_final %>% 
  group_by(Zona) %>% 
  summarise(Total = n(),
            Porcentaje = round((Total/nrow(datos_final)*100), digits = 2)) %>% 
  ggplot(data = ., mapping = aes(x = Zona, y = Total)) +
  geom_col(color = "black", fill = "forestgreen") +
  labs(x = "Zona", y = "Frecuencia",
       title = "Distribución de infantes por zona",
       subtitle = "Medellín 2016") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

3.2 Distribución de variables categóricas (caso bivariado)

3.2.1 Género y comuna

  • Tabla:
tabla_gc <- datos_final %>% 
  group_by(Comuna, Sexo) %>% 
  summarise(Total = n(),
            Porcentaje = round((Total/nrow(datos_final)*100), digits = 2))

kable(tabla_gc)
Comuna Sexo Total Porcentaje
Altavista Femenino 570 0.68
Altavista Masculino 622 0.75
Aranjuez Femenino 2101 2.52
Aranjuez Masculino 2226 2.67
Belén Femenino 2891 3.47
Belén Masculino 3005 3.60
Buenos Aires Femenino 2665 3.20
Buenos Aires Masculino 2897 3.47
Castilla Femenino 1725 2.07
Castilla Masculino 1855 2.22
Doce de Octubre Femenino 3030 3.63
Doce de Octubre Masculino 3146 3.77
El Poblado Femenino 575 0.69
El Poblado Masculino 576 0.69
Guayabal Femenino 919 1.10
Guayabal Masculino 1012 1.21
La América Femenino 1099 1.32
La América Masculino 1198 1.44
La Candelaria Femenino 1186 1.42
La Candelaria Masculino 1258 1.51
Laureles Estadio Femenino 778 0.93
Laureles Estadio Masculino 874 1.05
Manrique Femenino 3172 3.80
Manrique Masculino 3458 4.15
Palmitas Femenino 60 0.07
Palmitas Masculino 63 0.08
Popular Femenino 3097 3.71
Popular Masculino 3253 3.90
Robledo Femenino 3581 4.29
Robledo Masculino 3772 4.52
San Antonio de Prado Femenino 574 0.69
San Antonio de Prado Masculino 621 0.74
San Cristóbal Femenino 1491 1.79
San Cristóbal Masculino 1553 1.86
San Javier Femenino 3594 4.31
San Javier Masculino 3754 4.50
Santa Cruz Femenino 1927 2.31
Santa Cruz Masculino 2061 2.47
Santa Elena Femenino 307 0.37
Santa Elena Masculino 351 0.42
Sin Especificar Femenino 1966 2.36
Sin Especificar Masculino 2053 2.46
Villa Hermosa Femenino 3145 3.77
Villa Hermosa Masculino 3346 4.01
  • Visualización 1:
ggplot(data = tabla_gc, mapping = aes(x = Comuna, y = Total, fill = Sexo)) +
  geom_col(color = "black") +
  labs(x = "Comuna", y = "Frecuencia",
       title = "Distribución de infantes por género y comuna",
       subtitle = "Medellín 2016") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

  • Visualización 2:
ggplot(data = tabla_gc, mapping = aes(x = Comuna, y = Total, fill = Sexo)) +
  geom_col(color = "black", position = "dodge") +
  scale_fill_manual(values = c("dodgerblue2", "firebrick2")) +
  labs(x = "Comuna", y = "Frecuencia",
       title = "Distribución de infantes por género y comuna",
       subtitle = "Medellín 2016", fill = "Género") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

  • Visualización 1 con facetas (facet_wrap()):
ggplot(data = tabla_gc, mapping = aes(x = Comuna, y = Total)) +
  facet_wrap(facets = ~Sexo) +
  geom_col() +
  labs(x = "Comuna", y = "Frecuencia",
       title = "Distribución de infantes por género y comuna",
       subtitle = "Medellín 2016") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

  • Visualización 2 con facetas (facet_wrap()):
ggplot(data = tabla_gc, mapping = aes(x = Sexo, y = Total)) +
  facet_wrap(facets = ~Comuna, ncol = 3) +
  geom_col(color = "black", fill = "firebrick2") +
  labs(x = "Género", y = "Frecuencia",
       title = "Distribución de infantes por género y comuna",
       subtitle = "Medellín 2016") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

3.3 Distribución de variables cuantitativas (caso univariado)

3.3.1 Distribución de estatura

ggplot(data = datos_final, mapping = aes(x = Estatura)) +
  geom_histogram(color = "black", fill = "royalblue3",
                 bins = 100) +
  labs(x = "Estatura (cm)", y = "Frecuencia",
       title = "Distribución de estatura")

ggplot(data = datos_final, mapping = aes(x = Estatura)) +
  geom_density(color = "forestgreen", fill = "royalblue", lwd = 1.2) +
  labs(x = "Estatura (cm)", y = "Densidad",
       title = "Distribución de estatura")

ggplot(data = datos_final, mapping = aes(x = Estatura, fill = Sexo)) +
  geom_density(alpha = 0.45) +
  labs(x = "Estatura (cm)", y = "Densidad",
       title = "Distribución de estatura por género")

ggplot(data = datos_final, mapping = aes(x = Estatura, fill = DTE)) +
  geom_density(alpha = 0.45) +
  labs(x = "Estatura (cm)", y = "Densidad",
       title = "Distribución de estatura por DTE")

ggplot(data = datos_final, mapping = aes(x = Estatura, fill = DTE)) +
  facet_wrap(~Sexo) +
  geom_density(alpha = 0.45) +
  labs(x = "Estatura (cm)", y = "Densidad",
       title = "Distribución de estatura por género y DTE")

3.3.2 Distribución del peso

ggplot(data = datos_final, mapping = aes(x = Peso)) +
  geom_histogram(color = "black", fill = "royalblue3",
                 bins = 100) +
  geom_vline(xintercept = mean(datos_final$Peso), color = "red",
             lwd = 1.3) +
  labs(x = "Peso (kg)", y = "Frecuencia",
       title = "Distribución del peso")

3.4 Asociación de variables

3.4.1 Relación estatura vs peso

ggplot(data = datos_final, mapping = aes(x = Estatura, y = Peso)) +
  geom_point() +
  geom_smooth(se = FALSE, color = "red") +
  geom_smooth(method = "lm", color = "blue") +
  labs(x = "Estatura (cm)", y = "Peso (kg)",
       title = "Relación estatura vs peso")

ggplot(data = datos_final, mapping = aes(x = Estatura, y = Peso,
                                         color = Sexo)) +
  geom_point() +
  geom_smooth() +
  labs(x = "Estatura (cm)", y = "Peso (kg)",
       title = "Relación estatura vs peso por género")

ggplot(data = datos_final, mapping = aes(x = Estatura, y = Peso)) +
  facet_wrap(~Sexo) +
  geom_point() +
  geom_smooth() +
  labs(x = "Estatura (cm)", y = "Peso (kg)",
       title = "Relación estatura vs peso por género")