1 Introducción

Tema: Cantidad de despachos aduaneros bajo el rubro de logística, Comercio Exterior y Gestión Aduanera durante el año 2024.

Objetivo general: Analizar la cantidad de despachos aduaneros registrados en Paraguay durante el año 2024, mediante Análisis Exploratorio de Datos (EDA), para determinar si diciembre presentó una actividad superior al promedio de los demás meses.

Hipótesis: Durante diciembre de 2024 se registró una mayor cantidad de despachos aduaneros en comparación con el promedio de los demás meses del año.

Fuente de los datos: Dirección Nacional de Ingresos Tributarios (DNIT), Portal de Datos Abiertos. https://www.dnit.gov.py/web/portal-institucional/datos-abiertos

2 Gestión de datos

2.1 Librerías necesarias

library(data.table)
library(dplyr)
library(ggplot2)
library(lubridate)
library(tidyr)
library(scales)
library(knitr)
library(kableExtra)

2.2 Carga y consolidación de las bases mensuales

Se cargaron los 12 archivos mensuales (2024_ENERO.csv a 2024_DICIEMBRE.csv) con data.table::fread(), y se unieron en un único data frame.

Para evitar reconstruir la base completa cada vez que se hace Knit (proceso lento y pesado en memoria), el siguiente bloque reutiliza el archivo .rds si ya existe, y solo reconstruye desde los CSV si hace falta.

ruta_rds <- "C:/Users/GCA/Desktop/AduanasPy/2024_TODOS.rds"

if (file.exists(ruta_rds)) {

  datos <- readRDS(ruta_rds)

} else {

  enero      <- fread("C:/Users/GCA/Desktop/AduanasPy/2024_ENERO.csv",      encoding = "UTF-8")
  febrero    <- fread("C:/Users/GCA/Desktop/AduanasPy/2024_FEBRERO.csv",    encoding = "UTF-8")
  marzo      <- fread("C:/Users/GCA/Desktop/AduanasPy/2024_MARZO.csv",      encoding = "UTF-8")
  abril      <- fread("C:/Users/GCA/Desktop/AduanasPy/2024_ABRIL.csv",      encoding = "UTF-8")
  mayo       <- fread("C:/Users/GCA/Desktop/AduanasPy/2024_MAYO.csv",       encoding = "UTF-8")
  junio      <- fread("C:/Users/GCA/Desktop/AduanasPy/2024_JUNIO.csv",      encoding = "UTF-8")
  julio      <- fread("C:/Users/GCA/Desktop/AduanasPy/2024_JULIO.csv",      encoding = "UTF-8")
  agosto     <- fread("C:/Users/GCA/Desktop/AduanasPy/2024_AGOSTO.csv",     encoding = "UTF-8")
  septiembre <- fread("C:/Users/GCA/Desktop/AduanasPy/2024_SEPTIEMBRE.csv", encoding = "UTF-8")
  octubre    <- fread("C:/Users/GCA/Desktop/AduanasPy/2024_OCTUBRE.csv",    encoding = "UTF-8")
  noviembre  <- fread("C:/Users/GCA/Desktop/AduanasPy/2024_NOVIEMBRE.csv",  encoding = "UTF-8")
  diciembre_raw <- fread("C:/Users/GCA/Desktop/AduanasPy/2024_DICIEMBRE.csv", encoding = "UTF-8")

  datos <- rbind(enero, febrero, marzo, abril, mayo, junio, julio, agosto,
                 septiembre, octubre, noviembre, diciembre_raw)

  saveRDS(datos, ruta_rds)
}

nrow(datos)
## [1] 4473218

2.3 Estructura general de los datos

glimpse(datos)
## Rows: 4,473,218
## Columns: 47
## $ `DESPACHO CIFRADO`          <chr> "24DA000000007030", "24DA000000007030", "2…
## $ OPERACION                   <chr> "IMPORTACION", "IMPORTACION", "IMPORTACION…
## $ DESTINACION                 <chr> "IC04", "IC04", "IC04", "IC04", "IC04", "I…
## $ REGIMEN                     <chr> "IMPORTACION A CONSUMO CON DOCUMENTO DE TR…
## $ OFICIALIZACION              <chr> "26/01/2024", "26/01/2024", "26/01/2024", …
## $ CANCELACION                 <chr> "29/01/2024", "29/01/2024", "29/01/2024", …
## $ AÑO                         <int> 2024, 2024, 2024, 2024, 2024, 2024, 2024, …
## $ MES                         <chr> "ENERO", "ENERO", "ENERO", "ENERO", "ENERO…
## $ ADUANA                      <chr> "PTO SEGURO FLUVIAL", "PTO SEGURO FLUVIAL"…
## $ COTIZACION                  <chr> "7293,29", "7293,29", "7293,29", "7293,29"…
## $ `MEDIO TRANSPORTE`          <chr> "ACUATICO", "ACUATICO", "ACUATICO", "ACUAT…
## $ CANAL                       <chr> "R", "R", "R", "R", "R", "R", "R", "R", "R…
## $ ITEM                        <int> 2, 2, 3, 3, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, …
## $ `PAIS ORIGEN`               <chr> "COREA DEL SUR", "COREA DEL SUR", "COREA D…
## $ `PAIS PROCEDENCIA/DESTINO`  <chr> "COREA DEL SUR", "COREA DEL SUR", "COREA D…
## $ USO                         <chr> "NUEVO", "NUEVO", "NUEVO", "NUEVO", "NUEVO…
## $ `UNIDAD MEDIDA ESTADISTICA` <chr> "UNIDAD", "UNIDAD", "UNIDAD", "UNIDAD", "U…
## $ `CANTIDAD ESTADISTICA`      <chr> "1500,0", "1500,0", "36,0", "36,0", "2000,…
## $ `KILO NETO`                 <chr> "318,53", "318,53", "120,0", "120,0", "667…
## $ `KILO BRUTO`                <chr> "318,53", "318,53", "120,0", "120,0", "667…
## $ `FOB DOLAR`                 <chr> "4650,0", "4650,0", "860,76", "860,76", "1…
## $ `FLETE DOLAR`               <chr> "146,45", "146,45", "27,11", "27,11", "314…
## $ `SEGURO DOLAR`              <chr> "15,1", "15,1", "2,8", "2,8", "32,48", "32…
## $ `IMPONIBLE DOLAR`           <chr> "4811,55", "4811,55", "890,67", "890,67", …
## $ `IMPONIBLE GS`              <chr> "35092029,5", "35092029,5", "6495914,6", "…
## $ `AJUSTE A INCLUIR`          <chr> ",0", ",0", ",0", ",0", ",0", ",0", ",0", …
## $ `AJUSTE A DEDUCIR`          <chr> ",0", ",0", ",0", ",0", ",0", ",0", ",0", …
## $ `POSICION `                 <chr> "8512.90.00.000M", "8512.90.00.000M", "842…
## $ RUBRO                       <chr> "REPUESTOS (AUTOPARTE)", "REPUESTOS (AUTOP…
## $ `DESC CAPITULO`             <chr> "CAPITULO 85  MAQUINAS, APARATOS Y MATERIA…
## $ `DESC PARTIDA`              <chr> "APARATOS ELECTRICOS DE ALUMBRADO O SE¿ALI…
## $ `DESC POSICION`             <chr> "CAPITULO 85  MAQUINAS, APARATOS Y MATERIA…
## $ MERCADERIA                  <chr> "CEPILLOS LIMPIAPARABRISAS, DETALLADOS EN …
## $ `MARCA ITEM`                <chr> "", "", "", "", "", "", "", "", "", "", ""…
## $ ACUERDO                     <chr> "SIN ACUERDO", "SIN ACUERDO", "SIN ACUERDO…
## $ `NUMERO SUBITEM`            <int> 4, 5, 1, 2, 1, 2, 1, 2, 3, 4, 5, 1, 2, 3, …
## $ `CANTIDAD SUBITEM`          <int> 300, 300, 24, 12, 1000, 1000, 100, 300, 30…
## $ `PRECION UNITARIO SUBITEM`  <chr> "3,1", "3,1", "24,78", "22,17", "4,8", "5,…
## $ `DESC SUBITEM`              <chr> "UNID. CEPILLOS LIMPIAPARABRISAS 550 MM", …
## $ `MARCA SUBITEM`             <chr> "CLEANSHOT", "CLEANSHOT", "IFILTER", "IFIL…
## $ DERECHO                     <chr> "3509203,0", "3509203,0", "324796,0", "324…
## $ ISC                         <chr> "387767,0", "387767,0", ",0", ",0", ",0", …
## $ SERVICIO                    <chr> "175460,0", "175460,0", "32480,0", "32480,…
## $ RENTA                       <chr> ",0", ",0", ",0", ",0", ",0", ",0", ",0", …
## $ IVA                         <chr> "3916446,0", "3916446,0", "685319,0", "685…
## $ OTROS                       <chr> "156658,0", "156658,0", "27413,0", "27413,…
## $ TOTAL                       <chr> "8145534,0", "8145534,0", "1070008,0", "10…

3 Calidad de los datos

Antes de analizar, se verificó la existencia de valores faltantes en el dataset consolidado.

colSums(is.na(datos))
##          DESPACHO CIFRADO                 OPERACION               DESTINACION 
##                         0                         0                         0 
##                   REGIMEN            OFICIALIZACION               CANCELACION 
##                         0                         0                         0 
##                       AÑO                       MES                    ADUANA 
##                         0                         0                         0 
##                COTIZACION          MEDIO TRANSPORTE                     CANAL 
##                         0                         0                         0 
##                      ITEM               PAIS ORIGEN  PAIS PROCEDENCIA/DESTINO 
##                         0                         0                         0 
##                       USO UNIDAD MEDIDA ESTADISTICA      CANTIDAD ESTADISTICA 
##                         0                         0                         0 
##                 KILO NETO                KILO BRUTO                 FOB DOLAR 
##                         0                         0                         0 
##               FLETE DOLAR              SEGURO DOLAR           IMPONIBLE DOLAR 
##                         0                         0                         0 
##              IMPONIBLE GS          AJUSTE A INCLUIR          AJUSTE A DEDUCIR 
##                         0                         0                         0 
##                 POSICION                      RUBRO             DESC CAPITULO 
##                         0                         0                         0 
##              DESC PARTIDA             DESC POSICION                MERCADERIA 
##                         0                         0                         0 
##                MARCA ITEM                   ACUERDO            NUMERO SUBITEM 
##                         0                         0                      5042 
##          CANTIDAD SUBITEM  PRECION UNITARIO SUBITEM              DESC SUBITEM 
##                         0                         0                         0 
##             MARCA SUBITEM                   DERECHO                       ISC 
##                         0                         0                         0 
##                  SERVICIO                     RENTA                       IVA 
##                         0                         0                         0 
##                     OTROS                     TOTAL 
##                         0                         0

No se encontraron valores nulos relevantes en las variables utilizadas para este análisis (MES, cantidad de despachos), por lo que se procedió sin necesidad de imputación ni eliminación de registros.

4 Análisis exploratorio: despachos por mes

4.1 Cantidad de despachos por mes

despachos_mes <- datos %>%
  group_by(MES) %>%
  summarise(total_despachos = n())

# Ordenar los meses en orden calendario (no alfabético)
orden_meses <- c("ENERO","FEBRERO","MARZO","ABRIL","MAYO","JUNIO",
                  "JULIO","AGOSTO","SEPTIEMBRE","OCTUBRE","NOVIEMBRE","DICIEMBRE")
despachos_mes$MES <- factor(despachos_mes$MES, levels = orden_meses)
despachos_mes <- despachos_mes %>% arrange(MES)

kable(despachos_mes,
      col.names = c("Mes", "Cantidad de despachos"),
      caption = "Cantidad de despachos aduaneros por mes - Año 2024") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
Cantidad de despachos aduaneros por mes - Año 2024
Mes Cantidad de despachos
ENERO 322543
FEBRERO 330608
MARZO 303178
ABRIL 356670
MAYO 360200
JUNIO 320299
JULIO 407718
AGOSTO 394538
SEPTIEMBRE 371466
OCTUBRE 437252
NOVIEMBRE 405246
DICIEMBRE 463500

4.2 Gráfico mensual

ggplot(despachos_mes, aes(x = MES, y = total_despachos,
                           fill = MES == "DICIEMBRE")) +
  geom_col(width = 0.7, show.legend = FALSE) +
  geom_text(aes(label = comma(total_despachos)),
            vjust = -0.5, size = 3.2, color = COLOR_DESTACADO) +
  scale_fill_manual(values = c(`TRUE` = COLOR_DESTACADO, `FALSE` = COLOR_PRINCIPAL)) +
  scale_y_continuous(labels = comma, expand = expansion(mult = c(0, 0.15))) +
  labs(
    title = "Cantidad de despachos aduaneros por mes - 2024",
    subtitle = "Dirección Nacional de Ingresos Tributarios (DNIT)",
    x = NULL, y = "Cantidad de despachos"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    plot.title = element_text(face = "bold", color = COLOR_DESTACADO),
    plot.subtitle = element_text(color = "grey40"),
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank()
  )

Diciembre (resaltado en el gráfico) se observa como el mes con mayor cantidad de despachos del año, con un mínimo en marzo (303.178) y un máximo en diciembre (463.500).

5 Comparación: diciembre vs. resto del año

5.1 Promedio y diferencia

promedio_otros <- despachos_mes %>%
  filter(MES != "DICIEMBRE") %>%
  summarise(promedio = mean(total_despachos)) %>%
  pull(promedio)

diciembre_valor <- despachos_mes %>%
  filter(MES == "DICIEMBRE") %>%
  pull(total_despachos)

diferencia <- diciembre_valor - promedio_otros
porcentaje_variacion <- (diferencia / promedio_otros) * 100

cat("Promedio de despachos (enero-noviembre):", comma(round(promedio_otros, 1)), "\n")
## Promedio de despachos (enero-noviembre): 364,520
cat("Despachos en diciembre:                 ", comma(diciembre_valor), "\n")
## Despachos en diciembre:                  463,500
cat("Diferencia absoluta:                    ", comma(round(diferencia, 1)), "\n")
## Diferencia absoluta:                     98,980
cat("Variación porcentual:                   ", round(porcentaje_variacion, 2), "%\n")
## Variación porcentual:                    27.15 %

5.2 Gráfico comparativo

comparacion <- data.frame(
  Grupo = factor(c("Promedio Ene-Nov", "Diciembre"),
                  levels = c("Promedio Ene-Nov", "Diciembre")),
  Valor = c(promedio_otros, diciembre_valor)
)

ggplot(comparacion, aes(x = Grupo, y = Valor, fill = Grupo)) +
  geom_col(width = 0.5, show.legend = FALSE) +
  geom_text(aes(label = comma(round(Valor, 0))),
            vjust = -0.5, size = 4, color = COLOR_DESTACADO) +
  scale_fill_manual(values = c("Promedio Ene-Nov" = COLOR_GRIS,
                                "Diciembre" = COLOR_DESTACADO)) +
  scale_y_continuous(labels = comma, expand = expansion(mult = c(0, 0.15))) +
  labs(
    title = "Diciembre vs. promedio de los demás meses",
    subtitle = paste0("Diciembre superó el promedio en un ", round(porcentaje_variacion, 2), "%"),
    x = NULL, y = "Cantidad de despachos"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(face = "bold", color = COLOR_DESTACADO),
    plot.subtitle = element_text(color = "grey40"),
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank()
  )

Diciembre presentó una variación del 27.15% respecto al promedio de enero a noviembre.

6 Análisis estadístico

6.1 Estadística descriptiva completa

estadisticas <- despachos_mes %>%
  summarise(
    promedio_general = mean(total_despachos),
    desvio_estandar   = sd(total_despachos),
    minimo            = min(total_despachos),
    maximo            = max(total_despachos),
    coef_variacion    = (sd(total_despachos) / mean(total_despachos)) * 100
  )

kable(estadisticas,
      col.names = c("Promedio general", "Desvío estándar", "Mínimo", "Máximo", "CV (%)"),
      digits = 2,
      caption = "Estadística descriptiva de los despachos aduaneros mensuales - 2024") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
Estadística descriptiva de los despachos aduaneros mensuales - 2024
Promedio general Desvío estándar Mínimo Máximo CV (%)
372768.2 49959.36 303178 463500 13.4

Un coeficiente de variación de 13.4% indica una dispersión moderada entre los meses del año, lo que hace más relevante que diciembre se ubique como el valor máximo absoluto.

6.2 Prueba t de una muestra

Se aplicó una prueba t de una muestra para determinar si la diferencia observada en diciembre es estadísticamente significativa, comparando los valores de enero a noviembre contra el valor de diciembre.

otros_meses <- despachos_mes %>%
  filter(MES != "DICIEMBRE") %>%
  pull(total_despachos)

prueba_t <- t.test(otros_meses, mu = diciembre_valor)
prueba_t
## 
##  One Sample t-test
## 
## data:  otros_meses
## t = -7.6376, df = 10, p-value = 1.763e-05
## alternative hypothesis: true mean is not equal to 463500
## 95 percent confidence interval:
##  335644.0 393395.6
## sample estimates:
## mean of x 
##  364519.8

6.3 Intervalo de confianza

prueba_t$conf.int
## [1] 335644.0 393395.6
## attr(,"conf.level")
## [1] 0.95

El valor de diciembre (463,500) se encuentra fuera del intervalo de confianza del 95% calculado para el promedio de enero a noviembre (335,644 – 393,396), y el valor p obtenido (1.76e-05) es considerablemente menor a 0.05.

7 Conclusión

Con base en la evidencia obtenida, se acepta la hipótesis planteada: durante diciembre de 2024 se registró una mayor cantidad de despachos aduaneros en comparación con el promedio de los demás meses del año. Esta conclusión se sustenta en tres resultados convergentes:

  1. Diciembre presentó el valor máximo del año, un 27.15% por encima del promedio de enero a noviembre.
  2. Dicho valor se ubica fuera del intervalo de confianza del 95% del resto de los meses.
  3. La prueba t de una muestra arrojó un valor p muy por debajo del umbral de significancia de 0.05, descartando que la diferencia se deba al azar.

Limitaciones: el análisis se basó exclusivamente en el conteo total de despachos por mes, sin desagregar por tipo de operación, rubro o aduana de registro, y sin contrastar con datos de años anteriores. Se recomienda incorporar estas dimensiones en un análisis posterior.