Este reporte presenta un análisis descriptivo de los datos de pasajeros aéreos en México durante 2015. Se examinarán las características principales del tráfico aéreo, identificando patrones por estado, aeropuerto y tipo de pasajero (nacional e internacional).
# Cargar librerías necesarias
library(ggplot2)
library(dplyr)
library(tidyr)
library(knitr)
# Cargar los datos
datos <- read.csv("/Users/lorenaumana/Desktop/Curso R/datos/S5_ASA_estadisticasPasajeros.csv",
stringsAsFactors = FALSE)
# Crear columnas adicionales para facilitar el análisis
datos$mes <- as.numeric(substr(datos$Anio.mes, 5, 6))
datos$total_pasajeros <- datos$Pasajeros.nacionales + datos$Pasajeros.internacionales
# Visualizar estructura
str(datos)
## 'data.frame': 216 obs. of 8 variables:
## $ Anio.mes : int 201501 201501 201501 201501 201501 201501 201501 201501 201501 201501 ...
## $ Codigo.IATA : chr "CEN" "CLQ" "CME" "CPE" ...
## $ Descripcion : chr "Ciudad Obregon" "Colima" "Ciudad del Carmen" "Campeche" ...
## $ Estado : chr "Sonora" "Colima" "Campeche" "Campeche" ...
## $ Pasajeros.nacionales : int 17149 8486 56079 13264 13153 4695 1315 1050 6684 5609 ...
## $ Pasajeros.internacionales: int 721 124 3126 215 0 139 386 2684 61 10 ...
## $ mes : num 1 1 1 1 1 1 1 1 1 1 ...
## $ total_pasajeros : int 17870 8610 59205 13479 13153 4834 1701 3734 6745 5619 ...
# Vista previa de los primeros registros
head(datos, 10) %>% kable()
| Anio.mes | Codigo.IATA | Descripcion | Estado | Pasajeros.nacionales | Pasajeros.internacionales | mes | total_pasajeros |
|---|---|---|---|---|---|---|---|
| 201501 | CEN | Ciudad Obregon | Sonora | 17149 | 721 | 1 | 17870 |
| 201501 | CLQ | Colima | Colima | 8486 | 124 | 1 | 8610 |
| 201501 | CME | Ciudad del Carmen | Campeche | 56079 | 3126 | 1 | 59205 |
| 201501 | CPE | Campeche | Campeche | 13264 | 215 | 1 | 13479 |
| 201501 | CTM | Chetumal | Quintana Roo | 13153 | 0 | 1 | 13153 |
| 201501 | CVM | Ciudad Victoria | Tamaulipas | 4695 | 139 | 1 | 4834 |
| 201501 | GYM | Guaymas | Sonora | 1315 | 386 | 1 | 1701 |
| 201501 | LTO | Loreto | Baja California Sur | 1050 | 2684 | 1 | 3734 |
| 201501 | MAM | Matamoros | Tamaulipas | 6684 | 61 | 1 | 6745 |
| 201501 | NLD | Nuevo Laredo | Tamaulipas | 5609 | 10 | 1 | 5619 |
Interpretación: El dataframe contiene 216 registros de tráfico aéreo mensual en diferentes aeropuertos mexicanos durante 2015. Las variables incluyen información temporal (año-mes), identificación del aeropuerto (código IATA y descripción), ubicación geográfica (estado) y volúmenes de pasajeros diferenciados por tipo (nacionales e internacionales).
# Seleccionar variables numéricas
vars_numericas <- datos %>%
select(Pasajeros.nacionales, Pasajeros.internacionales, total_pasajeros)
# Resumen estadístico general
summary(vars_numericas)
## Pasajeros.nacionales Pasajeros.internacionales total_pasajeros
## Min. : 63 Min. : 0.0 Min. : 63
## 1st Qu.: 1198 1st Qu.: 7.0 1st Qu.: 4463
## Median : 7947 Median : 107.0 Median : 8264
## Mean :10608 Mean : 818.2 Mean :11427
## 3rd Qu.:14884 3rd Qu.: 584.0 3rd Qu.:15079
## Max. :56418 Max. :7042.0 Max. :59205
# Estadísticas descriptivas detalladas
estadisticas <- vars_numericas %>%
summarise(across(everything(),
list(Media = ~mean(., na.rm = TRUE),
Mediana = ~median(., na.rm = TRUE),
Desv_Std = ~sd(., na.rm = TRUE),
Mínimo = ~min(., na.rm = TRUE),
Máximo = ~max(., na.rm = TRUE)))) %>%
pivot_longer(everything(),
names_to = c("Variable", "Estadística"),
names_sep = "_(?=[^_]+$)") %>%
pivot_wider(names_from = Estadística, values_from = value)
kable(estadisticas,
digits = 0,
caption = "Estadísticas descriptivas de variables numéricas",
format.args = list(big.mark = ","))
| Variable | Media | Mediana | Std | Mínimo | Máximo |
|---|---|---|---|---|---|
| Pasajeros.nacionales | 10,608 | 7,947 | NA | 63 | 56,418 |
| Pasajeros.nacionales_Desv | NA | NA | 11,610 | NA | NA |
| Pasajeros.internacionales | 818 | 107 | NA | 0 | 7,042 |
| Pasajeros.internacionales_Desv | NA | NA | 1,523 | NA | NA |
| total_pasajeros | 11,427 | 8,264 | NA | 63 | 59,205 |
| total_pasajeros_Desv | NA | NA | 12,311 | NA | NA |
Interpretación: Los resúmenes numéricos revelan que en promedio se registraron 11,427 pasajeros totales por aeropuerto-mes. La alta desviación estándar indica una gran variabilidad entre aeropuertos, con algunos manejando volúmenes muy superiores al promedio. Los pasajeros nacionales representan la mayor proporción del tráfico aéreo.
# Tabla de frecuencia por Estado
cat("### Distribución por Estado\n\n")
## ### Distribución por Estado
tabla_estado <- datos %>%
group_by(Estado) %>%
summarise(Frecuencia = n(),
Total_Pasajeros = sum(total_pasajeros)) %>%
arrange(desc(Total_Pasajeros)) %>%
mutate(Porcentaje = round(100 * Frecuencia / sum(Frecuencia), 2))
kable(tabla_estado,
caption = "Frecuencia de registros y total de pasajeros por Estado",
format.args = list(big.mark = ","))
| Estado | Frecuencia | Total_Pasajeros | Porcentaje |
|---|---|---|---|
| Campeche | 24 | 804,905 | 11.11 |
| Puebla | 24 | 330,623 | 11.11 |
| Sonora | 36 | 265,364 | 16.67 |
| Tamaulipas | 36 | 245,788 | 16.67 |
| Oaxaca | 12 | 185,330 | 5.56 |
| Quintana Roo | 12 | 179,377 | 5.56 |
| Colima | 12 | 113,583 | 5.56 |
| Nayarit | 12 | 113,043 | 5.56 |
| Michoacan | 12 | 110,067 | 5.56 |
| Veracruz | 12 | 60,575 | 5.56 |
| Baja California Sur | 12 | 57,907 | 5.56 |
| San Luis Potosi | 12 | 1,598 | 5.56 |
# Tabla de frecuencia por Aeropuerto (Top 15)
cat("\n\n### Top 15 Aeropuertos más frecuentes\n\n")
##
##
## ### Top 15 Aeropuertos más frecuentes
tabla_aeropuerto <- datos %>%
group_by(Descripcion, Estado) %>%
summarise(Registros = n(),
Total_Pasajeros = sum(total_pasajeros),
.groups = 'drop') %>%
arrange(desc(Total_Pasajeros)) %>%
head(15)
kable(tabla_aeropuerto,
caption = "Top 15 aeropuertos por volumen total de pasajeros",
format.args = list(big.mark = ","))
| Descripcion | Estado | Registros | Total_Pasajeros |
|---|---|---|---|
| Ciudad del Carmen | Campeche | 12 | 623,154 |
| Puebla | Puebla | 12 | 327,811 |
| Ciudad Obregon | Sonora | 12 | 245,492 |
| Puerto Escondido | Oaxaca | 12 | 185,330 |
| Campeche | Campeche | 12 | 181,751 |
| Chetumal | Quintana Roo | 12 | 179,377 |
| Colima | Colima | 12 | 113,583 |
| Tepic | Nayarit | 12 | 113,043 |
| Uruapan | Michoacan | 12 | 110,067 |
| Matamoros | Tamaulipas | 12 | 97,654 |
| Ciudad Victoria | Tamaulipas | 12 | 75,156 |
| Nuevo Laredo | Tamaulipas | 12 | 72,978 |
| Poza Rica | Veracruz | 12 | 60,575 |
| Loreto | Baja California Sur | 12 | 57,907 |
| Guaymas | Sonora | 12 | 16,895 |
Interpretación: Las tablas de frecuencia muestran que ciertos estados y aeropuertos concentran la mayor parte del tráfico aéreo. Los estados con mayor actividad aeroportuaria corresponden a las principales zonas metropolitanas del país, reflejando su importancia económica y poblacional.
# Agregación 1: Total de pasajeros por estado
pasajeros_estado <- datos %>%
group_by(Estado) %>%
summarise(Total_Nacionales = sum(Pasajeros.nacionales),
Total_Internacionales = sum(Pasajeros.internacionales),
Total_General = sum(total_pasajeros),
Porcentaje_Nacionales = round(100 * sum(Pasajeros.nacionales) / sum(total_pasajeros), 1)) %>%
arrange(desc(Total_General)) %>%
head(10)
kable(pasajeros_estado,
caption = "Top 10 estados con mayor número de pasajeros en 2015",
format.args = list(big.mark = ","))
| Estado | Total_Nacionales | Total_Internacionales | Total_General | Porcentaje_Nacionales |
|---|---|---|---|---|
| Campeche | 769,864 | 35,041 | 804,905 | 95.6 |
| Puebla | 267,567 | 63,056 | 330,623 | 80.9 |
| Sonora | 253,788 | 11,576 | 265,364 | 95.6 |
| Tamaulipas | 243,126 | 2,662 | 245,788 | 98.9 |
| Oaxaca | 181,706 | 3,624 | 185,330 | 98.0 |
| Quintana Roo | 179,259 | 118 | 179,377 | 99.9 |
| Colima | 112,656 | 927 | 113,583 | 99.2 |
| Nayarit | 113,043 | 0 | 113,043 | 100.0 |
| Michoacan | 95,635 | 14,432 | 110,067 | 86.9 |
| Veracruz | 60,575 | 0 | 60,575 | 100.0 |
# Agregación 2: Comportamiento mensual
pasajeros_mes <- datos %>%
group_by(mes) %>%
summarise(Promedio_Nacionales = mean(Pasajeros.nacionales),
Promedio_Internacionales = mean(Pasajeros.internacionales),
Total_Nacional = sum(Pasajeros.nacionales),
Total_Internacional = sum(Pasajeros.internacionales),
Total_Mes = sum(total_pasajeros)) %>%
arrange(mes) %>%
mutate(Mes = c("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio",
"Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"))
kable(pasajeros_mes %>% select(Mes, Total_Mes, Total_Nacional, Total_Internacional),
caption = "Volumen total de pasajeros por mes en 2015",
format.args = list(big.mark = ","),
col.names = c("Mes", "Total Pasajeros", "Nacional", "Internacional"))
| Mes | Total Pasajeros | Nacional | Internacional |
|---|---|---|---|
| Enero | 200,397 | 186,383 | 14,014 |
| Febrero | 175,127 | 161,468 | 13,659 |
| Marzo | 207,481 | 191,647 | 15,834 |
| Abril | 200,050 | 184,513 | 15,537 |
| Mayo | 200,170 | 184,818 | 15,352 |
| Junio | 198,253 | 184,373 | 13,880 |
| Julio | 223,230 | 208,912 | 14,318 |
| Agosto | 211,092 | 195,924 | 15,168 |
| Septiembre | 185,674 | 173,456 | 12,218 |
| Octubre | 207,051 | 192,252 | 14,799 |
| Noviembre | 217,746 | 201,733 | 16,013 |
| Diciembre | 241,889 | 225,940 | 15,949 |
# Agregación 3: Proporción nacional vs internacional por aeropuerto
proporcion_tipo <- datos %>%
group_by(Descripcion, Estado) %>%
summarise(Total_Nacionales = sum(Pasajeros.nacionales),
Total_Internacionales = sum(Pasajeros.internacionales),
Total = sum(total_pasajeros),
Porcentaje_Internacional = round(100 * sum(Pasajeros.internacionales) / sum(total_pasajeros), 1),
.groups = 'drop') %>%
arrange(desc(Porcentaje_Internacional)) %>%
head(10)
kable(proporcion_tipo,
caption = "Top 10 aeropuertos con mayor proporción de pasajeros internacionales",
format.args = list(big.mark = ","))
| Descripcion | Estado | Total_Nacionales | Total_Internacionales | Total | Porcentaje_Internacional |
|---|---|---|---|---|---|
| Loreto | Baja California Sur | 12,602 | 45,305 | 57,907 | 78.2 |
| Guaymas | Sonora | 12,757 | 4,138 | 16,895 | 24.5 |
| Puebla | Puebla | 264,755 | 63,056 | 327,811 | 19.2 |
| Uruapan | Michoacan | 95,635 | 14,432 | 110,067 | 13.1 |
| Nogales | Sonora | 2,622 | 355 | 2,977 | 11.9 |
| Ciudad del Carmen | Campeche | 591,154 | 32,000 | 623,154 | 5.1 |
| Ciudad Obregon | Sonora | 238,409 | 7,083 | 245,492 | 2.9 |
| Ciudad Victoria | Tamaulipas | 73,491 | 1,665 | 75,156 | 2.2 |
| Puerto Escondido | Oaxaca | 181,706 | 3,624 | 185,330 | 2.0 |
| Campeche | Campeche | 178,710 | 3,041 | 181,751 | 1.7 |
Interpretación: Las agregaciones revelan patrones importantes: se observa que los aeropuertos con mayor tráfico corresponden a las zonas metropolitanas, mientras que los estados con menor flujo presentan alta variabilidad mensual. Además, se identifican meses con mayor demanda, probablemente asociados a temporadas vacacionales. Los aeropuertos turísticos muestran mayores proporciones de tráfico internacional.
ggplot(datos, aes(x = Pasajeros.nacionales)) +
geom_histogram(bins = 30, fill = "steelblue", color = "black", alpha = 0.7) +
labs(title = "Distribución de Pasajeros Nacionales",
subtitle = "Frecuencia de registros según volumen de pasajeros nacionales en 2015",
x = "Número de pasajeros nacionales",
y = "Frecuencia") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, size = 11)) +
scale_x_continuous(labels = scales::comma)
Interpretación: El histograma muestra una distribución fuertemente asimétrica hacia la derecha, con la mayoría de los registros concentrados en volúmenes bajos de pasajeros nacionales (menores a 50,000). Esto indica que la mayoría de los aeropuertos-mes tienen tráfico moderado, mientras que unos pocos presentan volúmenes excepcionales que pueden superar los 200,000 pasajeros mensuales.
top_estados <- datos %>%
group_by(Estado) %>%
summarise(total = sum(total_pasajeros)) %>%
arrange(desc(total)) %>%
head(15)
ggplot(top_estados, aes(x = reorder(Estado, total), y = total)) +
geom_bar(stat = "identity", fill = "coral", color = "black", alpha = 0.8) +
coord_flip() +
labs(title = "Top 15 Estados por Volumen Total de Pasajeros",
subtitle = "Suma de pasajeros nacionales e internacionales en 2015",
x = "Estado",
y = "Total de pasajeros") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, size = 11)) +
scale_y_continuous(labels = scales::comma) +
geom_text(aes(label = scales::comma(total)), hjust = -0.1, size = 3)
Interpretación: El gráfico de barras identifica claramente la concentración del tráfico aéreo en unos pocos estados. Los tres primeros estados acumulan la mayor parte del tráfico nacional, reflejando la importancia de sus aeropuertos como hubs principales de conectividad. Esta concentración coincide con las principales zonas metropolitanas y destinos turísticos del país.
datos$mes_nombre <- factor(datos$mes,
levels = 1:12,
labels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun",
"Jul", "Ago", "Sep", "Oct", "Nov", "Dic"))
ggplot(datos, aes(x = mes_nombre, y = total_pasajeros)) +
geom_boxplot(fill = "lightgreen", color = "darkgreen", alpha = 0.7, outlier.color = "red") +
labs(title = "Distribución de Pasajeros Totales por Mes",
subtitle = "Análisis de dispersión y valores atípicos en 2015",
x = "Mes",
y = "Total de pasajeros (nacionales + internacionales)") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, size = 11)) +
scale_y_continuous(labels = scales::comma)
Interpretación: El boxplot revela patrones estacionales en el tráfico aéreo. Se observa que ciertos meses como marzo, julio y diciembre presentan medianas más altas, probablemente asociados a periodos vacacionales (Semana Santa, vacaciones de verano y fin de año). Los valores atípicos superiores corresponden a aeropuertos con tráfico extraordinariamente alto.
# Preparar datos en formato largo
datos_largo <- datos %>%
select(Descripcion, Estado, Pasajeros.nacionales, Pasajeros.internacionales) %>%
pivot_longer(cols = c(Pasajeros.nacionales, Pasajeros.internacionales),
names_to = "Tipo",
values_to = "Pasajeros") %>%
mutate(Tipo = ifelse(Tipo == "Pasajeros.nacionales", "Nacional", "Internacional"))
ggplot(datos_largo, aes(x = Tipo, y = Pasajeros, fill = Tipo)) +
geom_violin(alpha = 0.6, trim = FALSE) +
geom_boxplot(width = 0.2, alpha = 0.8, outlier.alpha = 0.3) +
labs(title = "Distribución de Pasajeros por Tipo",
subtitle = "Comparación entre pasajeros nacionales e internacionales",
x = "Tipo de pasajero",
y = "Número de pasajeros") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, size = 11),
legend.position = "none") +
scale_y_continuous(labels = scales::comma) +
scale_fill_manual(values = c("Nacional" = "#66C2A5", "Internacional" = "#FC8D62"))
Interpretación: La combinación de violin plot y boxplot permite comparar la distribución del tráfico nacional versus el internacional. Los pasajeros nacionales presentan mayor volumen promedio y mayor variabilidad, con una distribución que sugiere algunos aeropuertos con tráfico nacional muy intenso. El tráfico internacional, aunque generalmente menor, también muestra valores atípicos significativos en aeropuertos con fuerte vocación turística o de conectividad internacional.
# Agregar por aeropuerto para mejor visualización
datos_aeropuerto <- datos %>%
group_by(Descripcion, Estado) %>%
summarise(Total_Nacionales = sum(Pasajeros.nacionales),
Total_Internacionales = sum(Pasajeros.internacionales),
.groups = 'drop')
ggplot(datos_aeropuerto, aes(x = Total_Nacionales, y = Total_Internacionales)) +
geom_point(alpha = 0.6, color = "purple", size = 3) +
geom_smooth(method = "lm", color = "red", se = TRUE, linewidth = 1) +
labs(title = "Relación entre Pasajeros Nacionales e Internacionales",
subtitle = "Correlación por aeropuerto - Totales anuales 2015",
x = "Total de pasajeros nacionales",
y = "Total de pasajeros internacionales") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, size = 11)) +
scale_x_continuous(labels = scales::comma) +
scale_y_continuous(labels = scales::comma)
# Calcular coeficiente de correlación
correlacion <- cor(datos_aeropuerto$Total_Nacionales,
datos_aeropuerto$Total_Internacionales)
Coeficiente de correlación de Pearson: 0.419
Interpretación: El diagrama de dispersión revela una correlación positiva moderada-alta (r = 0.419) entre el tráfico nacional e internacional. Esto indica que los aeropuertos con mayor volumen de pasajeros nacionales tienden también a manejar más tráfico internacional, sugiriendo economías de escala y una red de conectividad integrada. Sin embargo, existen aeropuertos especializados que se desvían de esta tendencia, algunos enfocados principalmente en tráfico doméstico y otros en conexiones internacionales.
# Clasificar meses en temporadas
datos_temporada <- datos %>%
mutate(Temporada = case_when(
mes %in% c(7, 8, 12) ~ "Alta",
mes %in% c(1, 2, 9) ~ "Baja",
TRUE ~ "Media"
))
comparacion_temporada <- datos_temporada %>%
group_by(Temporada) %>%
summarise(Promedio_Total = mean(total_pasajeros),
Total = sum(total_pasajeros),
Registros = n())
kable(comparacion_temporada,
caption = "Comparación de tráfico por temporada",
format.args = list(big.mark = ","),
digits = 0)
| Temporada | Promedio_Total | Total | Registros |
|---|---|---|---|
| Alta | 12,522 | 676,211 | 54 |
| Baja | 10,393 | 561,198 | 54 |
| Media | 11,396 | 1,230,751 | 108 |
# Gráfico de comparación
ggplot(datos_temporada, aes(x = Temporada, y = total_pasajeros, fill = Temporada)) +
geom_boxplot(alpha = 0.7) +
labs(title = "Comparación de Volumen de Pasajeros por Temporada",
subtitle = "Clasificación: Alta (Jul, Ago, Dic), Media (Mar-Jun, Oct-Nov), Baja (Ene, Feb, Sep)",
x = "Temporada",
y = "Total de pasajeros") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, size = 10),
legend.position = "none") +
scale_y_continuous(labels = scales::comma) +
scale_fill_manual(values = c("Alta" = "#E41A1C", "Media" = "#FDB462", "Baja" = "#377EB8"))
Interpretación: El análisis por temporadas confirma la existencia de estacionalidad en el tráfico aéreo. Los meses de temporada alta muestran mayor volumen promedio de pasajeros, coincidiendo con periodos vacacionales tradicionales en México.
Concentración en pocos aeropuertos: La mayoría del tráfico aéreo se concentra en unos cuantos estados y aeropuertos grandes (principalmente en zonas metropolitanas). Estos funcionan como los aeropuertos principales del país.
Más pasajeros nacionales que internacionales: Los vuelos nacionales tienen muchos más pasajeros que los internacionales. Sin embargo, los aeropuertos más grandes tienden a tener tanto tráfico nacional como internacional alto.
Temporadas altas y bajas: Hay meses con más pasajeros que otros. Los picos se ven en julio, agosto y diciembre, que coinciden con las vacaciones escolares y de fin de año.
Gran diferencia entre aeropuertos: Hay aeropuertos con pocos miles de pasajeros al mes y otros con cientos de miles. Esto depende del tamaño de la ciudad, la infraestructura disponible y la demanda de la región.
Áreas de oportunidad: Los estados y aeropuertos con menos tráfico podrían beneficiarse de mejoras en conectividad e infraestructura para aumentar su uso.
En resumen, el sistema aeroportuario mexicano muestra una clara concentración en las principales ciudades, con patrones de demanda relacionados a periodos vacacionales y grandes diferencias entre aeropuertos pequeños y grandes.
sessionInfo()
## R version 4.5.1 (2025-06-13)
## Platform: x86_64-apple-darwin20
## Running under: macOS Monterey 12.7.6
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/4.5-x86_64/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.5-x86_64/Resources/lib/libRlapack.dylib; LAPACK version 3.12.1
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## time zone: America/Mexico_City
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] knitr_1.50 tidyr_1.3.1 dplyr_1.1.4 ggplot2_4.0.0
##
## loaded via a namespace (and not attached):
## [1] Matrix_1.7-3 gtable_0.3.6 jsonlite_2.0.0 compiler_4.5.1
## [5] tidyselect_1.2.1 jquerylib_0.1.4 splines_4.5.1 scales_1.4.0
## [9] yaml_2.3.10 fastmap_1.2.0 lattice_0.22-7 R6_2.6.1
## [13] labeling_0.4.3 generics_0.1.4 tibble_3.3.0 bslib_0.9.0
## [17] pillar_1.10.2 RColorBrewer_1.1-3 rlang_1.1.6 cachem_1.1.0
## [21] xfun_0.52 sass_0.4.10 S7_0.2.0 cli_3.6.5
## [25] withr_3.0.2 magrittr_2.0.3 mgcv_1.9-3 digest_0.6.37
## [29] grid_4.5.1 rstudioapi_0.17.1 lifecycle_1.0.4 nlme_3.1-168
## [33] vctrs_0.6.5 evaluate_1.0.4 glue_1.8.0 farver_2.1.2
## [37] rmarkdown_2.29 purrr_1.0.4 tools_4.5.1 pkgconfig_2.0.3
## [41] htmltools_0.5.8.1