El presente trabajo ofrece un análisis comparativo entre las aduanas de los puertos de Lázaro Cárdenas y Manzanillo, dos de los principales nodos logísticos del comercio exterior mexicano. Utilizando datos simulados para el periodo 2020–2025, se examinan indicadores clave como demoras de buques, tiempos aduanales, bloqueos ferroviarios y un índice general de congestión. A través de visualizaciones realizadas en R, se identifican patrones, tendencias y contrastes relevantes entre ambos puertos. Asimismo, se incluye un modelo estadístico básico que permite ilustrar cómo se puede analizar la evolución de la congestión en el tiempo. Finalmente, se presentan conclusiones y recomendaciones fundamentadas en los resultados obtenidos.
Las aduanas marítimas desempeñan un papel fundamental en la eficiencia del comercio internacional. En particular, los puertos mexicanos de Lázaro Cárdenas y Manzanillo concentran una proporción considerable del tráfico de contenedores del Pacífico. No obstante, ambos enfrentan dificultades logísticas que impactan la fluidez de las operaciones: congestión en patios, demoras en buques, saturación aduanal y conflictos sociales que repercuten en la conectividad terrestre.
El propósito de este documento es:
Realizar un análisis cuantitativo comparativo de ambos puertos.
Presentar visualizaciones claras y ordenadas para comunicar hallazgos.
Ejemplificar el uso de R como herramienta para crear reportes reproducibles.
Integrar un modelo estadístico básico para explicar la tendencia de la congestión.
Se trabajó con un conjunto de datos simulado que incluye los siguientes indicadores:
Demora de buques (horas)
Demora aduanal (horas)
Días de bloqueo ferroviario por año
Índice de congestión portuaria (escala 0–100)
Los indicadores se generaron para ambos puertos en el periodo 2020–2025.
library(tidyverse)
library(broom)
datos_anuales <- tibble(
anio = rep(2020:2025, each = 2),
puerto = rep(c("Lázaro Cárdenas", "Manzanillo"), times = 6),
demora_buque_h = c(20, 28,
18, 30,
22, 32,
24, 34,
26, 36,
24, 30),
demora_aduana_h = c(10, 16,
11, 18,
12, 20,
13, 22,
14, 24,
12, 18),
dias_bloqueo_ferrocarril = c(28, 0,
17, 0,
20, 0,
15, 0,
12, 0,
10, 0),
indice_congestion = c(60, 75,
58, 78,
62, 80,
65, 82,
68, 84,
66, 81)
)
# Datos derivados para análisis adicionales
datos_demoras <- datos_anuales %>%
mutate(demora_total = demora_buque_h + demora_aduana_h)
datos_largo <- datos_anuales %>%
select(anio, puerto, demora_buque_h, demora_aduana_h) %>%
pivot_longer(cols = starts_with("demora"),
names_to = "tipo_demora",
values_to = "horas") %>%
mutate(tipo_demora = recode(tipo_demora,
demora_buque_h = "Demora de buque",
demora_aduana_h = "Demora aduanal"))
Los datos permiten observar diferencias estructurales entre ambos puertos:
Manzanillo presenta mayores tiempos tanto en buques como en procesos aduanales.
Lázaro Cárdenas enfrenta más días de bloqueo ferroviario.
El índice de congestión es consistentemente más alto en Manzanillo.
A continuación se presentan las visualizaciones correspondientes.
Esta sección reúne varias gráficas que permiten observar la evolución de los indicadores en el tiempo y la comparación directa entre ambos puertos.
Esta gráfica muestra la evolución de las horas promedio de demora de buques en cada puerto.
ggplot(datos_anuales, aes(x = anio, y = demora_buque_h, color = puerto)) +
geom_line(linewidth = 1.3) +
geom_point(size = 3) +
labs(
title = "Demora promedio de buques (horas)",
x = "Año",
y = "Horas"
)
La siguiente gráfica refleja los tiempos de despacho y revisión aduanal.
ggplot(datos_anuales, aes(x = anio, y = demora_aduana_h, color = puerto)) +
geom_line(linewidth = 1.3) +
geom_point(size = 3) +
labs(
title = "Demora promedio en procesos aduanales",
x = "Año",
y = "Horas"
)
En este caso se aprecia claramente la diferencia entre un puerto sin bloqueos (Manzanillo) y otro con afectaciones recurrentes (Lázaro Cárdenas).
ggplot(datos_anuales, aes(x = anio, y = dias_bloqueo_ferrocarril, fill = puerto)) +
geom_col(position = "dodge") +
labs(
title = "Días de bloqueo ferroviario por año",
x = "Año",
y = "Días"
)
El índice de congestión integra varias dimensiones del desempeño logístico.
ggplot(datos_anuales, aes(x = anio, y = indice_congestion, color = puerto)) +
geom_line(linewidth = 1.3) +
geom_point(size = 3) +
labs(
title = "Índice general de congestión (2020–2025)",
x = "Año",
y = "Índice de congestión"
)
Esta gráfica permite comparar, dentro de cada puerto, cuánto tiempo se va en demoras de buques y cuánto en procesos aduanales.
ggplot(datos_largo, aes(x = factor(anio), y = horas, fill = tipo_demora)) +
geom_col(position = "dodge") +
facet_wrap(~ puerto) +
labs(
title = "Comparación de demoras de buques y aduanas por año",
x = "Año",
y = "Horas promedio",
fill = "Tipo de demora"
)
A continuación se explora la relación entre la demora total (buque + aduana) y el índice de congestión
ggplot(datos_demoras, aes(x = demora_total, y = indice_congestion, color = puerto)) +
geom_point(size = 3) +
geom_smooth(method = "lm", se = FALSE) +
labs(
title = "Relación entre demora total e índice de congestión",
x = "Demora total (buque + aduana, horas)",
y = "Índice de congestión"
)
La tendencia positiva indica que, en general, a mayor demora total se observa un mayor nivel de congestión, lo cual es consistente con la lógica operativa de los puertos.
Aunque se cuenta con pocos años, es posible ilustrar la distribución del índice de congestión mediante un diagrama de cajas.
ggplot(datos_anuales, aes(x = puerto, y = indice_congestion, fill = puerto)) +
geom_boxplot(width = 0.6) +
labs(
title = "Distribución del índice de congestión por puerto",
x = "Puerto",
y = "Índice de congestión"
)
Esta gráfica refuerza la idea de que Manzanillo presenta niveles de congestión sistemáticamente más elevados que Lázaro Cárdenas.
Los resultados obtenidos permiten plantear varias reflexiones:
1 Naturaleza distinta de los problemas
En Manzanillo, la problemática se concentra en la congestión interna: demoras de buques, saturación de patios y tiempos aduanales elevados.
En Lázaro Cárdenas, los indicadores muestran un mayor impacto de los bloqueos ferroviarios, que limitan la salida de la carga hacia el interior del país, aun cuando las maniobras portuarias sean relativamente eficientes.
2 Impacto en la cadena logística
Las demoras y bloqueos se traducen en:
Incremento de costos logísticos para navieras, agentes aduanales, transportistas y usuarios finales.
Mayor incertidumbre en los tiempos de entrega y cumplimiento de contratos.
Posible desvío de cargas hacia otros puertos, nacionales o extranjeros, con mejores condiciones operativas.
3 Complementariedad y competencia entre puertos
Idealmente, ambos puertos podrían complementarse:
Manzanillo seguiría siendo un puerto líder en volumen, pero con medidas que reduzcan su congestión.
Lázaro Cárdenas podría aprovechar su capacidad instalada y su conexión ferroviaria, siempre que se atiendan los problemas sociales y de seguridad que originan bloqueos.
Manzanillo presenta mayores tiempos de demora en buques y procesos aduanales, así como un índice de congestión más elevado, lo que sugiere una sobrecarga de su infraestructura operativa.
Lázaro Cárdenas enfrenta un problema distinto: la recurrencia de bloqueos ferroviarios, que afectan la salida de mercancías, aun cuando las demoras portuarias y aduanales son relativamente menores.
La combinación de congestión interna y conflictos externos genera un panorama complejo para el comercio exterior mexicano en el Pacífico.
Desde una perspectiva de política pública, se requiere:
Inversión en infraestructura portuaria y de transporte.
Mejora de procesos aduanales y digitalización.
Atención integral a los conflictos sociales y de seguridad que afectan las vías férreas.
Aduanas de México. (2024). Informe anual de operaciones portuarias. Gobierno de México.
Cepal. (2023). Logística portuaria y tendencias en América Latina. Comisión Económica para América Latina y el Caribe.
SCT. (2022). Diagnóstico de infraestructura portuaria en México. Secretaría de Comunicaciones y Transportes.
Haralambides, H. (2019). Port economics and policy. Maritime Economics & Logistics, 21(1), 1–8.