R Markdown

Carga y visualiza la estructura del dataframe, para verificar la asignación correcta del tipo de dato.

library(janitor)     # Herramientas para limpiar y organizar datos
## 
## Adjuntando el paquete: 'janitor'
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test
library(tidyverse)   # Conjunto de paquetes para manipulacion y visualizacion de datos
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.1     ✔ stringr   1.5.2
## ✔ ggplot2   4.0.0     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.1.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(lubridate)   # Herramientas para trabajar con fechas y horas
library(graphics)    # Representacion grafica de datos

# Establecer directorio de trabajo
setwd("C:/OSCAR/RESPALDO CESAR/OSCAR/CURSOS/R DGTIC OCT 2025/Ej3")
getwd()
## [1] "C:/OSCAR/RESPALDO CESAR/OSCAR/CURSOS/R DGTIC OCT 2025/Ej3"
# Importacion de datos. Se hace la codificación UTF-8 y el formato recomendado para los nombres de las variables
pasajeros <- read.csv("C:/OSCAR/RESPALDO CESAR/OSCAR/CURSOS/R DGTIC OCT 2025/Ej3/S5_ASA_estadisticasPasajeros.csv", header=TRUE, sep=",", encoding = "UTF-8")
pasajeros <- clean_names(pasajeros)

# Una vez que se corrigen los nombres de las variables se verifica los nombres asignados
names(pasajeros)
## [1] "anio_mes"                  "codigo_iata"              
## [3] "descripcion"               "estado"                   
## [5] "pasajeros_nacionales"      "pasajeros_internacionales"
# Se revisa la estructura de los datos
str(pasajeros)
## 'data.frame':    216 obs. of  6 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 ...
dim(pasajeros)
## [1] 216   6
# Se tiene una base de datos con 216 filas y 6 columnas
# Con head corroboramos que los tipos de variables definidos con str son correctos 
head(pasajeros)
##   anio_mes codigo_iata       descripcion       estado pasajeros_nacionales
## 1   201501         CEN    Ciudad Obregon       Sonora                17149
## 2   201501         CLQ            Colima       Colima                 8486
## 3   201501         CME Ciudad del Carmen     Campeche                56079
## 4   201501         CPE          Campeche     Campeche                13264
## 5   201501         CTM          Chetumal Quintana Roo                13153
## 6   201501         CVM   Ciudad Victoria   Tamaulipas                 4695
##   pasajeros_internacionales
## 1                       721
## 2                       124
## 3                      3126
## 4                       215
## 5                         0
## 6                       139
# Para detectar si hay duplicados 
datos_unicos <- distinct(pasajeros)

Se puede observar que tenemos 216 filas y 6 variables. Los nombres originales han sido modificados de acuerdo a los estándares de programación recomendadas en R. Se tiene que la variable anio_mes, pasajeros_nacionales y pasajeros_internacionales son de tipo numérico mientras que codigo_iata, descripcion y estado son variables tipo cadena. No se observaron duplicados.

Realiza los resúmenes numéricos de las variables pasajeros nacionales e internacionales.

Caracterizacion del comportamiento general de los datos. Estadisticas básicas globales

Se presentan las estadísticas básicas para el número total de pasajeros nacionales e internacionales así como desagregadas por mes.

summary(pasajeros$pasajeros_nacionales)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##      63    1198    7947   10608   14884   56418
summary(pasajeros$pasajeros_internacionales)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0     7.0   107.0   818.2   584.0  7042.0
# Estadisticas basicas de pasajeros por mes
pasajeros %>%
  group_by(anio_mes) %>%
  summarise(
    pas_nal_media = mean(pasajeros_nacionales),
    pas_nal_min = min(pasajeros_nacionales),
    pas_nal_max = max(pasajeros_nacionales),
    
    pas_inter_media = mean(pasajeros_internacionales),
    pas_inter_min = min(pasajeros_internacionales),
    pas_inter_max = max(pasajeros_internacionales),
    ) %>%
  arrange(anio_mes) 
## # A tibble: 12 × 7
##    anio_mes pas_nal_media pas_nal_min pas_nal_max pas_inter_media pas_inter_min
##       <int>         <dbl>       <int>       <int>           <dbl>         <int>
##  1   201501        10355.         108       56079            779.             0
##  2   201502         8970.         204       48255            759.             0
##  3   201503        10647.         172       50333            880.             0
##  4   201504        10251.          89       47173            863.             0
##  5   201505        10268.         158       49967            853.             0
##  6   201506        10243.          89       48395            771.             0
##  7   201507        11606.         162       50061            795.             0
##  8   201508        10885.         131       44891            843.             0
##  9   201509         9636.          98       44283            679.             0
## 10   201510        10681.          63       48342            822.             0
## 11   201511        11207.          91       46957            890.             0
## 12   201512        12552.         135       56418            886.             0
## # ℹ 1 more variable: pas_inter_max <int>

El promedio global para pajajeros nacionales es de 7,947 y para pasajeros internacionales es de 107.

Considerando los meses, en pasajeros nacionales se tiene que en octubre del 2015 se presentó el número mínimo de pasajeros transportados (63), mientras que el máximo se presenta en diciembre con 56,418 pasajeros. Esta diferencia tan grande puede suponerse a que en el mes de diciembre las personas suelen trasladarse a pasar las fiestas decembrinas con sus familiares.

Para pasajeros internacionales el mínimo global y por mes es cero, esto es, hay aeropuertos que no presentan vuelos internacionales con pasajeros transportados. El número máximo de pasajeros internacionales transportados corresponde al mes de agosto.

A continuación se presentan estas mismas estadísticas básicas en un concentrado de estado y aeropuertos.

# Estadisticas basicas de pasajeros por estado y codigo de aeropuerto
pasajeros %>%
  group_by(estado, codigo_iata) %>%
  summarise(
    pas_nal_media = mean(pasajeros_nacionales),
    pas_nal_min = min(pasajeros_nacionales),
    pas_nal_max = max(pasajeros_nacionales),
    
    pas_inter_media = mean(pasajeros_internacionales),
    pas_inter_min = min(pasajeros_internacionales),
    pas_inter_max = max(pasajeros_internacionales),
    
  ) %>%
  arrange(estado)
## `summarise()` has grouped output by 'estado'. You can override using the
## `.groups` argument.
## # A tibble: 18 × 8
## # Groups:   estado [12]
##    estado      codigo_iata pas_nal_media pas_nal_min pas_nal_max pas_inter_media
##    <chr>       <chr>               <dbl>       <int>       <int>           <dbl>
##  1 Baja Calif… LTO                 1050.         651        1708         3775.  
##  2 Campeche    CME                49263.       44283       56418         2667.  
##  3 Campeche    CPE                14892.       12797       16645          253.  
##  4 Colima      CLQ                 9388         7267       12295           77.2 
##  5 Michoacan   UPN                 7970.        5581       10370         1203.  
##  6 Nayarit     TPQ                 9420.        7062       14143            0   
##  7 Oaxaca      PXM                15142.       11025       21871          302   
##  8 Puebla      PBC                22063.       16316       26609         5255.  
##  9 Puebla      TCN                  234.         153         337            0   
## 10 Quintana R… CTM                14938.       11110       18830            9.83
## 11 San Luis P… TSL                  133.          63         205            0   
## 12 Sonora      CEN                19867.       15430       24333          590.  
## 13 Sonora      GYM                 1063.         772        1322          345.  
## 14 Sonora      NOG                  218.          98         342           29.6 
## 15 Tamaulipas  CVM                 6124.        4695        8116          139.  
## 16 Tamaulipas  MAM                 8079.        6443        9845           58.9 
## 17 Tamaulipas  NLD                 6057.        5221        7499           24.2 
## 18 Veracruz    PAZ                 5048.        4276        5756            0   
## # ℹ 2 more variables: pas_inter_min <int>, pas_inter_max <int>

El aeropuerto que transporta menos pasajeros nacionales está identificado como TSL en San Luis Potosí con 63 pasajeros. El aeropuerto con más movilidad de pasajeros está en Campeche (CME) con 56,148 y . En el caso de los pasajeros internacionales, varios aeropuertos presentan nula movilidad, estos aeropuertos se encuentran en los estados de Nayarit (TPQ), Puebla (TCN), San Luis Potosí (TSL) y Veracruz (PAZ).

Como se mencionó anteriormente, el aeropuerto de Campeche (CME) es que transporta más pasajeros nacionales con 56,418, le sigue el estado de Puebla (PBC) con 26,609 pasajeros. En el caso de los pasajeros nacionales, Puebla (PBC) tiene el máximo con 7,042 pasajeros.

En las siguientes tablas veremos la participación porcentual del total de pasajeros de los aeropuertos y estados para una mejor identificación.

# Participacion porcentual de cada aeropuerto para pasajeros nacionales en el total global
pasajeros %>%
  group_by(codigo_iata) %>%
  summarise(
    total_nal = sum(pasajeros_nacionales)
  ) %>%
  mutate(
    porcentaje_nal = round(100 * total_nal / sum(total_nal), 2)
  ) %>%
  arrange(desc(porcentaje_nal))
## # A tibble: 18 × 3
##    codigo_iata total_nal porcentaje_nal
##    <chr>           <int>          <dbl>
##  1 CME            591154          25.8 
##  2 PBC            264755          11.6 
##  3 CEN            238409          10.4 
##  4 PXM            181706           7.93
##  5 CTM            179259           7.82
##  6 CPE            178710           7.8 
##  7 TPQ            113043           4.93
##  8 CLQ            112656           4.92
##  9 MAM             96947           4.23
## 10 UPN             95635           4.17
## 11 CVM             73491           3.21
## 12 NLD             72688           3.17
## 13 PAZ             60575           2.64
## 14 GYM             12757           0.56
## 15 LTO             12602           0.55
## 16 TCN              2812           0.12
## 17 NOG              2622           0.11
## 18 TSL              1598           0.07
# Participacion porcentual de cada aeropuerto para pasajeros internacionales en el total global
pasajeros %>%
  group_by(codigo_iata) %>%
  summarise(
    total_inter = sum(pasajeros_internacionales)
  ) %>%
  mutate(
    porcentaje_inter = round(100 * total_inter / sum(total_inter), 2)
  ) %>%
  arrange(desc(porcentaje_inter))
## # A tibble: 18 × 3
##    codigo_iata total_inter porcentaje_inter
##    <chr>             <int>            <dbl>
##  1 PBC               63056            35.7 
##  2 LTO               45305            25.6 
##  3 CME               32000            18.1 
##  4 UPN               14432             8.17
##  5 CEN                7083             4.01
##  6 GYM                4138             2.34
##  7 PXM                3624             2.05
##  8 CPE                3041             1.72
##  9 CVM                1665             0.94
## 10 CLQ                 927             0.52
## 11 MAM                 707             0.4 
## 12 NOG                 355             0.2 
## 13 NLD                 290             0.16
## 14 CTM                 118             0.07
## 15 PAZ                   0             0   
## 16 TCN                   0             0   
## 17 TPQ                   0             0   
## 18 TSL                   0             0

Genera tablas de frecuencias para las variables categóricas.

# Crea una tabla de frecuencias para la variable estados y su frecuencia relativa
pasajeros %>%
  tabyl(estado) %>%
  adorn_totals("row") %>%
  adorn_pct_formatting(digits = 2)
##                estado   n percent
##  Baja California  Sur  12   5.56%
##              Campeche  24  11.11%
##                Colima  12   5.56%
##             Michoacan  12   5.56%
##               Nayarit  12   5.56%
##                Oaxaca  12   5.56%
##                Puebla  24  11.11%
##          Quintana Roo  12   5.56%
##       San Luis Potosi  12   5.56%
##                Sonora  36  16.67%
##            Tamaulipas  36  16.67%
##              Veracruz  12   5.56%
##                 Total 216 100.00%

Los estados de Sonora y Tamaulipas son los que más aportan con 3 aeropuertos cada uno. Campeche y Puebla, que son los estados que presentan mayor número de pasajeros, cuentan con dos aeropuertos en cada entidad.

Crea gráficos descriptivos.

# Grafico de densidad de pasajeros nacionales
ggplot(pasajeros, aes(x=pasajeros_nacionales)) +
  geom_density(binwidth=5, fill="blue",
                 color="black", alpha=0.7) +
  labs(title="Densidad de pasajeros nacionales", x="Número de pasajeros", y="Frecuencia")
## Warning in geom_density(binwidth = 5, fill = "blue", color = "black", alpha =
## 0.7): Ignoring unknown parameters: `binwidth`

# Grafico de densidad de pasajeros internacionales
ggplot(pasajeros, aes(x=pasajeros_internacionales)) +
  geom_density(binwidth=5, fill="blue",
               color="black", alpha=0.7) +
  labs(title="Densidad de pasajeros internacionales", x="Número de pasajeros", y="Frecuencia")
## Warning in geom_density(binwidth = 5, fill = "blue", color = "black", alpha =
## 0.7): Ignoring unknown parameters: `binwidth`

En la gráfica para pasajeros nacionales podemos observar que la mayor parte del total de pasajeros es menor de 25,000 y como se ha analizado muy pocos aeropuertos presentan cantidades mayores a 40 mil pasajeros. En el caso de los pasajeros internacionales, la mayor concentración de pasajeros se encuentra en menos de 2,000 pasajeros.

A continuación se presentan las gráficas de barras del total de pasajeros, tanto por estado como por aeropuerto.

Crea gráficos descriptivos.Barras

# Para la gráfica de barras por el total de pasajeros por estado y por aeropuerto
# se hace la suma total
# Suma el numero de pasajeros nacionales por estado
sum_pas_nal_edo <- pasajeros %>%
  group_by(estado) %>%
  summarise(
    suma_nal_edo = sum(pasajeros_nacionales, na.rm = TRUE)
  ) %>%
  arrange(estado)
print(sum_pas_nal_edo)
## # A tibble: 12 × 2
##    estado               suma_nal_edo
##    <chr>                       <int>
##  1 Baja California  Sur        12602
##  2 Campeche                   769864
##  3 Colima                     112656
##  4 Michoacan                   95635
##  5 Nayarit                    113043
##  6 Oaxaca                     181706
##  7 Puebla                     267567
##  8 Quintana Roo               179259
##  9 San Luis Potosi              1598
## 10 Sonora                     253788
## 11 Tamaulipas                 243126
## 12 Veracruz                    60575
# Grafica de barras de totales de pasajeros nacionales por estado
ggplot(sum_pas_nal_edo, aes(x = estado, y = suma_nal_edo)) +
  geom_bar(stat = "identity", fill="green", color="black", alpha
           =0.7) +
  labs(title="Grafico de barras de pasajeros nacionales"
       , x="Estado", y="Total")

# Suma el numero de pasajeros nacionales por aeropuerto
sum_pas_nal_iata <- pasajeros %>%
  group_by(codigo_iata) %>%
  summarise(
    suma_nal_iata = sum(pasajeros_nacionales, na.rm = TRUE)
  ) %>%
  arrange(codigo_iata)
print(sum_pas_nal_iata)
## # A tibble: 18 × 2
##    codigo_iata suma_nal_iata
##    <chr>               <int>
##  1 CEN                238409
##  2 CLQ                112656
##  3 CME                591154
##  4 CPE                178710
##  5 CTM                179259
##  6 CVM                 73491
##  7 GYM                 12757
##  8 LTO                 12602
##  9 MAM                 96947
## 10 NLD                 72688
## 11 NOG                  2622
## 12 PAZ                 60575
## 13 PBC                264755
## 14 PXM                181706
## 15 TCN                  2812
## 16 TPQ                113043
## 17 TSL                  1598
## 18 UPN                 95635
# Grafica de barras de totales de pasajeros nacionales por aeropuerto
ggplot(sum_pas_nal_iata, aes(x = codigo_iata, y = suma_nal_iata)) +
  geom_bar(stat = "identity", fill="green", color="black", alpha
           =0.7) +
  labs(title="Grafico de barras de pasajeros nacionales"
       , x="Aeropuerto IATA", y="Total")

COn la gráfica de barras por estado podemos confirmar que Campeche ocupa por mucho, el primer lugar en la transportación de pasajeros nacionales, le sigue Puebla, Sonora y Tamaulipas.

# Suma el numero de pasajeros internacionales por estado
sum_pas_inter_edo <- pasajeros %>%
  group_by(estado) %>%
  summarise(
    suma_inter_edo = sum(pasajeros_internacionales, na.rm = TRUE)
  ) %>%
  arrange(estado)
print(sum_pas_inter_edo)
## # A tibble: 12 × 2
##    estado               suma_inter_edo
##    <chr>                         <int>
##  1 Baja California  Sur          45305
##  2 Campeche                      35041
##  3 Colima                          927
##  4 Michoacan                     14432
##  5 Nayarit                           0
##  6 Oaxaca                         3624
##  7 Puebla                        63056
##  8 Quintana Roo                    118
##  9 San Luis Potosi                   0
## 10 Sonora                        11576
## 11 Tamaulipas                     2662
## 12 Veracruz                          0
# Grafica de barras de totales de pasajeros internacionales por estado
ggplot(sum_pas_inter_edo, aes(x = estado, y = suma_inter_edo)) +
  geom_bar(stat = "identity", fill="green", color="black", alpha
           =0.7) +
  labs(title="Grafico de barras de pasajeros internacionales"
       , x="Estado", y="Total")

# Suma el numero de pasajeros internacionales por aeropuerto
sum_pas_inter_iata <- pasajeros %>%
  group_by(codigo_iata) %>%
  summarise(
    suma_inter_iata = sum(pasajeros_internacionales, na.rm = TRUE)
  ) %>%
  arrange(codigo_iata)
print(sum_pas_inter_iata)
## # A tibble: 18 × 2
##    codigo_iata suma_inter_iata
##    <chr>                 <int>
##  1 CEN                    7083
##  2 CLQ                     927
##  3 CME                   32000
##  4 CPE                    3041
##  5 CTM                     118
##  6 CVM                    1665
##  7 GYM                    4138
##  8 LTO                   45305
##  9 MAM                     707
## 10 NLD                     290
## 11 NOG                     355
## 12 PAZ                       0
## 13 PBC                   63056
## 14 PXM                    3624
## 15 TCN                       0
## 16 TPQ                       0
## 17 TSL                       0
## 18 UPN                   14432
# Grafica de barras de totales de pasajeros nacionales por aeropuerto
ggplot(sum_pas_inter_iata, aes(x = codigo_iata, y = suma_inter_iata)) +
  geom_bar(stat = "identity", fill="green", color="black", alpha
           =0.7) +
  labs(title="Grafico de barras de pasajeros internacionales"
       , x="Aeropuerto IATA", y="Total")

En la gráfica correspondiente a pasajeros internacionales por estado y aeropuerto, Puebla (PBC) ocupa la primera posición seguido por Baja California Sur (LTO).

Gráfico tipo boxplot para analizar la dispersión de pasajeros por mes.

# Graficos de boxplot de pasajeros nacionales por aeropuerto
ggplot(pasajeros, aes(x =codigo_iata, y = pasajeros_nacionales)) +
  geom_boxplot()

# Graficos de boxplot de pasajeros internacionales por aeropuerto
ggplot(pasajeros, aes(x =codigo_iata, y = pasajeros_internacionales)) +
  geom_boxplot()

# Graficos de boxplot de pasajeros nacionales por estado
ggplot(pasajeros, aes(x =estado, y = pasajeros_nacionales)) +
  geom_boxplot()

# Graficos de boxplot de pasajeros internacionales por estado
ggplot(pasajeros, aes(x =estado, y = pasajeros_internacionales)) +
  geom_boxplot()