1 · Carga y limpieza de datos

# Carpeta raíz
root_dir <- "C:/Users/PC/Documents/Modelacion y Simulacion/Analisis de natalidad y muerte en Guatemala"

years      <- 2021:2023
path_birth <- file.path(root_dir,"Data","Natalidad",
                        paste0("nacimientos-",years,".xlsx"))
path_death <- file.path(root_dir,"Data","Muerte",
                        paste0("defunciones-",years,".xlsx"))

leer_vitales <- function(path, anio){
  readxl::read_excel(path, col_types = "text", .name_repair = "unique") |>
    janitor::clean_names() |>
    dplyr::mutate(anio = as.integer(anio))
}

birth_list <- purrr::map2(path_birth, years, leer_vitales) |>
  purrr::map(readr::type_convert, na = c("","NA","999"))
death_list <- purrr::map2(path_death, years, leer_vitales) |>
  purrr::map(readr::type_convert, na = c("","NA","999"))

harmonizar <- function(lst){
  cols_char <- unique(unlist(
    purrr::map(lst, ~ names(.x)[vapply(.x,is.character,logical(1))])))
  purrr::map(lst, ~ dplyr::mutate(.x,
                                  dplyr::across(all_of(cols_char), as.character)))
}
birth_list <- harmonizar(birth_list)
death_list <- harmonizar(death_list)

nacimientos <- dplyr::bind_rows(birth_list)
defunciones <- dplyr::bind_rows(death_list)

# re‑codificar valores vacíos
na_recode <- function(df){
  df |>
    dplyr::mutate(across(where(is.character), ~ dplyr::na_if(.x,""))) |>
    dplyr::mutate(across(where(is.character), ~ dplyr::na_if(.x,"NA"))) |>
    dplyr::mutate(across(where(is.character), ~ dplyr::na_if(.x,"999"))) |>
    janitor::remove_empty("rows") |>
    janitor::remove_empty("cols")
}
nacimientos <- na_recode(nacimientos)
defunciones <- na_recode(defunciones)

Diccionario de departamentos

2 · Exploración inicial

str(nacimientos, max.level = 1)
## tibble [1,033,712 × 46] (S3: tbl_df/tbl/data.frame)
str(defunciones, max.level = 1)
## tibble [309,799 × 28] (S3: tbl_df/tbl/data.frame)
cat("\\nDimensiones → Nacimientos:", dim(nacimientos),
    "| Defunciones:", dim(defunciones), "\\n")
## \nDimensiones → Nacimientos: 1033712 46 | Defunciones: 309799 28 \n
na_birth <- colSums(is.na(nacimientos)); na_birth[na_birth>0]
##   via_par     edadp pueblo_pp     edadm pueblo_pm    viapar  pueblopp  pueblopm 
##    688563    139015    688563       242    688563    345149    345149    345149
na_death <- colSums(is.na(defunciones)); na_death[na_death>0]
## edadif 
##    726

Resumen estadístico (variables numéricas)

summary(dplyr::select(nacimientos, where(is.numeric)))
##      depreg          mesreg           anoreg        tipo_ins    
##  Min.   : 1.00   Min.   : 1.000   Min.   :2021   Min.   :1.000  
##  1st Qu.: 5.00   1st Qu.: 3.000   1st Qu.:2021   1st Qu.:3.000  
##  Median :12.00   Median : 6.000   Median :2022   Median :3.000  
##  Mean   :10.67   Mean   : 6.433   Mean   :2022   Mean   :2.725  
##  3rd Qu.:16.00   3rd Qu.: 9.000   3rd Qu.:2023   3rd Qu.:3.000  
##  Max.   :22.00   Max.   :12.000   Max.   :2024   Max.   :4.000  
##                                                                 
##      depocu          libras           onzas            diaocu     
##  Min.   : 1.00   Min.   : 0.000   Min.   : 0.000   Min.   : 1.00  
##  1st Qu.: 5.00   1st Qu.: 6.000   1st Qu.: 0.000   1st Qu.: 8.00  
##  Median :12.00   Median : 6.000   Median : 5.000   Median :16.00  
##  Mean   :10.58   Mean   : 6.398   Mean   : 5.372   Mean   :15.64  
##  3rd Qu.:16.00   3rd Qu.: 7.000   3rd Qu.: 8.000   3rd Qu.:23.00  
##  Max.   :22.00   Max.   :99.000   Max.   :99.000   Max.   :31.00  
##                                                                   
##      mesocu           anoocu          sexo           tipar      
##  Min.   : 1.000   Min.   :2021   Min.   :1.000   Min.   :1.000  
##  1st Qu.: 4.000   1st Qu.:2021   1st Qu.:1.000   1st Qu.:1.000  
##  Median : 7.000   Median :2022   Median :1.000   Median :1.000  
##  Mean   : 6.566   Mean   :2022   Mean   :1.492   Mean   :1.013  
##  3rd Qu.:10.000   3rd Qu.:2023   3rd Qu.:2.000   3rd Qu.:1.000  
##  Max.   :12.000   Max.   :2023   Max.   :2.000   Max.   :4.000  
##                                                                 
##     via_par           edadp           paisrep         deprep     
##  Min.   :1.0      Min.   :13.00    Min.   :   4   Min.   : 1.00  
##  1st Qu.:1.0      1st Qu.:24.00    1st Qu.: 320   1st Qu.: 7.00  
##  Median :1.0      Median :28.00    Median : 320   Median :13.00  
##  Mean   :1.4      Mean   :29.82    Mean   :1645   Mean   :22.86  
##  3rd Qu.:2.0      3rd Qu.:34.00    3rd Qu.: 320   3rd Qu.:17.00  
##  Max.   :2.0      Max.   :91.00    Max.   :9999   Max.   :99.00  
##  NA's   :688563   NA's   :139015                                 
##    pueblo_pp          escivp         paisnacp        depnap     
##  Min.   :1.0      Min.   :1.000   Min.   :   8   Min.   : 1.00  
##  1st Qu.:1.0      1st Qu.:1.000   1st Qu.: 320   1st Qu.: 8.00  
##  Median :4.0      Median :2.000   Median : 320   Median :13.00  
##  Mean   :3.8      Mean   :2.473   Mean   :1622   Mean   :23.02  
##  3rd Qu.:4.0      3rd Qu.:2.000   3rd Qu.: 320   3rd Qu.:18.00  
##  Max.   :9.0      Max.   :9.000   Max.   :9999   Max.   :99.00  
##  NA's   :688563                                                 
##     escolap          edadm          paisrem           deprem     
##  Min.   :1.000   Min.   :10.00   Min.   :  76.0   Min.   : 1.00  
##  1st Qu.:2.000   1st Qu.:21.00   1st Qu.: 320.0   1st Qu.: 5.00  
##  Median :3.000   Median :25.00   Median : 320.0   Median :12.00  
##  Mean   :3.703   Mean   :25.91   Mean   : 422.5   Mean   :11.71  
##  3rd Qu.:4.000   3rd Qu.:30.00   3rd Qu.: 320.0   3rd Qu.:16.00  
##  Max.   :9.000   Max.   :59.00   Max.   :9999.0   Max.   :99.00  
##                  NA's   :242                                     
##    pueblo_pm          escivm         paisnacm          depnam     
##  Min.   :1.0      Min.   :1.000   Min.   :   8.0   Min.   : 1.00  
##  1st Qu.:1.0      1st Qu.:1.000   1st Qu.: 320.0   1st Qu.: 6.00  
##  Median :4.0      Median :1.000   Median : 320.0   Median :12.00  
##  Mean   :3.4      Mean   :1.387   Mean   : 322.5   Mean   :11.21  
##  3rd Qu.:4.0      3rd Qu.:2.000   3rd Qu.: 320.0   3rd Qu.:16.00  
##  Max.   :9.0      Max.   :9.000   Max.   :9999.0   Max.   :99.00  
##  NA's   :688563                                                   
##     escolam         asisrec        sitioocu         tohite      
##  Min.   :1.000   Min.   :1.00   Min.   :1.000   Min.   : 1.000  
##  1st Qu.:2.000   1st Qu.:1.00   1st Qu.:1.000   1st Qu.: 1.000  
##  Median :2.000   Median :1.00   Median :2.000   Median : 2.000  
##  Mean   :3.177   Mean   :1.96   Mean   :2.884   Mean   : 4.417  
##  3rd Qu.:4.000   3rd Qu.:4.00   3rd Qu.:6.000   3rd Qu.: 3.000  
##  Max.   :9.000   Max.   :9.00   Max.   :9.000   Max.   :99.000  
##                                                                 
##      tohinm           tohivi            anio          viapar      
##  Min.   : 0.000   Min.   : 0.000   Min.   :2021   Min.   :1.0     
##  1st Qu.: 0.000   1st Qu.: 1.000   1st Qu.:2021   1st Qu.:1.0     
##  Median : 0.000   Median : 2.000   Median :2022   Median :1.0     
##  Mean   : 2.386   Mean   : 4.074   Mean   :2022   Mean   :1.4     
##  3rd Qu.: 0.000   3rd Qu.: 3.000   3rd Qu.:2023   3rd Qu.:2.0     
##  Max.   :99.000   Max.   :99.000   Max.   :2023   Max.   :2.0     
##                                                   NA's   :345149  
##     pueblopp         pueblopm     
##  Min.   :1.0      Min.   :1.0     
##  1st Qu.:1.0      1st Qu.:1.0     
##  Median :4.0      Median :4.0     
##  Mean   :3.9      Mean   :3.5     
##  3rd Qu.:4.0      3rd Qu.:4.0     
##  Max.   :9.0      Max.   :9.0     
##  NA's   :345149   NA's   :345149
summary(dplyr::select(defunciones, where(is.numeric)))
##      depreg           mesreg           anoreg         depocu     
##  Min.   : 1.000   Min.   : 1.000   Min.   :2021   Min.   : 1.00  
##  1st Qu.: 1.000   1st Qu.: 4.000   1st Qu.:2021   1st Qu.: 1.00  
##  Median : 9.000   Median : 7.000   Median :2022   Median : 9.00  
##  Mean   : 8.702   Mean   : 6.479   Mean   :2022   Mean   : 8.67  
##  3rd Qu.:14.000   3rd Qu.: 9.000   3rd Qu.:2023   3rd Qu.:14.00  
##  Max.   :22.000   Max.   :12.000   Max.   :2024   Max.   :22.00  
##                                                                  
##       sexo           diaocu          mesocu           anoocu    
##  Min.   :1.000   Min.   : 1.00   Min.   : 1.000   Min.   :2021  
##  1st Qu.:1.000   1st Qu.: 8.00   1st Qu.: 4.000   1st Qu.:2021  
##  Median :1.000   Median :16.00   Median : 7.000   Median :2022  
##  Mean   :1.445   Mean   :15.68   Mean   : 6.576   Mean   :2022  
##  3rd Qu.:2.000   3rd Qu.:23.00   3rd Qu.: 9.000   3rd Qu.:2023  
##  Max.   :2.000   Max.   :31.00   Max.   :12.000   Max.   :2023  
##                                                                 
##      edadif           perdif          puedif          ecidif     
##  Min.   :  0.00   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.: 41.00   1st Qu.:3.000   1st Qu.:1.000   1st Qu.:1.000  
##  Median : 64.00   Median :3.000   Median :4.000   Median :1.000  
##  Mean   : 58.14   Mean   :2.918   Mean   :3.948   Mean   :1.475  
##  3rd Qu.: 79.00   3rd Qu.:3.000   3rd Qu.:4.000   3rd Qu.:2.000  
##  Max.   :120.00   Max.   :9.000   Max.   :9.000   Max.   :9.000  
##  NA's   :726                                                     
##     escodif          pnadif           dnadif          nacdif      
##  Min.   :1.000   Min.   :  10.0   Min.   : 1.00   Min.   :  10.0  
##  1st Qu.:1.000   1st Qu.: 320.0   1st Qu.: 5.00   1st Qu.: 320.0  
##  Median :2.000   Median : 320.0   Median :10.00   Median : 320.0  
##  Mean   :2.162   Mean   : 348.9   Mean   :10.51   Mean   : 348.9  
##  3rd Qu.:2.000   3rd Qu.: 320.0   3rd Qu.:15.00   3rd Qu.: 320.0  
##  Max.   :9.000   Max.   :9999.0   Max.   :99.00   Max.   :9999.0  
##                                                                   
##      predif         dredif          asist            ocur           cerdef     
##  Min.   :  84   Min.   : 1.00   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.: 320   1st Qu.: 3.00   1st Qu.:1.000   1st Qu.:4.000   1st Qu.:1.000  
##  Median : 320   Median :10.00   Median :1.000   Median :6.000   Median :3.000  
##  Mean   :1239   Mean   :17.64   Mean   :3.131   Mean   :4.905   Mean   :4.989  
##  3rd Qu.: 320   3rd Qu.:16.00   3rd Qu.:5.000   3rd Qu.:6.000   3rd Qu.:9.000  
##  Max.   :9999   Max.   :99.00   Max.   :9.000   Max.   :9.000   Max.   :9.000  
##                                                                                
##       anio     
##  Min.   :2021  
##  1st Qu.:2021  
##  Median :2022  
##  Mean   :2022  
##  3rd Qu.:2023  
##  Max.   :2023  
## 

3 · Visualizaciones clave

3.1 Nacimientos totales por año (barras simples)

Nacimientos totales por año (2021-2023)

Nacimientos totales por año (2021-2023)

Descripción de la gráfica 1
Muestra la cantidad total de nacimientos por año.
- 2021 → 2022: ligero incremento (unos cientos de nacimientos).
- 2022 → 2023: descenso más pronunciado; 2023 cae por debajo de 2021.

Balance del trienio: disminución neta aproximada de 0,6 % tras un breve repunte en 2022.

3.2 Nacimientos por sexo y año (barras agrupadas)

Nacimientos por sexo y año

Nacimientos por sexo y año

Descripción de la gráfica 2
- H > M cada año (~51 % vs 49 %).
- 2021 → 2022: ligero aumento en ambos sexos.
- 2022 → 2023: descenso similar para H y M; la brecha se mantiene.

3.3 Distribución de edad materna (boxplot)

Distribución de edad materna por año

Distribución de edad materna por año

Descripción de la gráfica 3
Caja 20-30 años; mediana ≈ 25-26 años.
Distribución casi idéntica 2021-2023; pocos partos <15 o >45 años.

3.4 Histograma del peso al nacer

Peso al nacer (1 000–6 000 g)

Peso al nacer (1 000–6 000 g)

Descripción de la gráfica 4
Media ≈ 3 011 g; mayor concentración 2 500–3 500 g.
Pocos < 2 500 g (bajo peso) y > 4 000 g (macrosomía).

3.5 Heat‑map de nacimientos por mes

Nacimientos por mes y año

Nacimientos por mes y año

Descripción de la gráfica 5
Pico Jun–Sep (máx. Sep-2021 >32 k).
Mínimos en febreros (~24 k).
Tonos más fríos en 2023 ⇒ menor volumen general.

3.6 Top‑10 departamentos de nacimiento (lollipop)

Top‑10 departamentos con más nacimientos

Top‑10 departamentos con más nacimientos

Descripción de la gráfica 6
Guatemala ~165 k (≈2× Alta Verapaz).
Top-3 (Guate, Alta V., Huehue) ≈45 % del total.
Volumen cae gradualmente hasta Suchitepéquez (~48 k).

3.7 Peso medio vs edad de la madre (línea)

Peso medio al nacer vs edad de la madre

Peso medio al nacer vs edad de la madre

Descripción de la gráfica 7
↑ rápido 10→25; pico ~3 050 g a 30-35.
Leve descenso >35; <3 000 g y mayor variabilidad >45.

3.8 Distribución de peso por sexo (violín)

Distribución de peso al nacer por sexo

Distribución de peso al nacer por sexo

Descripción de la gráfica 8
Distribuciones casi idénticas.
Mediana ♂ ~30 g > ♀; diferencia mínima.

3.9 Defunciones por sexo (donut)

Defunciones por sexo (2021‑2023)

Defunciones por sexo (2021‑2023)

Descripción de la gráfica 9
♂ ≈55 % | ♀ ≈45 %; mayor mortalidad masculina.

3.10 Edad al fallecer por sexo (density‑ridge)

Distribución de edad al fallecer por sexo

Distribución de edad al fallecer por sexo

Descripción de la gráfica 10
Pico neonatal en ambos.
♂ máx. ~65-70 a; ♂ más dispersión 20-60 a.
♀ máx. ~75-80 a y mayor densidad >80 a (mayor longevidad).