---
format: html
server: shiny
editor_options:
  chunk_output_type: inline
bibliography: references.bib
---

## Análisis de determinantes asociados a Anemia en niños menores de 6 a 35 meses de edad a nivel departamental

::: {style="text-align: justify;"}
El presente análisis se basa en el modelo causal implementado en el **Plan Multisectorial para la Prevención y Reducción de la Anemia Materno Infantil en el Perú (2024-2030)**[@decreto], el cual toma como referencia la literatura internacional y su adaptación al contexto peruano [@zavaleta2017]. Este enfoque se alinea con el **marco conceptual para la acción y aceleración de la reducción de la anemia** propuesto por la Organización Mundial de la Salud, que subraya la complejidad de las múltiples causas relacionadas con la prevalencia de anemia.

Sus causas son multifactoriales e incluyen:

1.  **Deficiencia nutricional**: La insuficiencia en la ingesta de hierro, folato, vitamina B12 y otros micronutrientes esenciales es la causa más común de anemia.

2.  **Pérdida de sangre**: Las infecciones parasitarias como los helmintos, junto con la menstruación en mujeres en edad fértil, contribuyen a la pérdida de sangre y, por lo tanto, a la anemia.

3.  **Absorción deficiente**: Enfermedades como la celiaquía o las infecciones crónicas pueden reducir la capacidad del cuerpo para absorber el hierro de los alimentos.

4.  **Factores socioeconómicos**: La pobreza, el acceso limitado a alimentos ricos en hierro y la falta de educación en salud impactan negativamente en los niveles de hemoglobina.

5.  **Factores ambientales**: La falta de acceso a agua potable y saneamiento adecuado contribuye a las infecciones recurrentes, exacerbando la anemia.

Para abordar esta complejidad, el análisis y uso de los datos disponibles se vuelven fundamentales para aumentar la comprensión de los factores de riesgo específicos a nivel desagregado. Estos datos, complementados con el conocimiento local de las prácticas y tradiciones, pueden influir significativamente en la eficacia de las medidas, planes y estrategias para la reducción de la anemia [@accelera].Los datos obtenidos mediante la Encuesta Demográfica y de Salud Familiar (ENDES) permite recolectar información con representatividad a nivel departamental y anual, lo cuál permite describir el comportamiento de las múltiples causas asociadas a la anemia en niños menores de 6 a 35 meses. También se muestra la situación actual de indicadores de anemia, nutricionales y de desempeño de acuerdo a la información de HIS-MINSA 2024.
:::

```{r setup, include=FALSE, warning=FALSE}
library(dplyr)
library(survey)
library(gtsummary)
library(shiny)
library(tidyverse)
library(modelsummary)
library(lubridate)
library(rio)
library(flextable)
library(gt)
library(gtExtras)
library(bslib)
library(echarts4r)
library(quarto)
library(leaflet)
library(geodata)
library(sf)
library(janitor)
library(reactable)
library(plotly)
library(svglite)
source("R/funcioncolor.R")

# Carga de datos
data <- import("data/anemia_2023v1.rds")
estratos_un_conglomerado <- data %>%
  group_by(estrato) %>%
  summarise(num_conglomerados = n_distinct(conglomerado)) %>%
  filter(num_conglomerados == 1)

#estratos con un solo conglomerado 
estratos_a_excluir <- c(5, 16, 38, 57, 72, 81, 101, 112, 133, 154, 164, 183, 184, 194, 195, 206, 247,52)

x23 <- svydesign(id = ~conglomerado, weights = ~ponde, strata = ~estrato,na.rm = TRUE, data = data,
                 survey.lonely.psu = "adjust")

# Lista de departamentos
departamentos <- c(
  "Amazonas", "Ancash", "Apurimac", "Arequipa", "Ayacucho", "Cajamarca", "Callao",
  "Cusco", "Huancavelica", "Huanuco", "Ica", "Junin", "La Libertad", "Lambayeque",
  "Lima", "Loreto", "Madre de Dios", "Moquegua", "Pasco", "Piura", "Puno",
  "San Martin", "Tacna", "Tumbes", "Ucayali")

#Datos de tendencia
tendencia <- import("data/anemia_endes_dep.xlsx") 

#Datos de hisminsa
#Por departamento
indica_dep24 <- import("data/clean/indicadoresdep_hisminsa.xlsx") %>%
  mutate(departamento = str_to_title(departamento),
ano = 2024) %>%
select(-`...6`)

bases_dep <- import("data/clean/bases_dep.xlsx") %>%
filter(ano != 2024) %>%
  mutate(departamento = str_to_title(departamento))

tendenciax <- indica_dep24 %>%
    rbind(bases_dep) %>%
  filter(ano != 2024) %>%
  mutate(departamento = str_to_title(departamento)) %>% 
  arrange(ano) %>%
      mutate(departamento = case_when(departamento == "Madre De Dios" ~ "Madre de Dios",
                                      T ~ departamento
                                      )) %>%
     group_by(nombre_indicador,departamento) %>%
     summarize(
       tendencia1 = list(valor),
       .groups = "drop"
     )

indicadores1 <- indica_dep24 %>%
    rbind(bases_dep) %>%
  filter(ano != 2024) %>%
  mutate(departamento = str_to_title(departamento)) %>% 
      mutate(departamento = case_when(departamento == "Madre De Dios" ~ "Madre de Dios",
                                      T ~ departamento
                                      )) %>%
  pivot_wider(
    names_from = ano,          
    values_from = valor        
  ) %>% 
    select(nombre_indicador,departamento, `2019`, `2020`, `2021`, `2022`, `2023`) %>%
    mutate(
      across(c(`2019`, `2020`, `2021`, `2022`, `2023`), ~ round(.x, 1)), # Redondear los valores
      across(c(`2019`, `2020`, `2021`, `2022`, `2023`), ~ as.character(.x)), # Convertir a carácter
      across(c(`2019`, `2020`, `2021`, `2022`, `2023`), ~ replace_na(.x, "-")) # Reemplazar NA por "-"
    ) %>%
  left_join(tendenciax)

indicadores <-  indica_dep24 %>%
    rbind(bases_dep) %>%
  filter(ano != 2024) %>%
  mutate(departamento = str_to_title(departamento)) %>% 
      mutate(departamento = case_when(departamento == "Madre De Dios" ~ "Madre de Dios",
                                      T ~ departamento
                                      ))

#Por distrito
indicadores_distritales24 <- import("data/clean/indicadoresdis_hisminsa.xlsx") %>%
  mutate(departamento = str_to_sentence(departamento),
ano = 2024)

bases_dis <- import("data/clean/bases_dis.xlsx") %>%
filter(ano != 2024)

indicadores_distritales <- indicadores_distritales24 %>%
    rbind(bases_dis) %>%
  mutate(departamento = str_to_title(departamento))

indicador <- vector_indicadores <- c(
  "Niñas y niños de 4 meses que inician suplemento de hierro (%)",
  "Niñas y niños de 6 a 8 meses con tamizaje de anemia (%)",
  "Mujeres Gestantes atendidas en Ipress del primer nivel de atencion con Diagnostico de anemia durante en embarazo e inician tratamiento (%)",
  "Porcentaje de Niños o niñas de 6 a 35 meses con Anemia",
  "Porcentaje de Gestantes con Anemia",
  "Niñas y niños de 12 a 18 meses, con diagnóstico de anemia que se han recuperado (%)",
  "Niñas y niños menores de 12 meses, que reciben un paquete integrado de servicios: CRED, vacunas, dosaje de hemoglobina para descarte de anemia y suplementación con hierro (%)",
  "Porcentaje de Niños o niñas de menores de 36 meses con Desnutricion Cronica",
  "Porcentaje de Niños o niñas de menores de 36 meses con Desnutricion Aguda",
  "Porcentaje de Niños o niñas de menores de 36 meses con Sobrepeso",
  "Porcentaje de Niños o niñas de menores de 36 meses con Obesidad"
)

peru_distritos <- st_read("data/shape_2022/CDC_Distritos_2022.shp")

#peru_distritos <- gadm("PER", level = 3, path = tempdir())
```

```{r}
#page-layout: custom
selectInput("departamentos", "Seleccionar el departamento",
            choices = departamentos)
```

<hr style="border:1px solid #cccccc;">

### Indicadores de anemia priorizados - HIS MINSA

```{r}
#page-layout: custom
bslib::page_navbar( 
  nav_panel("Tendencia ",                
            gt_output("tablaindicadores"),
            p("Fuente: HISMINSA", style = "font-size: 12px; color: #555; text-align: center;")
      ), 
nav_panel("Distribución espacial",
            selectInput("indicador", "Seleccionar el indicador de interés",
                        choices = indicador),
            selectInput("ano","Seleccionar el año",
                        choices = NULL),
            leafletOutput("mapa")
      )
      )
```

```{r}
#| context: server
output$tablaindicadores <- render_gt({
  req(input$departamentos)  
  
     indicadores_filtrado <- indicadores1  %>%
    filter(departamento == input$departamentos)  %>% 
    select(nombre_indicador, `2019`, `2020`, `2021`, `2022`, `2023`,tendencia1)
  
    # Crear la tabla con gt
 tablaindicadores <- indicadores_filtrado %>%
    gt() %>%
    gt_plt_sparkline(tendencia1) %>%
    cols_label(
      nombre_indicador = "Indicador",
      `2019` = "2019",
      `2020` = "2020",
      `2021` = "2021",
      `2022` = "2022",
      `2023` = "2023",
      tendencia1 = "Tendencia"
    )  %>%
    tab_options(
      table.width = "100%",
      data_row.padding = px(5)
    ) %>%
    fmt_number(
      columns = c(`2019`, `2020`, `2021`, `2022`, `2023`,tendencia1),
      decimals = 1
    ) %>%
    tab_style(
      style = cell_text(weight = "bold"),
      locations = cells_column_labels(vars(nombre_indicador, `2019`, `2020`, `2021`, `2022`, `2023`,tendencia1))) %>%
    tab_style(
      style = cell_text(align = "left"),
      locations = cells_body(vars(nombre_indicador))
    ) %>%
    tab_style(
      style = cell_text(align = "center"),
      locations = cells_body(c(`2019`, `2020`, `2021`, `2022`, `2023`,tendencia1))
    ) %>%
    tab_style(
      style = list(
        cell_fill(color = "#FFFFFF")  # Fondo blanco para todas las celdas del cuerpo
      ),
      locations = cells_body()
    ) %>%
    tab_style(
      style = list(
        cell_fill(color = "#D3E6F5"),  # Color de fondo solo para encabezado
        cell_text(weight = "bold", color = "black")
      ),
      locations = cells_column_labels()
    ) %>%
    tab_style(
      style = list(cell_fill(color = "#F1F1F1")),
      locations = cells_row_groups() 
    ) %>% 
    gt_theme_538()
})
```
  
```{r}
#| context: server
observeEvent(input$indicador, {
    # Filtrar los indicadores disponibles para el tipo seleccionado
    indicadores_filtrados <- indicadores %>%
      filter(nombre_indicador == input$indicador) %>%
      arrange(ano) %>%
      pull(ano) %>%
      unique()
    
    # Actualizar las opciones del selector de indicador
    updateSelectInput(session, "ano", choices = indicadores_filtrados)
  })

 
output$mapa <- renderLeaflet({
    req(input$departamentos, input$indicador, input$ano)
    
    # Cargar los datos base y filtrar el shapefile para el departamento seleccionado
    peru_distritos <- peru_distritos %>%
      mutate(departamento = str_to_sentence(departamen)) %>%
      janitor::clean_names() %>%
      mutate(departamento = case_when(departamento == "San martin" ~ "San Martin",
                                      departamento == "La libertad" ~ "La Libertad",
                                      departamento == "Madre de dios" ~ "Madre de Dios",
                                      T ~ departamento
                                      )) 
    
    # Filtrar el departamento seleccionado del shapefile
    distrito_seleccionado <- peru_distritos[peru_distritos$departamento == input$departamentos, ]
    
    # Calcular el centroide del departamento seleccionado
    centroide <- st_centroid(st_union(distrito_seleccionado))
    lat_centro <- st_coordinates(centroide)[2]
    lng_centro <- st_coordinates(centroide)[1]
    
    # Unir datos de indicadores
    mapa_filtrado <- indicadores_distritales %>%
      mutate(departamento = case_when(departamento == "San Martin" ~ "San Martin",
                                      departamento == "La Libertad" ~ "La Libertad",
                                      departamento == "Madre De Dios" ~ "Madre de Dios",
                                      T ~ departamento),
             valor = round(valor,1)
              ) %>%
      filter(departamento == input$departamentos & nombre_indicador == input$indicador)
    
    mapa_geografico <- distrito_seleccionado %>%
      left_join(mapa_filtrado, by = "ubigeo") 
    
  paleta <- colorNumeric("YlOrRd", domain = mapa_geografico$valor)
  
   palsalud <- pal_generator(
      x = mapa_geografico,
      value = "valor",
      palette = "YlOrRd",
      na.color = "#FFFFFF",
      reverse = FALSE
    )
  
  
    # Crear el mapa centrado en el departamento seleccionado
   mapa <- leaflet() %>%
      setView(lng = lng_centro, lat = lat_centro, zoom = 7) %>%
      addProviderTiles("Esri.WorldTopoMap", group = "Light") %>%
      addScaleBar(position = "bottomleft", options = scaleBarOptions(maxWidth = 150, imperial = FALSE)) %>%
      addPolygons(
        data = mapa_geografico,
        fillColor = ~colorNumeric("YlOrRd", mapa_geografico$valor)(valor),
        weight = 1,
        color = "white",
        fillOpacity = 0.7,
        label = ~paste(distrito, ":", valor)
      ) %>%
      addLegend(
        position = "bottomleft",
        pal = palsalud,
        values = mapa_geografico$valor,
        opacity = 0.7
      )
})  
```

<hr style="border:1px solid #cccccc;">

### Prevalencia anemia en el departamento - ENDES

```{r}
mainPanel(
       echarts4rOutput("tendencia"),
  p("Fuente: Encuesta Demográfica y de Salud - ENDES 2023", style = "font-size: 12px; color: #555; text-align: center;")
)
```

```{r}
#| context: server
output$tendencia <- renderEcharts4r({
  
  req(input$departamentos)  # Asegurarse de que input$departamento tiene un valor

      # Filtrar el departamento seleccionado de manera reactiva
    tendencia_filtrada <- tendencia %>% 
      filter(departamento == input$departamentos)  %>%
  mutate(anemia = round(anemia,1))
    
    # Crear el gráfico con echarts4r
    tendencia_filtrada %>%
  e_charts(ano) %>%
  e_line(anemia) %>% 
  e_tooltip(
    trigger = "axis",
    formatter = htmlwidgets::JS(htmlwidgets::JS("
      function(params) {
        return '<b>Anemia:</b> ' + params[0].value + '%';
      }
    ")
    )
  ) %>% 
  e_x_axis(
    name = "Año",  min = 2018, max = 2023, interval = 1,
    axisLabel = list(
      formatter = htmlwidgets::JS("
        function(value) {
          return value.toFixed(0);
        }
      ")  # Formatear los valores para que no tengan decimales ni comas
    )
  ) %>%
 # e_x_axis(name = "Año",, axisLabel = list(formatter = "{value}")) %>%  
  e_y_axis(name = "Prevalencia de Anemia", position = "left",  # Asegurar que esté a la izquierda
           nameLocation = "middle",  # Centrar el nombre
           nameRotate = 90,
            nameGap = 35) %>% 
   e_theme("westeros") %>%
  e_legend(show = FALSE) 
})
```

<hr style="border:1px solid #cccccc;">

### Desigualdades sociales en salud

```{r}
dimensiones_inequidad <- c(
  "Índice de riqueza",
  "Lugar de residencia",
  "Suministro de agua",
  "Etnicidad - madre",
  "Nivel educativo - madre"
)  
```

```{r}
#page-layout: custom
mainPanel(
  selectInput(
    "dimension", 
    "Seleccionar la dimensión de inequidad",
    choices = dimensiones_inequidad  # Usa el vector definido
  ),
  plotly::plotlyOutput("inequidad"),
  p("Fuente: Encuesta Demográfica y de Salud - ENDES 2023", style = "font-size: 12px; color: #555; text-align: center;")
)
```

```{r}
#| context: server
x23_filtered <- reactive({
    req(input$departamentos) 
    subset(x23, !estrato %in% estratos_a_excluir & HW1 >= 6 & HW1 <= 35 & 
           !is.na(anemia_nino_ahora) & departamento == input$departamentos)
  })

tabla_ineq <- reactive({
  req(input$departamentos)  
   x23_filtered() %>%
    tbl_svysummary(
      by = anemia_nino,
      include = c(riqueza, residencia, fuente_agua, etnicidad, nivel_educativo),
      missing = "no",
      statistic = all_categorical() ~ "{n_unweighted} ({p}%)",
      label = list(
        riqueza  ~ "Índice de riqueza",
        residencia  ~ "Lugar de residencia",
        fuente_agua  ~ "Suministro de agua",
        etnicidad ~ "Etnicidad - madre",
        nivel_educativo ~ "Nivel educativo - madre"
      )
    ) %>%
    modify_header(label ~ "Variable",
                  stat_2 ~ "Anemia") %>%
    as_tibble() %>%
    select(`Variable`, `Anemia`) %>%
    mutate(
      `Anemia` = as.numeric(str_extract(`Anemia`, "(?<=\\().*(?=%\\))")) 
    ) %>%
    mutate(
      Categoria = case_when(
        Variable %in% c("Muy rico - rico", "Medio", "Muy pobre - pobre") ~ Variable,
        Variable %in% c("Urbano", "Rural") ~ Variable,
        Variable %in% c("Red pública", "Sin acceso a red pública") ~ Variable,
        Variable %in% c("No etnia (mestizo)", "Etnia") ~ Variable,
        Variable %in% c("Superior", "Secundaria", "Sin educación - primaria") ~ Variable,
        TRUE ~ NA_character_  # Dejar NA para las filas que contienen los nombres de las variables
      ),
      Variable = case_when(
        Variable %in% c("Muy rico - rico", "Medio", "Muy pobre - pobre") ~ "Índice de riqueza",
        Variable %in% c("Urbano", "Rural") ~ "Lugar de residencia",
        Variable %in% c("Red pública", "Sin acceso a red pública") ~ "Suministro de agua",
        Variable %in% c("No etnia (mestizo)", "Etnia") ~ "Etnicidad - madre",
        Variable %in% c("Superior", "Secundaria", "Sin educación - primaria") ~ "Nivel educativo - madre",
        TRUE ~ Variable  # Mantener las filas que ya contienen el nombre de la variable
      )
    ) %>%
    filter(!is.na(Categoria)) %>%  # Eliminar filas que no tienen categorías asignadas
    select(Variable, Categoria, Anemia) 
})
  
datos_ineq <- reactive({
  req(input$dimension)  # Asegurarse de que se seleccionó una dimensión
  
  # Filtrar los datos según la dimensión seleccionada
  datos <- tabla_ineq() %>%
    filter(Variable == input$dimension)
  
  datos <- datos %>%
      mutate(
        Categoria = case_when(
          input$dimension == "Nivel educativo - madre" ~ fct_relevel(Categoria, "Sin educación - primaria", "Secundaria", "Superior"),
          input$dimension == "Índice de riqueza" ~ fct_relevel(Categoria, "Muy pobre - pobre", "Medio", "Muy rico - rico"),
          input$dimension == "Lugar de residencia" ~ fct_relevel(Categoria, "Rural", "Urbano"),
          input$dimension == "Suministro de agua" ~ fct_relevel(Categoria, "Sin acceso a red pública", "Red pública"),
          input$dimension == "Etnicidad - madre" ~ fct_relevel(Categoria, "Etnia", "No etnia (mestizo)")
        )
      )
  }
)
```

```{r}
#| context: server
output$inequidad <- renderPlotly({
  req(input$departamentos,input$dimension)  # Asegurarse de que se seleccionó una dimensión

  # Definir paletas de colores específicas para cada dimensión
  paletas <- list(
    "Índice de riqueza" = c("#C5E1A5", "#9CCC65", "#33691E"),
    "Lugar de residencia" = c("#BCAAA4", "#6D4C41"),
    "Suministro de agua" = c("#B2DFDB", "#4DB6AC"),
    "Etnicidad - madre" = c("#D1C4E9", "#7E57C2"),
    "Nivel educativo - madre" = c("#FFEE58", "#FBC02D", "#F57F17")
  )

  # Obtener la paleta de colores para la dimensión seleccionada
  colores <- paletas[[input$dimension]]
   colores_transparentes <- alpha(colores, 0.6)

  # Crear gráfico base con ggplot2
  p <- ggplot(datos_ineq(), aes(x = Anemia, y = 1, color = Categoria)) +
    geom_line(aes(group = 1), color = "grey80", size = 0.5) +  # Línea que une los círculos
    geom_point(size = 5) +  # Puntos de dispersión
    scale_color_manual(values = colores_transparentes[1:length(unique(datos_ineq()$Categoria))]) +  
    labs(
      x = "Prevalencia de anemia (%)",
      y = input$dimension,  # Mostrar el nombre de la variable en el eje Y
      color = "Categorías"
    ) +
    theme_minimal() +
    theme(
      plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
      plot.subtitle = element_text(hjust = 0.5, size = 12),
      legend.position = "bottom",
      legend.title = element_blank(),
      panel.border = element_rect(color = "grey80", fill = NA, size = 0.5),  # Borde más fino y gris claro
     axis.text.y = element_blank(),  # Eliminar números en el eje Y
    axis.ticks.y = element_blank(),  # Eliminar ticks en el eje Y
    axis.title.y = element_text(size = 12, color = "grey30") # Mantener limpio el eje Y
    ) +
    scale_x_continuous(limits = c(0, 100))  # Ajustar el rango del eje X de 0 a 100

  # Convertir ggplot2 a plotly
  ggplotly(p, tooltip = c("x", "color")) %>%
    layout(
      yaxis = list(title = input$dimension),  # Título del eje Y
      xaxis = list(title = "Prevalencia de anemia (%)", tickformat = ".0%"),  # Eje X con formato de porcentaje
      hoverlabel = list(font = list(size = 12)),  # Ajustar tamaño del texto del tooltip
      hovertemplate = paste("<b>%{x}%</b><br>Categoria: %{color}<extra></extra>")  # Tooltip personalizado
    )
})  
```

<hr style="border:1px solid #cccccc;">

### Factores asociados a la anemia en niños de 6 a 35 meses

```{r}
#page-layout: custom
bslib::page_navbar( 
  nav_panel("Descriptivo",
                h3("Tabla 1. Características de la muestra"),
               gt_output("table1")
      ), nav_panel("Bivariado",
                h3("Tabla 2. Características asociadas a la anemia en niños de 6 a 35 meses en el análisis bivariado"),
               gt_output("table2")
      ),
      nav_panel("Regresión multivariada",
                h3("Tabla 3. Asociación entre la anemia en niños entre 6 a 35 meses, enfoque epidemiológico"),
               gt_output("table3"))
      )
```

```{r}
#| context: server
x23_filtered <- reactive({
    req(input$departamentos) # Ensure a department is selected
    # Filter your data here
    subset(x23, !estrato %in% estratos_a_excluir & HW1 >= 6 & HW1 <= 35 & 
           !is.na(anemia_nino_ahora) & departamento == input$departamentos)
  })

output$table1 <- render_gt({
    tabla1 <- x23_filtered() %>% # Use the reactive expression here
      tbl_svysummary(
        include = c(riqueza, residencia, fuente_agua, saneamiento, 
                    etnicidad, edad_madre, nivel_educativo, anemia_mujer, 
                    dxn_anemia_gestacion, parto_institucional, 
                    vitamina_postparto, hierro_embarazo, antiparasitario, 
                    sexo_nino, edad_nino, desnutricion_cro, 
                    hierro_7d_tomo, anemia_nino),
        missing = "no",
        statistic = all_categorical() ~ "{n_unweighted} ({p}%)",
        label = list(
          riqueza ~ "Índice de riqueza",
          residencia ~ "Lugar de residencia", 
          fuente_agua ~ "Suministro de agua", 
          saneamiento ~ "Instalación sanitaria",
          etnicidad ~ "Etnicidad - madre", 
          edad_madre ~ "Edad - madre", 
          nivel_educativo ~ "Nivel educativo - madre", 
          anemia_mujer ~ "Anemia actual - madre", 
          dxn_anemia_gestacion ~ "Anemia durante gestación*",
          parto_institucional ~ "Parto institucional", 
          hierro_embarazo ~ "Suplemento de hierro en embarazo*", 
          vitamina_postparto ~ "Vitamina A en los primeros 2 meses después del parto",
          antiparasitario ~ "Antiparasitario en embarazo*", 
          sexo_nino ~ "Sexo del niño", 
          edad_nino ~ "Edad del niño", 
          desnutricion_cro ~ "Desnutrición crónica", 
          hierro_7d_tomo ~ "Suplemento de hierro (últimos 7 días)",
          anemia_nino ~ "Anemia en el niño")) %>%  
      bold_labels() %>%
      modify_header(label ~ "**Variable**",
                    update = stat_0 ~ "**N = {N_unweighted}**") %>%
      as_gt() %>%
      tab_row_group(label = "Características del hogar", rows = 1:13) %>%
      tab_row_group(label = "Características de la madre", rows = 14:27) %>%
      tab_row_group(label = "Características de gestación/posparto del niño índice", rows = 28:42) %>%
      tab_row_group(label = "Características del niño", rows = 43:58) %>%
  tab_style(style = list(
      cell_fill(color = "#DDEBF7"),  # Color de fondo para encabezados de grupos
      cell_text(weight = "bold")      # Texto en negrita para encabezados
    ),locations = cells_row_groups()) %>% 
      gt_theme_538() %>%
      tab_options(data_row.padding = px(2), 
                  heading.padding = px(3), 
                  column_labels.padding = px(3)) %>%
      cols_width(everything() ~ px(200)) %>%
      gt::tab_style_body(style = cell_fill(color = "white"),
                         fn = function(x) !(is.na(x)),
                         targets = "row")
  })

 grupos_variables <- list(
  "Características del hogar" = c("riqueza", "residencia", "fuente_agua", "saneamiento"),
  "Características de la madre" = c("etnicidad", "edad_madre", "nivel_educativo", "anemia_mujer"),
  "Características de gestación/posparto del niño índice" = c("dxn_anemia_gestacion", "parto_institucional", "hierro_embarazo", "vitamina_postparto"),
  "Características del niño" = c("sexo_nino", "edad_nino", "desnutricion_cro", "hierro_7d_tomo")
)

output$table2 <-  render_gt({
  tabla2 <- x23_filtered() %>%
  tbl_svysummary(
    by = anemia_nino,
    include = c(riqueza , residencia , fuente_agua , saneamiento , 
                  etnicidad , edad_madre , nivel_educativo , anemia_mujer , dxn_anemia_gestacion ,parto_institucional , vitamina_postparto , hierro_embarazo , antiparasitario ,sexo_nino , edad_nino , desnutricion_cro , hierro_7d_tomo),
    missing = "no",
    statistic = all_categorical() ~"{n_unweighted} ({p}%)",
    label = list(riqueza  ~ "Índice de riqueza",
                      residencia  ~ "Lugar de residencia", 
                      fuente_agua  ~ "Suministro de agua", 
                      saneamiento ~ "Instalación sanitaria",
                      etnicidad ~ "Etnicidad - madre", 
                      edad_madre ~ "Edad - madre", 
                      nivel_educativo ~ "Nivel educativo - madre", 
                      anemia_mujer ~ "Anemia actual - madre", 
                      dxn_anemia_gestacion ~ "Anemia durante gestación*",
                      parto_institucional ~ "Parto institucional", 
                      hierro_embarazo ~ "Suplemento de hierro en embarazo*", 
                      vitamina_postparto ~ "Vitamina A en los primeros 2 meses después del parto",
                      antiparasitario ~ "Antiparasitario en embarazo*", 
                      sexo_nino ~ "Sexo del niño", 
                      edad_nino ~ "Edad del niño", 
                      desnutricion_cro ~ "Desnutrición crónica", 
                      hierro_7d_tomo ~ "Suplemento de hierro (últimos 7 días)")) %>%
  add_p(pvalue_fun = ~ style_pvalue(.x, digits = 3)) %>%
      modify_header(label ~ "**Variable**",
                    update = c(stat_1 ~ "**Sin anemia = {n_unweighted}**",
                               stat_2 ~ "**Anemia = {n_unweighted}**")) %>%
  modify_footnote(
    all_stat_cols() ~ "Median (IQR) or Frequency (%)"
  ) %>%
  bold_labels() %>%
  bold_p(t = 0.05) %>%
  as_gt() %>%
  tab_row_group(label = "Características del hogar",
    rows = 1:13
  ) %>%
  tab_row_group(label = "Características de la madre",
    rows = 14:27
  ) %>%
  tab_row_group(label = "Características de gestación/posparto del niño índice",
    rows = 28:42
  ) %>%
  tab_row_group(label = "Características del niño",
    rows = 43:55
  ) %>%
  tab_style(style = list(
      cell_fill(color = "#DDEBF7"),  # Color de fondo para encabezados de grupos
      cell_text(weight = "bold")      # Texto en negrita para encabezados
    ),locations = cells_row_groups())  %>% 
  gt_theme_538() %>%
  tab_options(          # Reducir tamaño de la fuente
    data_row.padding = px(1),           # Reducir padding entre filas
    heading.padding = px(2),            # Reducir padding entre títulos
    column_labels.padding = px(3)       # Reducir padding entre etiquetas de columna
  ) %>% cols_width(
    everything() ~ px(150)              # Ajustar el ancho de todas las columnas al texto (puedes ajustar el valor px)
  )  
})

# Crear una lista de departamentos que no incluyen etnicidad
# Listas de departamentos que excluyen ciertas variables
departamentos_sin_etnicidad <- c("Tumbes", "Tacna", "Ica")
departamentos_et_hie <- c("Piura", "Cajamarca")
departamentos_completo <- c("Amazonas", "Arequipa", "Huancavelica", "Huanuco", "Junin", "La Libertad", "Lambayeque","Lima", "Loreto", "Madre de Dios", "Moquegua", "Pasco", "Puno",
  "San Martin", "Ucayali")

# Renderizar la tabla 3 (Regresión multivariada) con verificación condicional
output$table3 <- render_gt({
  
  req(input$departamentos)
  if (input$departamentos %in% departamentos_completo) {

    variables <- c("riqueza","residencia", "fuente_agua", "saneamiento","etnicidad",
                 "edad_madre", "nivel_educativo", "anemia_mujer", 
                 "dxn_anemia_gestacion", "parto_institucional", "hierro_embarazo","vitamina_postparto", 
                 "antiparasitario", "sexo_nino", "edad_nino", 
                 "desnutricion_cro", "hierro_7d_tomo")
    
    # Ajustar el modelo de regresión con las variables finales
  model <- svyglm(as.formula(paste("anemia_nino_ahora ~", paste(variables, collapse = " + "))),
                  design = x23_filtered(), family = poisson())
     # Crear las etiquetas dinámicas
  label_list <- list(riqueza  ~ "Índice de riqueza",
                      residencia  ~ "Lugar de residencia", 
                      fuente_agua  ~ "Suministro de agua", 
                      saneamiento ~ "Instalación sanitaria",
                      etnicidad ~ "Etnicidad - madre", 
                      edad_madre ~ "Edad - madre", 
                      nivel_educativo ~ "Nivel educativo - madre", 
                      anemia_mujer ~ "Anemia actual - madre", 
                      dxn_anemia_gestacion ~ "Anemia durante gestación*",
                      parto_institucional ~ "Parto institucional", 
                      hierro_embarazo ~ "Suplemento de hierro en embarazo*", 
                      vitamina_postparto ~ "Vitamina A en los primeros 2 meses después del parto",
                      antiparasitario ~ "Antiparasitario en embarazo*", 
                      sexo_nino ~ "Sexo del niño", 
                      edad_nino ~ "Edad del niño", 
                      desnutricion_cro ~ "Desnutrición crónica", 
                      hierro_7d_tomo ~ "Suplemento de hierro (últimos 7 días)")
  
  tabla3 <- model %>%
    tbl_regression(
      exponentiate = TRUE,
      pvalue_fun = ~ style_pvalue(.x, digits = 3),
      label = label_list  # Etiquetas dinámicas
    ) %>%
      modify_header(label ~ "**Variable**") %>%
  bold_labels() %>%
  bold_p(t = 0.05) %>%
  as_gt()  %>%
  tab_row_group(label = "Características del hogar",
    rows = 1:13
  ) %>%
  tab_row_group(label = "Características de la madre",
    rows = 14:27
  ) %>%
  tab_row_group(label = "Características de gestación/posparto del niño índice",
    rows = 28:42
  ) %>%
  tab_row_group(label = "Características del niño",
    rows = 43:55
  ) %>%
  tab_style(style = list(
      cell_fill(color = "#DDEBF7"),  
      cell_text(weight = "bold")      
    ),locations = cells_row_groups())  %>% 
  gt_theme_538() %>%
  tab_options(          
    data_row.padding = px(1),           
    heading.padding = px(2),            
    column_labels.padding = px(3)       
  ) %>% cols_width(
    everything() ~ px(200)              
  ) 
  } else if(input$departamentos %in% departamentos_sin_etnicidad) {
    
    variables <- c("riqueza","residencia", "fuente_agua", "saneamiento",
                 "edad_madre", "nivel_educativo", "anemia_mujer", 
                 "dxn_anemia_gestacion", "parto_institucional", "hierro_embarazo","vitamina_postparto", 
                 "antiparasitario", "sexo_nino", "edad_nino", 
                 "desnutricion_cro", "hierro_7d_tomo")
    
    # Ajustar el modelo de regresión con las variables finales
  model <- svyglm(as.formula(paste("anemia_nino_ahora ~", paste(variables, collapse = " + "))),
                  design = x23_filtered(), family = poisson())
     # Crear las etiquetas dinámicas
label_list <- list(riqueza  ~ "Índice de riqueza",
                      residencia  ~ "Lugar de residencia", 
                      fuente_agua  ~ "Suministro de agua", 
                      saneamiento ~ "Instalación sanitaria",
                      edad_madre ~ "Edad - madre", 
                      nivel_educativo ~ "Nivel educativo - madre", 
                      anemia_mujer ~ "Anemia actual - madre", 
                      dxn_anemia_gestacion ~ "Anemia durante gestación*",
                      parto_institucional ~ "Parto institucional", 
                      hierro_embarazo ~ "Suplemento de hierro en embarazo*", 
                      vitamina_postparto ~ "Vitamina A en los primeros 2 meses después del parto",
                      antiparasitario ~ "Antiparasitario en embarazo*", 
                      sexo_nino ~ "Sexo del niño", 
                      edad_nino ~ "Edad del niño", 
                      desnutricion_cro ~ "Desnutrición crónica", 
                      hierro_7d_tomo ~ "Suplemento de hierro (últimos 7 días)")
  
  tabla3 <- model %>%
    tbl_regression(
      exponentiate = TRUE,
      pvalue_fun = ~ style_pvalue(.x, digits = 3),
      label = label_list  # Etiquetas dinámicas
    ) %>%
      modify_header(label ~ "**Variable**") %>%
  bold_labels() %>%
  bold_p(t = 0.05) %>%
  as_gt()  %>%
  tab_row_group(label = "Características del hogar",
    rows = 1:13
  ) %>%
  tab_row_group(label = "Características de la madre",
    rows = 14:24
  ) %>%
  tab_row_group(label = "Características de gestación/posparto del niño índice",
    rows = 25:39
  ) %>%
  tab_row_group(label = "Características del niño",
    rows = 40:52
  ) %>%
  tab_style(style = list(
      cell_fill(color = "#DDEBF7"),  # Color de fondo para encabezados de grupos
      cell_text(weight = "bold")      # Texto en negrita para encabezados
    ),locations = cells_row_groups())  %>% 
  gt_theme_538() %>%
  tab_options(          # Reducir tamaño de la fuente
    data_row.padding = px(1),           # Reducir padding entre filas
    heading.padding = px(2),            # Reducir padding entre títulos
    column_labels.padding = px(3)       # Reducir padding entre etiquetas de columna
  ) %>% cols_width(
    everything() ~ px(200)              # Ajustar el ancho de todas las columnas al texto (puedes ajustar el valor px)
  ) 
  } else if(input$departamentos == "Apurimac") {
  
  variables <- c("riqueza","residencia", "fuente_agua", "saneamiento","etnicidad",
                 "edad_madre", "nivel_educativo", "anemia_mujer", 
                 "dxn_anemia_gestacion", "vitamina_postparto", 
                 "antiparasitario", "sexo_nino", "edad_nino", 
                 "desnutricion_cro", "hierro_7d_tomo")
    
    # Ajustar el modelo de regresión con las variables finales
  model <- svyglm(as.formula(paste("anemia_nino_ahora ~", paste(variables, collapse = " + "))),
                  design = x23_filtered(), family = poisson())
     # Crear las etiquetas dinámicas
  label_list <- list(riqueza  ~ "Índice de riqueza",
                      residencia  ~ "Lugar de residencia", 
                      fuente_agua  ~ "Suministro de agua", 
                      saneamiento ~ "Instalación sanitaria",
                      etnicidad ~ "Etnicidad - madre", 
                      edad_madre ~ "Edad - madre", 
                      nivel_educativo ~ "Nivel educativo - madre", 
                      anemia_mujer ~ "Anemia actual - madre", 
                      dxn_anemia_gestacion ~ "Anemia durante gestación*", 
                      vitamina_postparto ~ "Vitamina A en los primeros 2 meses después del parto",
                      antiparasitario ~ "Antiparasitario en embarazo*", 
                      sexo_nino ~ "Sexo del niño", 
                      edad_nino ~ "Edad del niño", 
                      desnutricion_cro ~ "Desnutrición crónica", 
                      hierro_7d_tomo ~ "Suplemento de hierro (últimos 7 días)")
  
  tabla3 <- model %>%
    tbl_regression(
      exponentiate = TRUE,
      pvalue_fun = ~ style_pvalue(.x, digits = 3),
      label = label_list  # Etiquetas dinámicas
    ) %>%
      modify_header(label ~ "**Variable**") %>%
  bold_labels() %>%
  bold_p(t = 0.05) %>%
  as_gt()  %>%
  tab_row_group(label = "Características del hogar",
    rows = 1:13
  ) %>%
  tab_row_group(label = "Características de la madre",
    rows = 14:27
  ) %>%
  tab_row_group(label = "Características de gestación/posparto del niño índice",
    rows = 28:36
  ) %>%
  tab_row_group(label = "Características del niño",
    rows = 37:49
  ) %>%
  tab_style(style = list(
      cell_fill(color = "#DDEBF7"),  # Color de fondo para encabezados de grupos
      cell_text(weight = "bold")      # Texto en negrita para encabezados
    ),locations = cells_row_groups())  %>% 
  gt_theme_538() %>%
  tab_options(          # Reducir tamaño de la fuente
    data_row.padding = px(1),           # Reducir padding entre filas
    heading.padding = px(2),            # Reducir padding entre títulos
    column_labels.padding = px(3)       # Reducir padding entre etiquetas de columna
  ) %>% cols_width(
    everything() ~ px(200)              # Ajustar el ancho de todas las columnas al texto (puedes ajustar el valor px)
  ) 
  }  else if(input$departamentos %in% c("Ayacucho")) {
  
  variables <- c("riqueza","residencia", "fuente_agua", "saneamiento","etnicidad",
                 "edad_madre", "nivel_educativo", "anemia_mujer", 
                 "dxn_anemia_gestacion", "hierro_embarazo","vitamina_postparto", 
                 "antiparasitario", "sexo_nino", "edad_nino", 
                 "desnutricion_cro", "hierro_7d_tomo")
    
    # Ajustar el modelo de regresión con las variables finales
  model <- svyglm(as.formula(paste("anemia_nino_ahora ~", paste(variables, collapse = " + "))),
                  design = x23_filtered(), family = poisson())
     # Crear las etiquetas dinámicas
  label_list <- list(riqueza  ~ "Índice de riqueza",
                      residencia  ~ "Lugar de residencia", 
                      fuente_agua  ~ "Suministro de agua", 
                      saneamiento ~ "Instalación sanitaria",
                      etnicidad ~ "Etnicidad - madre", 
                      edad_madre ~ "Edad - madre", 
                      nivel_educativo ~ "Nivel educativo - madre", 
                      anemia_mujer ~ "Anemia actual - madre", 
                      dxn_anemia_gestacion ~ "Anemia durante gestación*",
                      hierro_embarazo ~ "Suplemento de hierro en embarazo*", 
                      vitamina_postparto ~ "Vitamina A en los primeros 2 meses después del parto",
                      antiparasitario ~ "Antiparasitario en embarazo*", 
                      sexo_nino ~ "Sexo del niño", 
                      edad_nino ~ "Edad del niño", 
                      desnutricion_cro ~ "Desnutrición crónica", 
                      hierro_7d_tomo ~ "Suplemento de hierro (últimos 7 días)")
  
  tabla3 <- model %>%
    tbl_regression(
      exponentiate = TRUE,
      pvalue_fun = ~ style_pvalue(.x, digits = 3),
      label = label_list  # Etiquetas dinámicas
    ) %>%
      modify_header(label ~ "**Variable**") %>%
  bold_labels() %>%
  bold_p(t = 0.05) %>%
  as_gt()  %>%
  tab_row_group(label = "Características del hogar",
    rows = 1:13
  ) %>%
  tab_row_group(label = "Características de la madre",
    rows = 14:27
  ) %>%
  tab_row_group(label = "Características de gestación/posparto del niño índice",
    rows = 28:39
  ) %>%
  tab_row_group(label = "Características del niño",
    rows = 40:52
  ) %>%
  tab_style(style = list(
      cell_fill(color = "#DDEBF7"),  # Color de fondo para encabezados de grupos
      cell_text(weight = "bold")      # Texto en negrita para encabezados
    ),locations = cells_row_groups())  %>% 
  gt_theme_538() %>%
  tab_options(          # Reducir tamaño de la fuente
    data_row.padding = px(1),           # Reducir padding entre filas
    heading.padding = px(2),            # Reducir padding entre títulos
    column_labels.padding = px(3)       # Reducir padding entre etiquetas de columna
  ) %>% cols_width(
    everything() ~ px(200)              # Ajustar el ancho de todas las columnas al texto (puedes ajustar el valor px)
  ) 
}  else if(input$departamentos %in% c("Ancash")) {
  
  variables <- c("riqueza","residencia", "fuente_agua", "saneamiento","etnicidad",
                 "edad_madre", "nivel_educativo", "anemia_mujer", 
                 "dxn_anemia_gestacion", "hierro_embarazo","vitamina_postparto", 
                 "antiparasitario", "sexo_nino", "edad_nino", 
                 "desnutricion_cro", "hierro_7d_tomo")
    
    # Ajustar el modelo de regresión con las variables finales
  model <- svyglm(as.formula(paste("anemia_nino_ahora ~", paste(variables, collapse = " + "))),
                  design = x23_filtered(), family = poisson())
     # Crear las etiquetas dinámicas
  label_list <- list(riqueza  ~ "Índice de riqueza",
                      residencia  ~ "Lugar de residencia", 
                      fuente_agua  ~ "Suministro de agua", 
                      saneamiento ~ "Instalación sanitaria",
                      etnicidad ~ "Etnicidad - madre", 
                      edad_madre ~ "Edad - madre", 
                      nivel_educativo ~ "Nivel educativo - madre", 
                      anemia_mujer ~ "Anemia actual - madre", 
                      dxn_anemia_gestacion ~ "Anemia durante gestación*",
                      hierro_embarazo ~ "Suplemento de hierro en embarazo*", 
                      vitamina_postparto ~ "Vitamina A en los primeros 2 meses después del parto",
                      antiparasitario ~ "Antiparasitario en embarazo*", 
                      sexo_nino ~ "Sexo del niño", 
                      edad_nino ~ "Edad del niño", 
                      desnutricion_cro ~ "Desnutrición crónica", 
                      hierro_7d_tomo ~ "Suplemento de hierro (últimos 7 días)")
  
  tabla3 <- model %>%
    tbl_regression(
      exponentiate = TRUE,
      pvalue_fun = ~ style_pvalue(.x, digits = 3),
      label = label_list  # Etiquetas dinámicas
    ) %>%
      modify_header(label ~ "**Variable**") %>%
  bold_labels() %>%
  bold_p(t = 0.05) %>%
  as_gt()  %>%
  tab_row_group(label = "Características del hogar",
    rows = 1:13
  ) %>%
  tab_row_group(label = "Características de la madre",
    rows = 14:27
  ) %>%
  tab_row_group(label = "Características de gestación/posparto del niño índice",
    rows = 28:39
  ) %>%
  tab_row_group(label = "Características del niño",
    rows = 40:52
  ) %>%
  tab_style(style = list(
      cell_fill(color = "#DDEBF7"),  # Color de fondo para encabezados de grupos
      cell_text(weight = "bold")      # Texto en negrita para encabezados
    ),locations = cells_row_groups())  %>% 
  gt_theme_538() %>%
  tab_options(          # Reducir tamaño de la fuente
    data_row.padding = px(1),           # Reducir padding entre filas
    heading.padding = px(2),            # Reducir padding entre títulos
    column_labels.padding = px(3)       # Reducir padding entre etiquetas de columna
  ) %>% cols_width(
    everything() ~ px(200)              # Ajustar el ancho de todas las columnas al texto (puedes ajustar el valor px)
  ) %>%
  text_transform(
    locations = cells_body(
      columns = c("estimate", "ci", "p.value"),   # Especifica las columnas a modificar
      rows = 19               # Especifica la fila a modificar
    ),
    fn = function(x) {
      "—"                   # Reemplaza con guion
    }
  ) } else if(input$departamentos %in% c("Piura","Cajamarca")) {
    
    variables <- c("riqueza","residencia", "fuente_agua", "saneamiento",
                 "edad_madre", "nivel_educativo", "anemia_mujer", 
                 "dxn_anemia_gestacion", "parto_institucional","vitamina_postparto", 
                 "antiparasitario", "sexo_nino", "edad_nino", 
                 "desnutricion_cro", "hierro_7d_tomo")
    
    
    # Ajustar el modelo de regresión con las variables finales
  model <- svyglm(as.formula(paste("anemia_nino_ahora ~", paste(variables, collapse = " + "))),
                  design = x23_filtered(), family = poisson())
     # Crear las etiquetas dinámicas
label_list <- list(riqueza  ~ "Índice de riqueza",
                      residencia  ~ "Lugar de residencia", 
                      fuente_agua  ~ "Suministro de agua", 
                      saneamiento ~ "Instalación sanitaria",
                      edad_madre ~ "Edad - madre", 
                      nivel_educativo ~ "Nivel educativo - madre", 
                      anemia_mujer ~ "Anemia actual - madre", 
                      dxn_anemia_gestacion ~ "Anemia durante gestación*",
                      parto_institucional ~ "Parto institucional",  
                      vitamina_postparto ~ "Vitamina A en los primeros 2 meses después del parto",
                      antiparasitario ~ "Antiparasitario en embarazo*", 
                      sexo_nino ~ "Sexo del niño", 
                      edad_nino ~ "Edad del niño", 
                      desnutricion_cro ~ "Desnutrición crónica", 
                      hierro_7d_tomo ~ "Suplemento de hierro (últimos 7 días)")
  
  tabla3 <- model %>%
    tbl_regression(
      exponentiate = TRUE,
      pvalue_fun = ~ style_pvalue(.x, digits = 3),
      label = label_list  # Etiquetas dinámicas
    ) %>%
      modify_header(label ~ "**Variable**") %>%
  bold_labels() %>%
  bold_p(t = 0.05) %>%
  as_gt()  %>%
  tab_row_group(label = "Características del hogar",
    rows = 1:13
  ) %>%
  tab_row_group(label = "Características de la madre",
    rows = 14:24
  ) %>%
  tab_row_group(label = "Características de gestación/posparto del niño índice",
    rows = 25:36
  ) %>%
  tab_row_group(label = "Características del niño",
    rows = 37:49
  ) %>%
  tab_style(style = list(
      cell_fill(color = "#DDEBF7"),  # Color de fondo para encabezados de grupos
      cell_text(weight = "bold")      # Texto en negrita para encabezados
    ),locations = cells_row_groups())  %>% 
  gt_theme_538() %>%
  tab_options(          # Reducir tamaño de la fuente
    data_row.padding = px(1),           # Reducir padding entre filas
    heading.padding = px(2),            # Reducir padding entre títulos
    column_labels.padding = px(3)       # Reducir padding entre etiquetas de columna
  ) %>% cols_width(
    everything() ~ px(200)              # Ajustar el ancho de todas las columnas al texto (puedes ajustar el valor px)
  ) 
    }else if(input$departamentos == "Callao") {
    
    variables <- c("riqueza","fuente_agua", "saneamiento",
                 "edad_madre", "nivel_educativo", "anemia_mujer", 
                 "dxn_anemia_gestacion", "hierro_embarazo","vitamina_postparto",                  "antiparasitario", "sexo_nino", "edad_nino", 
                 "desnutricion_cro", "hierro_7d_tomo")
    
    # Ajustar el modelo de regresión con las variables finales
  model <- svyglm(as.formula(paste("anemia_nino_ahora ~", paste(variables, collapse = " + "))),
                  design = x23_filtered(), family = poisson())
     # Crear las etiquetas dinámicas
label_list <- list(riqueza  ~ "Índice de riqueza",
                      fuente_agua  ~ "Suministro de agua", 
                      saneamiento ~ "Instalación sanitaria",
                      edad_madre ~ "Edad - madre", 
                      nivel_educativo ~ "Nivel educativo - madre", 
                      anemia_mujer ~ "Anemia actual - madre", 
                      dxn_anemia_gestacion ~ "Anemia durante gestación*",
                      hierro_embarazo ~ "Suplemento de hierro en embarazo*", 
                      vitamina_postparto ~ "Vitamina A en los primeros 2 meses después del parto",
                      antiparasitario ~ "Antiparasitario en embarazo*", 
                      sexo_nino ~ "Sexo del niño", 
                      edad_nino ~ "Edad del niño", 
                      desnutricion_cro ~ "Desnutrición crónica", 
                      hierro_7d_tomo ~ "Suplemento de hierro (últimos 7 días)")
  
  tabla3 <- model %>%
    tbl_regression(
      exponentiate = TRUE,
      pvalue_fun = ~ style_pvalue(.x, digits = 3),
      label = label_list  # Etiquetas dinámicas
    ) %>%
      modify_header(label ~ "**Variable**") %>%
  bold_labels() %>%
  bold_p(t = 0.05) %>%
  as_gt()  %>%
  tab_row_group(label = "Características del hogar",
    rows = 1:10
  ) %>%
  tab_row_group(label = "Características de la madre",
    rows = 11:21
  ) %>%
  tab_row_group(label = "Características de gestación/posparto del niño índice",
    rows = 22:33
  ) %>%
  tab_row_group(label = "Características del niño",
    rows = 34:46
  ) %>%
  tab_style(style = list(
      cell_fill(color = "#DDEBF7"),  # Color de fondo para encabezados de grupos
      cell_text(weight = "bold")      # Texto en negrita para encabezados
    ),locations = cells_row_groups())  %>% 
  gt_theme_538() %>%
  tab_options(          # Reducir tamaño de la fuente
    data_row.padding = px(1),           # Reducir padding entre filas
    heading.padding = px(2),            # Reducir padding entre títulos
    column_labels.padding = px(3)       # Reducir padding entre etiquetas de columna
  ) %>% cols_width(
    everything() ~ px(200)              # Ajustar el ancho de todas las columnas al texto (puedes ajustar el valor px)
  ) 
  } else if(input$departamentos == "Cusco") {
    
    variables <- c("riqueza","residencia","fuente_agua", "saneamiento","etnicidad",
                 "edad_madre", "nivel_educativo", "anemia_mujer", 
                 "dxn_anemia_gestacion", "parto_institucional", "hierro_embarazo","vitamina_postparto", 
                 "sexo_nino", "edad_nino", 
                 "desnutricion_cro", "hierro_7d_tomo")
    
    
    # Ajustar el modelo de regresión con las variables finales
  model <- svyglm(as.formula(paste("anemia_nino_ahora ~", paste(variables, collapse = " + "))),
                  design = x23_filtered(), family = poisson())
     # Crear las etiquetas dinámicas
label_list <- list(riqueza  ~ "Índice de riqueza",
                      residencia  ~ "Lugar de residencia", 
                      fuente_agua  ~ "Suministro de agua", 
                      saneamiento ~ "Instalación sanitaria",
                      etnicidad ~ "Etnicidad - madre",
                      edad_madre ~ "Edad - madre", 
                      nivel_educativo ~ "Nivel educativo - madre", 
                      anemia_mujer ~ "Anemia actual - madre", 
                      dxn_anemia_gestacion ~ "Anemia durante gestación*",
                      parto_institucional ~ "Parto institucional", 
                      hierro_embarazo ~ "Suplemento de hierro en embarazo*", 
                      vitamina_postparto ~ "Vitamina A en los primeros 2 meses después del parto",
                      sexo_nino ~ "Sexo del niño", 
                      edad_nino ~ "Edad del niño", 
                      desnutricion_cro ~ "Desnutrición crónica", 
                      hierro_7d_tomo ~ "Suplemento de hierro (últimos 7 días)")
  
  tabla3 <- model %>%
    tbl_regression(
      exponentiate = TRUE,
      pvalue_fun = ~ style_pvalue(.x, digits = 3),
      label = label_list  # Etiquetas dinámicas
    ) %>%
      modify_header(label ~ "**Variable**") %>%
  bold_labels() %>%
  bold_p(t = 0.05) %>%
  as_gt()  %>%
  tab_row_group(label = "Características del hogar",
    rows = 1:13
  ) %>%
  tab_row_group(label = "Características de la madre",
    rows = 14:27
  ) %>%
  tab_row_group(label = "Características de gestación/posparto del niño índice",
    rows = 28:39
  ) %>%
  tab_row_group(label = "Características del niño",
    rows = 40:52
  ) %>%
  tab_style(style = list(
      cell_fill(color = "#DDEBF7"),  # Color de fondo para encabezados de grupos
      cell_text(weight = "bold")      # Texto en negrita para encabezados
    ),locations = cells_row_groups())  %>% 
  gt_theme_538() %>%
  tab_options(          # Reducir tamaño de la fuente
    data_row.padding = px(1),           # Reducir padding entre filas
    heading.padding = px(2),            # Reducir padding entre títulos
    column_labels.padding = px(3)       # Reducir padding entre etiquetas de columna
  ) %>% cols_width(
    everything() ~ px(200)              # Ajustar el ancho de todas las columnas al texto (puedes ajustar el valor px)
  ) 
    }
     return(tabla3)
})
```

### Intrepretación de resultados

```{r}
div(style = "text-align: justify;", uiOutput("interpretacion"))
```

```{r}
#| context: server
#Listas de departamentos que excluyen ciertas variables
departamentos_sin_etnicidad <- c("Tumbes", "Tacna", "Ica")
departamentos_et_hie <- c("Piura", "Cajamarca")
departamentos_completo <- c("Amazonas", "Arequipa", "Huancavelica", "Huanuco", "Junin", "La Libertad", "Lambayeque","Lima", "Loreto", "Madre de Dios", "Moquegua", "Pasco", "Puno",
  "San Martin", "Ucayali")

filtered_variables <- reactive({
  if (input$departamentos %in% departamentos_completo) {
    return(c("riqueza", "residencia", "fuente_agua", "saneamiento", "etnicidad", 
             "edad_madre", "nivel_educativo", "anemia_mujer", "dxn_anemia_gestacion", 
             "parto_institucional", "hierro_embarazo", "vitamina_postparto", 
             "antiparasitario", "sexo_nino", "edad_nino", "desnutricion_cro", "hierro_7d_tomo"))
  } else if (input$departamentos %in% departamentos_sin_etnicidad) {
    return(c("riqueza", "residencia", "fuente_agua", "saneamiento", "edad_madre", 
             "nivel_educativo", "anemia_mujer", "dxn_anemia_gestacion", "parto_institucional", 
             "hierro_embarazo", "vitamina_postparto", "antiparasitario", "sexo_nino", 
             "edad_nino", "desnutricion_cro", "hierro_7d_tomo"))
  } else if (input$departamentos == "Apurimac") {
    return(c("riqueza", "residencia", "fuente_agua", "saneamiento", "etnicidad", "edad_madre", 
             "nivel_educativo", "anemia_mujer", "dxn_anemia_gestacion", "vitamina_postparto", 
             "antiparasitario", "sexo_nino", "edad_nino", "desnutricion_cro", "hierro_7d_tomo"))
  } else if (input$departamentos == "Ayacucho") {
    return(c("riqueza", "residencia", "fuente_agua", "saneamiento", "etnicidad", "edad_madre", 
             "nivel_educativo", "anemia_mujer", "dxn_anemia_gestacion", "hierro_embarazo", 
             "vitamina_postparto", "antiparasitario", "sexo_nino", "edad_nino", 
             "desnutricion_cro", "hierro_7d_tomo"))
  } else if (input$departamentos == "Ancash") {
    return(c("riqueza", "residencia", "fuente_agua", "saneamiento", "etnicidad", "edad_madre", 
             "nivel_educativo", "anemia_mujer", "dxn_anemia_gestacion", "hierro_embarazo", 
             "vitamina_postparto", "antiparasitario", "sexo_nino", "edad_nino", 
             "desnutricion_cro", "hierro_7d_tomo"))
  } else if (input$departamentos %in% c("Piura", "Cajamarca")) {
    return(c("riqueza", "residencia", "fuente_agua", "saneamiento", "edad_madre", 
             "nivel_educativo", "anemia_mujer", "dxn_anemia_gestacion", "parto_institucional", 
             "vitamina_postparto", "antiparasitario", "sexo_nino", "edad_nino", 
             "desnutricion_cro", "hierro_7d_tomo"))
  } else if (input$departamentos == "Callao") {
    return(c("riqueza", "fuente_agua", "saneamiento", "edad_madre", "nivel_educativo", 
             "anemia_mujer", "dxn_anemia_gestacion", "hierro_embarazo", "vitamina_postparto", 
             "antiparasitario", "sexo_nino", "edad_nino", "desnutricion_cro", "hierro_7d_tomo"))
  } else if (input$departamentos == "Cusco") {
    return(c("riqueza", "residencia", "fuente_agua", "saneamiento", "etnicidad", 
             "edad_madre", "nivel_educativo", "anemia_mujer", "dxn_anemia_gestacion", 
             "parto_institucional", "hierro_embarazo", "vitamina_postparto", 
             "sexo_nino", "edad_nino", "desnutricion_cro", "hierro_7d_tomo"))
  }
})

# Generar la interpretación de los resultados
output$interpretacion <- renderUI({
  variables <- filtered_variables()
  # Ajustar el modelo de regresión con las variables definidas
  model <- svyglm(as.formula(paste("anemia_nino_ahora ~", paste(variables, collapse = " + "))),
                  design = x23_filtered(), family = poisson())

  # Extraer resultados del modelo multivariado
  resultados_multivariado <- summary(model)$coefficients
  intervalo_confianza_multivariado <- confint(model)

      resultados_multivariado <- resultados_multivariado[rownames(resultados_multivariado) != "(Intercept)", ]
  intervalo_confianza_multivariado <- intervalo_confianza_multivariado[rownames(intervalo_confianza_multivariado) != "(Intercept)", ]

  # Filtrar resultados significativos (p < 0.05) del modelo multivariado
  significativos_multivariado <- resultados_multivariado[resultados_multivariado[, "Pr(>|t|)"] < 0.05, , drop = FALSE]
  
  # Iniciar la interpretación
  interpretacion <- glue::glue("En <strong>{input$departamentos}</strong>, se encontraron las siguientes asociaciones significativas con la anemia en niños de 6 a 35 meses de edad:")

label <- list(
  "riquezaMedio" = "Riqueza (Medio)",
  "riquezaMuy pobre - pobre" = "Riqueza (Muy pobre - pobre)",
   "residenciaRural" = "Residencia (Rural)",
  "etnicidadEtnia" = "Etnicidad (Etnia)",
  "edad_madre[12-19>" = "Edad de la madre ([12-19>)",
  "edad_madre[34-49]" = "Edad de la madre ([34-49])",
  "anemia_mujerAnemia" = "Anemia de la madre (Sí)",
  "nivel_educativoSecundaria" = "Nivel educativo (Secundaria)",
  "nivel_educativoSin educación - primaria" = "Nivel educativo (Sin educación - primaria)",
  "fuente_aguaSin acceso a red pública" = "Suministro de agua (Sin acceso a red pública)",
  "saneamientoSin red de alcantarillado" = "Instalación sanitaria (Sin red de alcantarillado)",
  "sexo_ninoHombre" = "Sexo del niño (Hombre)",
  "edad_nino<12-24]" = "Edad del niño (<12-24])",
  "edad_nino[6-12]" = "Edad del niño ([6-12])",
  "hierro_7d_tomoNo" = "Suplemento de hierro (últimos 7 días) (No)",
  "dxn_anemia_gestacionSí" = "Anemia durante la gestación (Sí)",
  "parto_institucionalNo" = "Parto institucional (No)",
  "vitamina_postpartoNo" = "Vitamina A en los primeros 2 meses posparto (No)",
  "hierro_embarazoNo" = "Suplemento de hierro durante el embarazo (No)",
  "antiparasitarioNo" = "Antiparasitario durante el embarazo (No)",
  "desnutricion_croSí" = "Desnutrición crónica (Sí)"
)

   if (nrow(significativos_multivariado) > 0) {
    for (variable in rownames(significativos_multivariado)) {
      # Excluir la variable "edad_madre[12-19>" solo para el departamento de "Ancash"
      if (input$departamentos == "Ancash" && variable == "edad_madre[12-19>") {
        next  # Saltar esta variable si es "edad_madre[12-19>" y el departamento es Ancash
      }

      rp <- resultados_multivariado[variable, "Estimate"]
      ic <- intervalo_confianza_multivariado[variable, ]
        
      etiqueta_variable <- ifelse(variable %in% names(label), 
                                  label[[variable]], 
                                  variable)
      
      # Interpretar la variable y agregarla al texto
      interpretacion <- glue::glue("{interpretacion}\n <strong>{etiqueta_variable}</strong>, con RP: {round(exp(rp), 2)} veces la probabilidad de presentar anemia en comparación con la categoría de referencia y un intervalo de confianza: ({round(exp(ic[1]), 2)}-{round(exp(ic[2]), 2)}).")
    }
  } else {
    interpretacion <- glue::glue("{interpretacion}\nNo se encontraron asociaciones significativas.")
  }
  
  HTML(interpretacion)
})
```

### Consideraciones

::: {style="text-align: justify;"}
Aunque algunos determinantes no resultaron significativamente asociados con la anemia en este análisis, esto no implica que carezcan de relevancia o que deban ser excluidos del modelo causal de la anemia en niños. La naturaleza de la encuesta presenta limitaciones inherentes en la recolección de datos y en la potencia estadística de ciertas variables, lo que puede afectar la detección de asociaciones significativas. Estos factores deben tomarse en cuenta al momento de interpretar los resultados y tomar decisiones, especialmente en intervenciones multisectoriales para la Prevención y Reducción de la Anemia Materno Infantil.
:::
