RETO

Cargar librerias y datos

library(readr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ lubridate 1.9.2     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
datosreto <- read_csv("C:/Users/Asus ZenBook/Downloads/menores_pi_ensanut_2022_NL-1.Datos.csv")
## Rows: 841 Columns: 477
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (309): FOLIO_INT, FOLIO_I, FOLIO_ID, encuesta, fecha_ini_1, fecha_fin_1...
## dbl   (82): t_hora, t_min, t_sumai, t_sumaf, tiempo1, resultado_1, tiempo2, ...
## lgl   (76): nota002, nota003, M0118D, M0118E, m0118esp, M0203D, M0203E, M020...
## time  (10): hora_ini_1, hora_fin_1, hora_ini_2, hora_fin_2, hora_ini_3, hora...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(datosreto)

Seleccionar variables

reto4 <- select(datosreto, c("m0112b4", "m0112i", "m0112m", "m0112l","m0112k","m0112h","m0112b5","m0102","m0113","m0403a","m0403b", "m0316", "m0405d", "m0405g", "m0938", "m0405h","m0916","m0406",))
summary(reto4)
##    m0112b4             m0112i             m0112m             m0112l         
##  Length:841         Length:841         Length:841         Length:841        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     m0112k             m0112h            m0112b5             m0102          
##  Length:841         Length:841         Length:841         Length:841        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     m0113               m0403a           m0403b          m0316          
##  Length:841         Min.   :0.0000   Min.   :0.0000   Length:841        
##  Class :character   1st Qu.:0.0000   1st Qu.:0.0000   Class :character  
##  Mode  :character   Median :0.0000   Median :0.0000   Mode  :character  
##                     Mean   :0.3674   Mean   :0.6278                     
##                     3rd Qu.:0.0000   3rd Qu.:0.0000                     
##                     Max.   :8.0000   Max.   :8.0000                     
##     m0405d             m0405g           m0938            m0405h         
##  Length:841         Length:841         Mode:logical   Length:841        
##  Class :character   Class :character   NA's:841       Class :character  
##  Mode  :character   Mode  :character                  Mode  :character  
##                                                                         
##                                                                         
##                                                                         
##     m0916              m0406          
##  Length:841         Length:841        
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
## 

Limpiar NAs de cada columna

#¿Le explicaron sobre cómo iniciar la alimentación complementaria?
reto4$m0112b4[is.na(reto4$m0112b4)] <- "No respondió"
count(reto4, m0112b4, sort = TRUE)
## # A tibble: 3 × 2
##   m0112b4     n
##   <chr>   <int>
## 1 Si        578
## 2 No        261
## 3 No sabe     2
#En alguna consulta del niño sano, en otra consulta, en un taller o plática comunitaria, ¿algún personal de salud le dio información acerca de: La importancia del juego y de la actividad física en la infancia?
reto4$m0112i[is.na(reto4$m0112i)] <- "No respondió"
count(reto4, m0112i, sort = TRUE)
## # A tibble: 4 × 2
##   m0112i          n
##   <chr>       <int>
## 1 Si            534
## 2 No            297
## 3 No sabe         8
## 4 No responde     2
#En alguna consulta del niño sano, en otra consulta, en un taller o plática comunitaria, ¿algún personal de salud le dio información acerca de: Desnutrición, retraso del crecimiento y anemia?
reto4$m0112m[is.na(reto4$m0112m)] <- "No respondió"
count(reto4, m0112m, sort = TRUE)
## # A tibble: 4 × 2
##   m0112m          n
##   <chr>       <int>
## 1 Si            484
## 2 No            352
## 3 No sabe         4
## 4 No responde     1
#En alguna consulta del niño sano, en otra consulta, en un taller o plática comunitaria, ¿algún personal de salud le dio información acerca de: Sobrepeso o ganancia acelerada de peso
reto4$m0112l[is.na(reto4$m0112l)] <- "No respondió"
count(reto4, m0112l, sort = TRUE)
## # A tibble: 4 × 2
##   m0112l          n
##   <chr>       <int>
## 1 Si            469
## 2 No            362
## 3 No sabe         6
## 4 No responde     4
#En alguna consulta del niño sano, en otra consulta, en un taller o plática comunitaria, ¿algún personal de salud le dio información acerca de: La importancia de que (NOMBRE) asista al preescolar o a algún programa de educación inicial?
reto4$m0112k[is.na(reto4$m0112k)] <- "No respondió"
count(reto4, m0112k, sort = TRUE)
## # A tibble: 4 × 2
##   m0112k          n
##   <chr>       <int>
## 1 Si            430
## 2 No            409
## 3 No responde     1
## 4 No sabe         1
#En alguna consulta del niño sano, en otra consulta, en un taller o plática comunitaria, ¿algún personal de salud le dio información acerca de: La nutrición del niño/a, dieta balanceada?
reto4$m0112h[is.na(reto4$m0112h)] <- "No respondió"
count(reto4, m0112h, sort = TRUE)
## # A tibble: 4 × 2
##   m0112h          n
##   <chr>       <int>
## 1 Si            591
## 2 No            247
## 3 No sabe         2
## 4 No responde     1
#¿le explicaron sobre cómo dar suplementos de vitaminas, hierro y otros minerales a su niño/a?
reto4$m0112b5[is.na(reto4$m0112b5)] <- "No respondió"
count(reto4, m0112b5, sort = TRUE)
## # A tibble: 4 × 2
##   m0112b5         n
##   <chr>       <int>
## 1 No            420
## 2 Si            410
## 3 No sabe         7
## 4 No responde     4
#¿Cuál es el grado de estudios más alto de la madre de (NOMBRE)?
reto4$m0102[is.na(reto4$m0102)] <- "No respondió"
count(reto4, m0102, sort = TRUE)
## # A tibble: 11 × 2
##    m0102            n
##    <chr>        <int>
##  1 Secundaria     403
##  2 Preparatoria   204
##  3 Licenciatura    86
##  4 Primaria        84
##  5 Estudios te     27
##  6 Ninguno         21
##  7 No respondió     6
##  8 Preescolar       5
##  9 Maestria         3
## 10 No sabe          1
## 11 Normal de li     1
#El personal de salud, ¿le explicó sobre la forma de estimular el desarrollo y crecimiento de (NOMBRE) en el hogar?
reto4$m0113[is.na(reto4$m0113)] <- "No respondió"
count(reto4, m0113, sort = TRUE)
## # A tibble: 4 × 2
##   m0113           n
##   <chr>       <int>
## 1 Si            448
## 2 No            385
## 3 No sabe         5
## 4 No responde     3
#¿(NOMBRE) pregunta por personas familiares, que no sean sus padres, cuando no se encuentran presentes?, por ejemplo, “¿Dónde está la abuela?”
reto4$m0316[is.na(reto4$m0316)] <- "No respondió"
count(reto4, m0316, sort = TRUE)
## # A tibble: 3 × 2
##   m0316            n
##   <chr>        <int>
## 1 Si             447
## 2 No respondió   285
## 3 No             109
#Los adultos utilizan diversas maneras de enseñar a comportarse a los niños/as o de responder a un problema de comportamiento. Le voy a leer varias maneras que se utilizan y me gustaría que me dijera si usted o alguien más del hogar ha utilizado alguna de estas maneras con (NOMBRE) en el último mes.
#Le gritaron.
reto4$m0405d[is.na(reto4$m0405d)] <- "No respondió"
count(reto4, m0405d, sort = TRUE)
## # A tibble: 3 × 2
##   m0405d           n
##   <chr>        <int>
## 1 No             485
## 2 Si             202
## 3 No respondió   154
#Le pegaron en el trasero o en otra parte del cuerpo con algún objeto como un cinturón, un cepillo de pelo, una chancla, un palo u otro objeto duro.
reto4$m0405g[is.na(reto4$m0405g)] <- "No respondió"
count(reto4, m0405g, sort = TRUE)
## # A tibble: 4 × 2
##   m0405g           n
##   <chr>        <int>
## 1 No             662
## 2 No respondió   154
## 3 Si              23
## 4 No responde      2
#Le llamaron tonto/a, flojo/a o alguna otra cosa parecida.
reto4$m0405h[is.na(reto4$m0405h)] <- "No respondió"
count(reto4, m0405h, sort = TRUE)
## # A tibble: 4 × 2
##   m0405h           n
##   <chr>        <int>
## 1 No             662
## 2 No respondió   154
## 3 Si              24
## 4 No responde      1
# Me gustaría saber con qué frecuencia se muestra (nombre) muy triste o deprimido/a.
reto4$m0938[is.na(reto4$m0938)] <- "No respondió"
count(reto4, m0938, sort = TRUE)
## # A tibble: 1 × 2
##   m0938            n
##   <chr>        <int>
## 1 No respondió   841
#En comparación con los niños/as de la misma edad, ¿con qué frecuencia (nombre) da patadas, muerde o golpea a otros niños/as o adultos? frecuencia, con más o mucha más frecuencia?
reto4$m0916[is.na(reto4$m0916)] <- "No respondió"
count(reto4, m0916, sort = TRUE)
## # A tibble: 5 × 2
##   m0916            n
##   <chr>        <int>
## 1 NUNCA          348
## 2 No respondió   285
## 3 CON LA MISMA   169
## 4 MaS FRECUEN     29
## 5 MUCHA MaS F     10
#¿Cree usted que para criar o educar correctamente a un niño o una niña, él o ella debe ser castigado/a físicamente?
reto4$m0406[is.na(reto4$m0406)] <- "No respondió"
count(reto4, m0406, sort = TRUE)
## # A tibble: 5 × 2
##   m0406            n
##   <chr>        <int>
## 1 No             627
## 2 No respondió   154
## 3 Si              54
## 4 No responde      3
## 5 No sabe/No o     3

Gráfica de correlación con estudios de la madre

Filtrar resultados

reto4_filtrado <- reto4 %>%
  filter(!(m0102 %in% c("No respondió", "Estudios té", "Normal de li")))

Gráfica de estudios

custom_order <- c("Preescolar", "Primaria", "Secundaria", "Preparatoria", "Licenciatura", "Maestría")
reto4_filtrado$m0102 <- factor(reto4_filtrado$m0102, levels = custom_order)
ggplot(reto4_filtrado, aes(x = m0102, fill = m0102)) +
  geom_bar() +
  geom_text(
    aes(label = ..count..), 
    stat = "count",
    vjust = -0.5,
    size = 3  
  ) +
  theme_light() +                
  scale_fill_brewer(palette = "Set3") + 
  labs(
    x = "Nivel Educativo de la Madre",   
    caption = "Data Source: ENSANUT"                
  ) +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1)  
  )
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Correlación entre estudios de la madre y si le grita a sus hijos

custom_order <- c("Preescolar", "Primaria", "Secundaria", "Preparatoria", "Licenciatura", "Maestría")
reto4_filtrado$m0102 <- factor(reto4_filtrado$m0102, levels = custom_order)
ggplot(reto4_filtrado, aes(x = m0405d, fill = m0102)) +
  geom_bar(position = "dodge", stat = "count") +
  geom_text(
    aes(label = ..count..), 
    stat = "count",
    position = position_dodge(width = 0.9),
    vjust = -0.5, 
    size = 3  
  ) +
  labs(x = "Basado en el Nivel Educativo de la Madre", y = "Count", title = "Le Han Gritado al Niño(a)?") +
  facet_wrap(~ m0405d, scales = "free_x", nrow = 1) +
  theme_light() +
  scale_fill_brewer(palette = "Set3")

### Correlación entre estudios de la madre y si le pega a sus hijos

custom_order <- c("Preescolar", "Primaria", "Secundaria", "Preparatoria", "Licenciatura", "Maestría")
reto4_filtrado$m0102 <- factor(reto4_filtrado$m0102, levels = custom_order)
ggplot(reto4_filtrado, aes(x = m0405g, fill = m0102)) +
  geom_bar(position = "dodge", stat = "count") +
  geom_text(
    aes(label = ..count..), 
    stat = "count",
    position = position_dodge(width = 0.9),
    vjust = -0.5,
    size = 3  
  ) +
  labs(x = "Basado en el Nivel Educativo de la Madre", y = "Count", title = "Le Han Pegado al Niño?") +
  facet_wrap(~ m0405g, scales = "free_x", nrow = 1) +
  theme_light() +
  scale_fill_brewer(palette = "Set3")

Correlación entre estudios de la madre y si le ha llamado tonto o flojo

custom_order <- c("Preescolar", "Primaria", "Secundaria", "Preparatoria", "Licenciatura", "Maestría")
reto4_filtrado$m0102 <- factor(reto4_filtrado$m0102, levels = custom_order)
ggplot(reto4_filtrado, aes(x = m0405h, fill = m0102)) +
  geom_bar(position = "dodge", stat = "count") +
  geom_text(
    aes(label = ..count..), 
    stat = "count",
    position = position_dodge(width = 0.9),
    vjust = -0.5,
    size = 3  
  ) +
  labs(x = "Basado en el Nivel Educativo de la Madre", y = "Count", title = "Le Han Llamado Tonto/Flojo?") +
  facet_wrap(~ m0405h, scales = "free_x", nrow = 1) +
  theme_minimal() +
  scale_fill_brewer(palette = "Set3") +
  theme_light() +
  scale_fill_brewer(palette = "Set3")
## Scale for fill is already present.
## Adding another scale for fill, which will replace the existing scale.

Gráfica sobre castigos

Filtrar resultados

unique_answers <- unique(reto4$m0406)
print(unique_answers)
## [1] "No"           "No respondió" "Si"           "No sabe/No o" "No responde"
unique_answers <- unique(reto4$m0916)
print(unique_answers)
## [1] "No respondió" "NUNCA"        "MaS FRECUEN"  "CON LA MISMA" "MUCHA MaS F"

Porcentajes sobre la consideración de la violencia física

m0916_grouped <- reto4 %>%
  mutate(m0916 = case_when(
    m0916 %in% c("No respondió", "No sabe/No o", "No responde") ~ "No Responde/Sabe",
    TRUE ~ m0916
  ))

summary_table <- table(m0916_grouped$m0406)
df <- as.data.frame(summary_table)
colnames(df) <- c("Response", "Count")
df$Percentage <- (df$Count / sum(df$Count)) * 100
donut_chart <- ggplot(df, aes(x = 1, y = Count, fill = Response)) +
  geom_bar(stat = "identity", width = 1) +
  geom_text(aes(label = paste0(round(Percentage, 1), "%")), 
            position = position_stack(vjust = 0.5),
            size = 3) +
  coord_polar(theta = "y") +
  theme_void() +
  labs(title = "Un niño(a) debe ser castigado/a físicamente?") +
  scale_fill_manual(values = c("Si" = "#00CC33", "No" = "#CC3300", "No Responde/Sabe" = "gray"))
donut_chart

Porcentaje sobre los actos de violencia del niño/a

summary_table2 <- table(reto4$m0916)
df <- as.data.frame(summary_table2)
colnames(df) <- c("Response", "Count")
df$Percentage <- (df$Count / sum(df$Count)) * 100
donut_chart <- ggplot(df, aes(x = 1, y = Count, fill = Response)) +
  geom_bar(stat = "identity", width = 1) +
  geom_text(aes(label = paste0(round(Percentage, 1), "%")), 
            position = position_stack(vjust = 0.5),
            size = 3) +
  coord_polar(theta = "y") +
  theme_void() +
  labs(title = "Con que frecuencia lastima fisicamente a otros?",
       subtitle = "En comparación a otros niños(as) de su edad") +
  scale_fill_brewer(palette = "Set3")
donut_chart

Gráficas sobre que tan informados estan los padres

Ver conocen información sobre distintos temas importantes

reto4$m0112i <- factor(reto4$m0112i, levels = c("Si", "No", "No respondió"))
reto4$m0112m <- factor(reto4$m0112m, levels = c("Si", "No", "No respondió"))
reto4$m0112l <- factor(reto4$m0112l, levels = c("Si", "No", "No respondió"))
reto4$m0112k <- factor(reto4$m0112k, levels = c("Si", "No", "No respondió"))
reto4$m0112h <- factor(reto4$m0112h, levels = c("Si", "No", "No respondió"))

reto4_grafica1 <- reto4 %>%
  gather(variable, respuesta, m0112i, m0112m, m0112l, m0112k, m0112h)

ggplot(reto4_grafica1, aes(x = variable, fill = respuesta)) +
  geom_bar(position = "fill") +
  labs(title = "En alguna consulta o taller, se le dio información acerca de:",
       x = "Variables",
       y = "Porcentaje") +
  scale_fill_manual(values = c("Si" = "#00CC33", "No" = "#CC3300", "No respondió" = "gray")) +
  scale_x_discrete(labels = c(
    m0112i = "Actividad fisica",
    m0112m = "Desnutrición",
    m0112l = "Sobrepeso",
    m0112k = "Educación",
    m0112h = "Nutrición"
  )) +
  theme_minimal()

Otra comparación de si conocen información sobre distintos temas importantes

reto4$m0112b4 <- factor(reto4$m0112b4, levels = c("Si", "No", "No respondió"))
reto4$m0112b5 <- factor(reto4$m0112b5, levels = c("Si", "No", "No respondió"))
reto4$m0113 <- factor(reto4$m0113, levels = c("Si", "No", "No respondió"))

reto4_grafica3 <- reto4 %>%
  gather(variable, respuesta, m0112b4, m0112b5, m0113)

ggplot(reto4_grafica3, aes(x = variable, fill = respuesta)) +
  geom_bar(position = "fill") +
  labs(title = "Le explicaron sobre:",
       x = "Variables",
       y = "Porcentaje") +
  scale_fill_manual(values = c("Si" = "#00CC33", "No" = "#CC3300", "No respondió" = "gray")) +
  scale_x_discrete(labels = c(
    m0112b4 = "Alimentación complementaria",
    m0112b5 = "Suplementos",
    m0113 = "Forma de estimular el desarrollo y crecimiento"
  )) +
  theme_minimal()

Gráfica sobre el hogar

Frecuencias de los días en los cuales se dejo solo al niño/a o acompañado de otro menor

reto4$m0403a[reto4$m0403a == NA] <- "Cero"
reto4$m0403b[reto4$m0403b == NA] <- "Cero"

ggplot(reto4, aes(x = m0403a, fill = m0403a)) +
  geom_bar(position = "dodge", stat = "count") +
  labs(title = "¿Cuántos días en la última semana dejó a (NOMBRE): solo/a durante más de una hora?",
       x = "Respuestas",
       y = "Frecuencia") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  scale_fill_brewer(palette = "Set3") +
  geom_text(aes(label = ..count..), stat = "count", vjust = -0.5, size = 3) +
  theme(plot.title = element_text(size = 10))

# Crear el gráfico de barras para m0403b
ggplot(reto4, aes(x = m0403b, fill = m0403b)) +
  geom_bar(position = "dodge", stat = "count") +
  labs(title = "¿Cuántos días en la última semana dejó a (NOMBRE): al cuidado de otro niño/a menor de 10 años, durante más de una hora?",
       x = "Respuestas",
       y = "Frecuencia") +
  theme_void() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  scale_fill_brewer(palette = "Set3") +
   geom_text(aes(label = ..count..), stat = "count", vjust = -0.5, size = 3)+
  theme(plot.title = element_text(size = 8))