Carga y Visualización de la estructura de los datos


str(Datos_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 ...


Este Data.frame contiene 6 variables:

1. Anio.mes: Esta varuable contiene el año y mes de los datos registrados, en un solo número, los primeros cuatro dígitos de izquierda a derecha corresponden al año, seguidos de dos dígitos que corresponden al mes. Para una visualización más clara voy a crear una variable a partir de esta con nombre mes, de tipo factor (Enero, Febrero, etc.).

2. Codigo.IATA: Contiene el código IATA para los aeropuestor censados con tres letras mayusculas. Esta variable es de tipo cadena de texto.

3. Descripcion: Contiene la ciudad correspondiente al aeropuerto. Es de tipo cadena de texto.

4. Estado: Contiene el estado de la Républica Mexicana en donde se encuentra el aeropuerto. Es de tipo de cadena de texto.

5. Pasajeros.nacionales: Contiene el total de pasajeros de vuelos nacionales. Es de tipo número entero.

6. Pasajeros.internacionales: Contiene el total de pasajeros de vuelos internacionales. Es de tipo número entero.

Las variables de tipo cadena de texto las trasfomaré en tipo factor con el siguiente código:

#primero recodifica el anio.mes a mes y la vuelvo tipo factor 
Datos_pasajeros <- Datos_pasajeros %>%
  mutate(Mes = recode(as.factor(Anio.mes),
                      "201501" = "Enero",
                      "201502" = "Febrero",
                      "201503" = "Marzo",
                      "201504" = "Abril",
                      "201505" = "Mayo",
                      "201506" = "Junio",
                      "201507" = "Julio",
                      "201508" = "Agosto",
                      "201509" = "Septiembre",
                      "201510" = "Octubre",
                      "201511" = "Noviembre",
                      "201512" = "Diciembre"))

#transformo el tipo de dato a factor
Datos_pasajeros=Datos_pasajeros %>%
  mutate(Codigo.IATA=as.factor(Codigo.IATA),
         Descripcion=as.factor(Descripcion),
         Estado=as.factor(Estado))


Resúmenes numéricos y tablas de frecuencias


Usé la función “skim” para generar un resumen estadístico, y comparar con la función “summary”. La principal diferencia que veo es en la presentación de los datos en eskim se agurpan los resumenes de los datos categóricos por separado de los númericos, a estos últimos les calcula la desviación estandar, y pone un histograma.

# Función "summary" del código base de R
summary(Datos_pasajeros)
##     Anio.mes       Codigo.IATA             Descripcion 
##  Min.   :201501   CEN    : 12   Campeche         : 12  
##  1st Qu.:201504   CLQ    : 12   Chetumal         : 12  
##  Median :201507   CME    : 12   Ciudad del Carmen: 12  
##  Mean   :201507   CPE    : 12   Ciudad Obregon   : 12  
##  3rd Qu.:201509   CTM    : 12   Ciudad Victoria  : 12  
##  Max.   :201512   CVM    : 12   Colima           : 12  
##                   (Other):144   (Other)          :144  
##                   Estado   Pasajeros.nacionales Pasajeros.internacionales
##  Sonora              :36   Min.   :   63        Min.   :   0.0           
##  Tamaulipas          :36   1st Qu.: 1198        1st Qu.:   7.0           
##  Campeche            :24   Median : 7947        Median : 107.0           
##  Puebla              :24   Mean   :10608        Mean   : 818.2           
##  Baja California  Sur:12   3rd Qu.:14884        3rd Qu.: 584.0           
##  Colima              :12   Max.   :56418        Max.   :7042.0           
##  (Other)             :72                                                 
##       Mes     
##  Enero  : 18  
##  Febrero: 18  
##  Marzo  : 18  
##  Abril  : 18  
##  Mayo   : 18  
##  Junio  : 18  
##  (Other):108
# Función "skim" de la librería "Skimr"
skim(Datos_pasajeros)
Data summary
Name Datos_pasajeros
Number of rows 216
Number of columns 7
_______________________
Column type frequency:
factor 4
numeric 3
________________________
Group variables None

Variable type: factor

skim_variable n_missing complete_rate ordered n_unique top_counts
Codigo.IATA 0 1 FALSE 18 CEN: 12, CLQ: 12, CME: 12, CPE: 12
Descripcion 0 1 FALSE 18 Cam: 12, Che: 12, Ciu: 12, Ciu: 12
Estado 0 1 FALSE 12 Son: 36, Tam: 36, Cam: 24, Pue: 24
Mes 0 1 FALSE 12 Ene: 18, Feb: 18, Mar: 18, Abr: 18

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
Anio.mes 0 1 201506.50 3.46 201501 201503.8 201506.5 201509.25 201512 ▇▅▅▅▇
Pasajeros.nacionales 0 1 10608.42 11609.62 63 1198.5 7947.0 14883.75 56418 ▇▃▁▁▁
Pasajeros.internacionales 0 1 818.25 1522.77 0 7.0 107.0 584.00 7042 ▇▁▁▁▁


Usando la librería “janitor”, con la función “tabyl” se pueden generar tablas de frecuencias y de contingencia de dos variables.

Datos_pasajeros%>%
  tabyl(Mes, Estado)%>%
  adorn_totals(c("row", "col"))%>%
    adorn_percentages("all") %>% # Calcula porcentajes sobre el total general
  adorn_pct_formatting(digits = 1, rounding = "half up") %>% # Formatea como porcentaje (%)
  adorn_ns(position = "front") # Añade el conteo original (N) delante del porcentaje
##         Mes Baja California  Sur   Campeche    Colima Michoacan   Nayarit
##       Enero             1 (0.5%)  2  (0.9%)  1 (0.5%)  1 (0.5%)  1 (0.5%)
##     Febrero             1 (0.5%)  2  (0.9%)  1 (0.5%)  1 (0.5%)  1 (0.5%)
##       Marzo             1 (0.5%)  2  (0.9%)  1 (0.5%)  1 (0.5%)  1 (0.5%)
##       Abril             1 (0.5%)  2  (0.9%)  1 (0.5%)  1 (0.5%)  1 (0.5%)
##        Mayo             1 (0.5%)  2  (0.9%)  1 (0.5%)  1 (0.5%)  1 (0.5%)
##       Junio             1 (0.5%)  2  (0.9%)  1 (0.5%)  1 (0.5%)  1 (0.5%)
##       Julio             1 (0.5%)  2  (0.9%)  1 (0.5%)  1 (0.5%)  1 (0.5%)
##      Agosto             1 (0.5%)  2  (0.9%)  1 (0.5%)  1 (0.5%)  1 (0.5%)
##  Septiembre             1 (0.5%)  2  (0.9%)  1 (0.5%)  1 (0.5%)  1 (0.5%)
##     Octubre             1 (0.5%)  2  (0.9%)  1 (0.5%)  1 (0.5%)  1 (0.5%)
##   Noviembre             1 (0.5%)  2  (0.9%)  1 (0.5%)  1 (0.5%)  1 (0.5%)
##   Diciembre             1 (0.5%)  2  (0.9%)  1 (0.5%)  1 (0.5%)  1 (0.5%)
##       Total            12 (5.6%) 24 (11.1%) 12 (5.6%) 12 (5.6%) 12 (5.6%)
##     Oaxaca     Puebla Quintana Roo San Luis Potosi     Sonora Tamaulipas
##   1 (0.5%)  2  (0.9%)     1 (0.5%)        1 (0.5%)  3  (1.4%)  3  (1.4%)
##   1 (0.5%)  2  (0.9%)     1 (0.5%)        1 (0.5%)  3  (1.4%)  3  (1.4%)
##   1 (0.5%)  2  (0.9%)     1 (0.5%)        1 (0.5%)  3  (1.4%)  3  (1.4%)
##   1 (0.5%)  2  (0.9%)     1 (0.5%)        1 (0.5%)  3  (1.4%)  3  (1.4%)
##   1 (0.5%)  2  (0.9%)     1 (0.5%)        1 (0.5%)  3  (1.4%)  3  (1.4%)
##   1 (0.5%)  2  (0.9%)     1 (0.5%)        1 (0.5%)  3  (1.4%)  3  (1.4%)
##   1 (0.5%)  2  (0.9%)     1 (0.5%)        1 (0.5%)  3  (1.4%)  3  (1.4%)
##   1 (0.5%)  2  (0.9%)     1 (0.5%)        1 (0.5%)  3  (1.4%)  3  (1.4%)
##   1 (0.5%)  2  (0.9%)     1 (0.5%)        1 (0.5%)  3  (1.4%)  3  (1.4%)
##   1 (0.5%)  2  (0.9%)     1 (0.5%)        1 (0.5%)  3  (1.4%)  3  (1.4%)
##   1 (0.5%)  2  (0.9%)     1 (0.5%)        1 (0.5%)  3  (1.4%)  3  (1.4%)
##   1 (0.5%)  2  (0.9%)     1 (0.5%)        1 (0.5%)  3  (1.4%)  3  (1.4%)
##  12 (5.6%) 24 (11.1%)    12 (5.6%)       12 (5.6%) 36 (16.7%) 36 (16.7%)
##   Veracruz        Total
##   1 (0.5%)  18   (8.3%)
##   1 (0.5%)  18   (8.3%)
##   1 (0.5%)  18   (8.3%)
##   1 (0.5%)  18   (8.3%)
##   1 (0.5%)  18   (8.3%)
##   1 (0.5%)  18   (8.3%)
##   1 (0.5%)  18   (8.3%)
##   1 (0.5%)  18   (8.3%)
##   1 (0.5%)  18   (8.3%)
##   1 (0.5%)  18   (8.3%)
##   1 (0.5%)  18   (8.3%)
##   1 (0.5%)  18   (8.3%)
##  12 (5.6%) 216 (100.0%)


### Histograma de pasajeros nacionales

ggplot(Datos_pasajeros, aes(x=Pasajeros.nacionales)) +
geom_histogram(binwidth =8000, fill="darkblue",
color="black", alpha =0.7) +
labs( title="Histograma de Pasajeros Nacionales", 
      x="Número de Pasajeros", y="Frecuencia")

En el histograma se observa que el numero de pasajeros nacionales tiene un sesgo negativo, porque el máximo de pasajeros es de 56418 pasajeros y la media se encuentra 10608 pasajeros y la mediana es de 7947.

Gráfico de barras del total de pasajeros por estado

Datos_pasajeros_sum=Datos_pasajeros%>%
  group_by(Estado)%>%
  summarise(
    total_pasajeros=sum(Pasajeros.nacionales)+sum(Pasajeros.internacionales)
  )
ggplot(Datos_pasajeros_sum, aes(x=Estado, y=total_pasajeros))+
  geom_bar(stat = "identity", fill="green", color="black")+
  labs(title = "Gráfico de Barras del Total de pasajeros por Estado" , x="Estado" , y="Total de Pasajeros")


Un boxplot para analizar la dispersión de pasajeros por mes

en todos los mese hay datos atipicos con más de 40 mil pasajeros nacionales

ggplot(Datos_pasajeros, aes(x=Mes, y=Pasajeros.nacionales))+
  geom_boxplot(fill="orange", color="black", alpha=0.7)+
  labs(title = "Dispersión de pasajeros nacionales por mes", x="Meses", y="Pasajeros")

Un gráfico que relacione una variable numérica y una categórica

El aeropuerto con más pasajeros es el CME con más de 40 mil, es el aeropuerto que genera los datos atipicos en las gráficas anteriores

ggplot(Datos_pasajeros, aes(x=Codigo.IATA, y=Pasajeros.nacionales))+
  geom_boxplot(fill="pink", color="black", alpha=0.7)+
  labs(title = "Dispersión de pasajeros nacionales por Aeropuerto", x="Aeropuerto", y="Pasajeros")


Un gráfico que relacione dos variables numéricas


ggplot(Datos_pasajeros, aes(x=Pasajeros.nacionales, y=Pasajeros.internacionales))+
  geom_point(color="brown", size=4, alpha=0.7)+
  labs(title = "relación pasajeros nacionales e internacionales", x="nacionales",
       y="internacionales")