Análisis de la encuesta Así Vamos 2024

Problemática

En Nuevo León persisten importantes desigualdades en las condiciones de movilidad urbana, las cuales se manifiestan de manera diferenciada según el género, la edad y la zona de residencia de las personas. Estas disparidades se reflejan en aspectos como el medio de transporte utilizado, la duración de los trayectos y la frecuencia con la que las personas deben desplazarse. Los grupos en situación de mayor vulnerabilidad; particularmente mujeres, personas jóvenes o adultas mayores, así como habitantes de zonas periféricas, enfrentan mayores obstáculos para acceder a una movilidad eficiente, segura y asequible. Esta situación limita significativamente su acceso equitativo a oportunidades, lo que contribuye a la reproducción de las desigualdades sociales y económicas en la entidad.

La elección de esta problemática responde a la necesidad de visibilizar cómo las condiciones de movilidad en Nuevo León no son neutrales, sino que están profundamente marcadas por factores sociodemográficos. En un contexto urbano donde el acceso a servicios, empleo y educación depende en gran medida de la capacidad de desplazamiento, las brechas en movilidad representan una barrera estructural para el desarrollo equitativo de la población.

Preguntas de investigación tentativas

1.- ¿Qué diferencias existen en los medios de transporte y tiempos de traslado entre grupos de edad, género y localidades en Nuevo León, según la información obtenida en la encuesta de cómo vamos 2024?

2.-¿Cómo afectan las condiciones de movilidad al acceso a oportunidades laborales de las personas en distintos contextos sociodemográficos de Nuevo León, según la información obtenida en la encuesta de cómo vamos 2024?

Variables a utilizar y justificación

  1. sexo_num: Permite analizar las diferencias de movilidad según el sexo biológico.

  2. genero_num: Aporta una perspectiva más inclusiva y actualizada del género.

  3. nom_mun_mv: Localiza espacialmente a las personas encuestadas para comparar desigualdades entre municipios.

  4. nom_loc_mv: Permite análisis más precisos dentro de cada municipio, detectando diferencias urbanas vs. rurales o centrales vs. periféricas.

  5. colonia: Aporta microdatos territoriales útiles para análisis georreferenciados.

  6. mun_amm_y_periferia: Clasifica el lugar de residencia en zonas metropolitanas, periféricas o resto del estado.

  7. cp4_1: Registra la edad exacta.

  8. rangos_edad: Facilita el análisis por grupos etarios, identificando necesidades diferenciadas de movilidad entre jóvenes, adultos y mayores.

  9. p7_8: Indica si el empleo ofrece transporte privado, revelando posibles diferencias según sector laboral o nivel socioeconómico.

  10. p13: Muestra el motivo del traslado (trabajo, estudio, salud, etc.), necesario para vincular movilidad con acceso a oportunidades.

  11. p15: Permite medir la frecuencia semanal de traslados para evaluar esfuerzo de movilidad.

  12. p16: Identifica el municipio de destino de los viajes, lo que permite analizar patrones de desplazamiento intermunicipal.

  13. p17: Complementa la información del destino principal.

  14. p18: Revela el tipo de transporte utilizado.

  15. tiempo_espera: Mide cuánto tiempo se espera el transporte.

  16. p21: Informa si hubo transbordo.

  17. p22: Cuantifica los transbordos.

  18. tiempo_total_traslado: Mide la duración total del viaje redondo.

  19. costo_total_viaje_redondo: Mide el gasto monetario en movilidad.

  20. usa_transporte_publico: Variable dicotómica que permite identificar usuarios frecuentes de transporte público y asociarlos con condiciones de vulnerabilidad.

  21. p31_3: Evalúa la percepción de seguridad en el transporte público, relevante para analizar desigualdades de género.

  22. p31_6: Indica si el transporte está climatizado, lo cual impacta en la calidad y dignidad del servicio, especialmente en zonas de calor extremo.

  23. p32: Mide la percepción sobre la tarifa, indicador subjetivo que puede variar según nivel socioeconómico.

  24. p33_9: Señala fallas tecnológicas en las unidades, relacionadas con eficiencia y accesibilidad del sistema de transporte.

  25. victima_tp: Identifica si la persona ha sido víctima de acoso en el transporte público, dato fundamental para el análisis de género y seguridad.

  26. p39: Indica el número de vehículos en el hogar, lo que permite aproximarse al nivel de dependencia del transporte público.

  27. Factor_CVNL: Permite generalizar los resultados de la muestra a la población objetivo. Representa el número de unidades en la población que cada unidad muestral representa.

  28. p164: Permite ver el ingreso total del hogar.

Selección de variables

# Leer librerías
library(readr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Leer archivo y llamarlo eav2024
eav2024 <- read.csv("~/Desktop/ciencia de datos/data-eav2024.csv")

# Creación de un nuevo Data Frame llamado eav2024_selected, el cual contiene un subconjunto de columnas del archivo original. Para esto se utilizó la función select y el operador dplyr. 
eav2024_selected <- eav2024 %>% select ("sexo_num",
                                   "genero_num",
                                   "nom_mun_mv",
                                   "nom_loc_mv",
                                   "colonia",
                                   "mun_amm_y_periferia",
                                   "cp4_1",
                                   "rangos_edad",
                                   "p7_8",
                                   "p13",
                                   "p15",
                                   "p16",
                                   "p17",
                                   "p18",
                                   "usa_transporte_publico",
                                   "tiempo_espera",
                                   "p21",
                                   "p22",
                                   "tiempo_total_traslado",
                                   "costo_total_viaje_redondo",
                                   "p31_3",
                                   "p31_6",
                                   "p32",
                                   "p33_9",
                                   "victima_tp",
                                   "p39", 
                                   "Factor_CVNL",
                                   "p164"
                                         )
# Se muestran las primeras 6 filas del dataframe llamado eav2024_selected.
head(eav2024_selected)
##   sexo_num genero_num        nom_mun_mv              nom_loc_mv
## 1        1          1 Cadereyta Jiménez       Cadereyta Jiménez
## 2        0          0 Cadereyta Jiménez         Valle del Roble
## 3        1          1 Cadereyta Jiménez       Cadereyta Jiménez
## 4        0          0 Cadereyta Jiménez       Cadereyta Jiménez
## 5        0          0 Cadereyta Jiménez       Cadereyta Jiménez
## 6        1          1  General Escobedo Ciudad General Escobedo
##                       colonia mun_amm_y_periferia cp4_1 rangos_edad p7_8 p13
## 1                    Praderas                   9    50       45-54    0   1
## 2             Valle del Roble                   9    35       35-44    1   1
## 3  Infonavit Jeronimo Treviño                   9    32       25-34   NA   2
## 4            Alfredo V Bonfil                   9    62       55-64    0   8
## 5         Centro De Cadereyta                   9    80    75 o más   NA   8
## 6 Alianza Real Barrio Jalisco                  21    51       45-54   NA   5
##   p15 p16  p17 p18 usa_transporte_publico tiempo_espera p21 p22
## 1   5   9  621   1                      0            NA  NA  NA
## 2   6  31 1048   1                      1            NA  NA  NA
## 3   5   9  621   1                      0            NA  NA  NA
## 4   1   9  392   1                      0            NA  NA  NA
## 5   2   9  439   1                      0            NA  NA  NA
## 6   2  21 1573   1                      1            NA  NA  NA
##   tiempo_total_traslado costo_total_viaje_redondo p31_3 p31_6 p32 p33_9
## 1                    45                        NA    NA    NA  NA    NA
## 2                   100                        NA     1     2   3     1
## 3                    10                        NA    NA    NA  NA    NA
## 4                    10                        NA    NA    NA  NA    NA
## 5                    10                        NA    NA    NA  NA    NA
## 6                    40                        NA  8888     0   3     1
##   victima_tp p39 Factor_CVNL p164
## 1         NA   0    258.2655    2
## 2          0   0    273.0114    3
## 3         NA   1    258.2655    3
## 4         NA   1    273.0114    3
## 5         NA   1    273.0114    3
## 6          1   0   1013.6011    3

##Factor de Expansión

# En esta parte del código se está utilizando la librería survey de R para aplicar factores de expansión (también llamados factores de ponderación o pesos muestrales) a los datos de la encuesta eav2024_selected. Esto permite hacer estimaciones que representan a toda la población y no solo a las personas encuestadas.

#Se cargó la librería survey
library(survey)
## Loading required package: grid
## Loading required package: Matrix
## Loading required package: survival
## 
## Attaching package: 'survey'
## The following object is masked from 'package:graphics':
## 
##     dotchart
# Se creó un objeto de diseño de encuesta diseño_encuesta con: ids = ~1: indica que no hay conglomerados (diseño simple sin estratificación ni muestreo por conglomerados). data = eav2024_selected: es el data frame con los datos seleccionados. weights = eav2024_selected$Factor_CVNL: se aplican los factores de expansión para que los resultados reflejen a la población total y no solo a los encuestados.

diseño_encuesta <- svydesign(ids=~1, 
                             data=eav2024_selected,
                             weights = eav2024_selected$Factor_CVNL) 

# Se calculó la proporción poblacional por género, usando el factor de expansión (Factor_CVNL). Se convierte genero_num en factor porque es categórica.
svymean(~factor(genero_num), diseño_encuesta) 
##                              mean     SE
## factor(genero_num)0    0.49760513 0.0086
## factor(genero_num)1    0.50106381 0.0086
## factor(genero_num)2    0.00031323 0.0003
## factor(genero_num)9999 0.00101783 0.0007
# Se calculó la media ponderada y no ponderada
svymean(~(cp4_1), diseño_encuesta)
##         mean     SE
## cp4_1 47.132 0.2934
mean(eav2024_selected$cp4_1) #Cambia porque aquí no usa los pasos de Factor_CVNL
## [1] 46.83711
# Se calculó el total estimado de veces que la población se ha movido en la semana (p15), ajustado por el factor de expansión.
svytotal(~p15, diseño_encuesta, na.rm=TRUE) #na.rm es para quitar na. P15- El total de la población se ha movido 87190212 veces en la semana
##        total       SE
## p15 87190212 30156013
#La siguiente línea muestra la suma real de los datos sin expansión. Es mucho más baja que la estimación poblacional, lo que demuestra por qué es importante usar los factores de expansión.
sum(eav2024_selected$p15, na.rm=TRUE) #Sin el factor da 81957, por eso hay que poner el factor de expansión con la librería survey y el ~
## [1] 81957

Limpieza de la base de datos

# Se realiza un nuevo dataframe llamado eav2024_clean, el cual cuenta con la base datos limpia.
eav2024_clean <- eav2024_selected %>%
  
mutate(sexo = factor(sexo_num,
                       levels = c(0, 1),
                       labels = c("Hombre", "Mujer"))) %>% #Se agregó como columna nueva al data frame la variable sexo, mediante la función mutate. Se convirtió la variable sexo a un factor con etiquetas; con la finalidad de que sea bueno en visualización en la base de datos y se pueda utilizar para hacer análisis.
  
  
  mutate(municipio=as.factor(nom_mun_mv))%>% #Se hizo factor la variable nom_mun_mv. Cabe aclarar que no todos los municipios tuvieron participación en la encuesta.
  
  mutate(edad=(cp4_1)) %>% #Se le cambió el nombre a la variable cp4_1 por edad.
  
  mutate (categoría_edad = case_when(
      edad < 15 ~ 0, #Las personas menores a 15 años se les denominará 0.
      edad >= 15 & edad < 30 ~ 1, #Las personas entre 15 y 29 años se les denominará 1.
      edad >= 30 & edad < 65 ~ 2, #Las personas entre 30 y 64 años se les denominará 2.
      edad >= 65 ~ 3), #Las personas de 65 años o más se les denominará 3
      categoría_edad = factor(categoría_edad,
                          levels = c(0, 1, 2, 3),
                          labels = c("Infancias", "Juventud", "Adultos", "Tercera Edad"))
  ) %>% #Levels permite utilizar valores numéricos para el análisis y labels permite usar categorías para la visualización de la base de datos.
 
  
  
  mutate(prestacion_transportepriv = factor(p7_8,
                                            levels = c(0, 1, 8888, 9999),
                                            labels = c("No", "Sí", "No sabe", "No contesta"))) %>% #Se cambió el nombre de la variable de p7_8 a prestacion_transportepriv. Se hizo factor con etiquetas la variable prestacion_transportepriv. Levels permite utilizar valores numéricos para el análisis y labels permite usar categorías para la visualización de la base de datos.
  
mutate(motivo_traslado = factor(p13,
                       levels = c(1, 2,3,4,5,6,7,8,9,10,9999),
                       labels = c("Trabajo", "Escuela", "Compras","Médico u hospital", "Diversión", "Acompañar o llevar a alguien", "Banco o pago de servicios", "Visita", "Buscar empleo", "Trámites", "No contesta"))) %>% 
  #Se cambió el nombre de la variable de p13 a motivo_traslado.  Se hizo factor con etiquetas la variable motivo_traslado. Levels permite utilizar valores numéricos para el análisis y labels permite usar categorías para la visualización de la base de datos.
  
  mutate(traslados_semanales_motivo=(p15)) %>% #Se le cambió el nombre a la variable p15 y se le llamó traslados_semanales_motivo. Además de que se incluyó en el nuevo data frame.
  
  mutate(municipio_destino_motivo = factor(p16,
                       levels = c(39, 26,46,6,21,19,49,31,18,48,9,41,10,12,25,45,1,2,4,5,7,8,11,13,14,15,16,17,20,22,23,24,47,28,29,30,31,32,33,3,27,42,34,35,36,37,38,40,43,44,50,51,100,111,8888,9999),
                       labels = c("Monterrey","Guadalupe","San Nicolás de los Garza","Apodaca","Escobedo","San Pedro Garza García","Santiago","Juárez","García","Santa Catarina","Cadereyta", "Pesquería","El Carmen", "Ciénega de Flores", "Zuazua", "Salinas Victoria", "Abasolo", "Agualeguas", "Allende", "Anáhuac", "Aramberri", "Bustamante","Cerralvo", "China","Doctor Arroyo","Doctor Coss","Doctor González","Galeana", "General Bravo", "General Terán","General Treviño","General Zaragoza", "Hidalgo","Higueras","Hualahuises", "Iturbide", "Juárez","Lampazos de Narango", "Linares", "Los Aldamas", "Los Herreras","Los Ramones","Marín","Melchor Ocampo", "Mier y Noriega", "Mina", "Montemorelos", "Parás", "Rayones", "Sabinas Hidalgo", "Vallecillo", "Villaldama","Fuera de Nuevo León","Fuera del país","No Sabe","No contesta"))) %>% 
#Se le cambió el nombre a la variable p16 y se le llamó municipio_destino_motivo. Se hizo factor con etiquetas la variable municipio_destino_motivo. Levels permite utilizar valores numéricos para el análisis y labels permite usar categorías para la visualización de la base de datos.

  mutate(medio_transporte = factor(p18,
                       levels = c(1, 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,8888,9999),
                       labels = c("Pie/silla de ruedas", "Camión/microbus", "Taxi","Uber", "Motocicleta", "Bicicleta", "Metro", "Automóvil", "Transmetro", "Ecovía","Transporte escolar", "Transporte de trabajo", "Camión privado", "Trailer", "Automóvil","Tractor", "Taxi colectivo", "No sabe", "No contesta")))  %>% #Se le cambió el nombre a la variable de p18 a medio_transporte. Se hizo factor con etiquetas la variable medio_transporte. Levels permite utilizar valores numéricos para el análisis y labels permite usar categorías para la visualización de la base de datos.
  
  mutate(usa_transporte_publico= factor(usa_transporte_publico,
                                            levels = c(0, 1),
                                            labels = c("No", "Sí"))) %>% #Se hizo factor con etiquetas la variable motivo_traslado. Levels permite utilizar valores numéricos para el análisis y labels permite usar categorías para la visualización de la base de datos.
  
  mutate(transborda= factor(p21,
                                            levels = c(0, 1),
                                            labels = c("No", "Sí"))) %>% 
 #Se le cambió el nombre a la variable de p21 a transborda. Se hizo factor con etiquetas la variable transborda. Levels permite utilizar valores numéricos para el análisis y labels permite usar categorías para la visualización de la base de datos.
  
  mutate(numero_transbordos = as.numeric(p22)) %>% #Se le cambió el nombre de p22 a numero_transbordos.
  
  mutate(se_siente_seguro_tp = factor(p31_3,
                                            levels = c(0, 1, 8888, 9999),
                                            labels = c("No", "Sí", "No sabe", "No contesta"))) %>% #Se le cambió el nombre a la variable de p31_3 a se_siente_seguro_tp. Se hizo factor con etiquetas la variable se_siente_seguro_tp. Levels permite utilizar valores numéricos para el análisis y labels permite usar categorías para la visualización de la base de datos.
  
  mutate(unidades_climatizadas = factor(p31_6,
                                            levels = c(0, 1, 8888, 9999),
                                            labels = c("No", "Sí", "No sabe", "No contesta"))) %>% #Se le cambió el nombre a la variable de p31_6 a unidades_climatizadas. Se hizo factor con etiquetas la variable unidades_climatizadas. Levels permite utilizar valores numéricos para el análisis y labels permite usar categorías para la visualización de la base de datos.
  
  mutate(Calificacion_transporte = factor(p32,
                       levels = c(1, 2,3,4,5,8888,9999),
                       labels = c("Muy baja","Baja","Adecuada","Alta","Muy alta", "No sabe", "No contesta"))) %>% #Se le cambió el nombre a la variable de p32 a Calificacion_transporte. Se hizo factor con etiquetas la variable Calificacion_transporte. Levels permite utilizar valores numéricos para el análisis y labels permite usar categorías para la visualización de la base de datos.
  
  mutate(Transporte_público_fallas = factor(p33_9,
                                            levels = c(0, 1, 8888, 9999),
                                            labels = c("No", "Sí", "No sabe", "No contesta"))) %>% #Se le cambió el nombre a la variable de p33_9 a Transporte_público_fallas. Se hizo factor con etiquetas la variable Transporte_público_fallas. Levels permite utilizar valores numéricos para el análisis y labels permite usar categorías para la visualización de la base de datos.
  
  mutate(ingresos_nivel_socioeconomico = factor(p164,
                       levels = c(1, 2,3,4,5,6,7,8,9,10,11,12,8888,9999),
                       labels = c("E", "D", "D","D+", "D+", "C", "C", "C+", "C+", "A/B","A/B", "A/B", "No sabe", "No contesta")))%>% #Se le cambió el nombre a la variable de p164 a ingresos_nivel_socioeconomico. Se hizo factor con etiquetas la variable ingresos_nivel_socioeconomico. Levels permite utilizar valores numéricos para el análisis y labels permite usar categorías para la visualización de la base de datos.
  
  
  mutate(victima_tp= factor(victima_tp,
                                            levels = c(0, 1),
                                            labels = c("No", "Sí"))) %>% #Se hizo factor con etiquetas la variable Transporte_público_fallas. Levels permite utilizar valores numéricos para el análisis y labels permite usar categorías para la visualización de la base de datos.

  
   mutate(vehiculos_hogar=(p39)) %>% #Se le cambió el nombre de 9_39 a vehiculos_hogar
  
  select(-colonia, -sexo_num, -genero_num, -nom_loc_mv, -nom_mun_mv, -cp4_1, -mun_amm_y_periferia, -rangos_edad, -p7_8, -p13, -p15, -p16, -p17, -p18, -p32, -p33_9, -p164,-p39, -p21,-p22,-p31_3,-p31_6, -p164, -transborda) #Se utiliza el select (-variable) para eliminar variables del data frame.

Justificación de Imputación

En la base de datos eav2024_clean, y por la forma en que están diseñadas las preguntas sobre movilidad en la encuesta Así Vamos, no es útil ni recomendable hacer imputaciones para la mayoría de las variables. Las variables no están relacionadas entre sí de forma que nos permitan predecir los valores ausentes con confianza. Además, varias variables numéricas tienen más del 40% de datos faltantes, lo cual hace que cualquier intento de rellenarlos artificialmente pueda distorsionar el análisis. Por eso, decidimos trabajar solo con los datos disponibles en esas variables.

Solo se realizó la imputación 3 variables que lo permitían para poder generar un mejor análisis: 1.- Se realizó en ingreso_nivel_socioeconómico, medio_transporte y traslados_semanales_motivo, eliminando las respuestas “No contesta”.

(colSums(is.na(eav2024_clean)) * 100) /4942 # Es un porcentaje de NA por variable
##        usa_transporte_publico                 tiempo_espera 
##                       0.00000                      84.35856 
##         tiempo_total_traslado     costo_total_viaje_redondo 
##                      41.23837                      84.07527 
##                    victima_tp                   Factor_CVNL 
##                      59.57102                       0.00000 
##                          sexo                     municipio 
##                       0.00000                       0.00000 
##                          edad                categoría_edad 
##                       0.00000                       0.00000 
##     prestacion_transportepriv               motivo_traslado 
##                      53.01497                      39.82193 
##    traslados_semanales_motivo      municipio_destino_motivo 
##                      39.82193                      39.86240 
##              medio_transporte            numero_transbordos 
##                      39.82193                      94.67827 
##           se_siente_seguro_tp         unidades_climatizadas 
##                      59.57102                      82.51720 
##       Calificacion_transporte     Transporte_público_fallas 
##                      59.57102                      59.57102 
## ingresos_nivel_socioeconomico               vehiculos_hogar 
##                       0.00000                       0.00000

Imputación

eav2024_clean2 <- eav2024_clean %>%
  filter(ingresos_nivel_socioeconomico != "No contesta") #Se crea un nuevo dataframe llamado eav2024_clean2; en donde se eliminan las filas de ingresos_nivel_socioeconómico donde existe un "No contesta", mediante filter.

eav2024_clean2 <- eav2024_clean %>%
  filter(medio_transporte != "No contesta") #Se crea un nuevo dataframe llamado eav2024_clean2; en donde se eliminan las filas de medio_transporte donde existe un "No contesta", mediante filter. Esto ocasionó que se eliminaran las filas de traslados_semanales_motivo donde existía un "No contesta".

Preguntas de investigación final

1.- ¿Cuánto tiempo usa una persona en transporte en Nuevo León dependiendo en su perfil sociodemográfico, según las información obtenida en la encuesta Cómo Vamos 2024?

Base final de datos

eav2024_final <- eav2024_clean2 %>% select(sexo, edad, categoría_edad, municipio, ingresos_nivel_socioeconomico, medio_transporte, prestacion_transportepriv, vehiculos_hogar, usa_transporte_publico, numero_transbordos, tiempo_espera, tiempo_total_traslado, motivo_traslado, traslados_semanales_motivo, municipio_destino_motivo, costo_total_viaje_redondo, unidades_climatizadas, Transporte_público_fallas, se_siente_seguro_tp, victima_tp, Calificacion_transporte, Factor_CVNL) #Se crea un nuevo data frame con las variables acomodadas para una mejor visualización en la base de datos.

head(eav2024_final) #Se muestran los primeros 6 datos del nuevo dataframe.
##     sexo edad categoría_edad         municipio ingresos_nivel_socioeconomico
## 1  Mujer   50        Adultos Cadereyta Jiménez                             D
## 2 Hombre   35        Adultos Cadereyta Jiménez                             D
## 3  Mujer   32        Adultos Cadereyta Jiménez                             D
## 4 Hombre   62        Adultos Cadereyta Jiménez                             D
## 5 Hombre   80   Tercera Edad Cadereyta Jiménez                             D
## 6  Mujer   51        Adultos  General Escobedo                             D
##      medio_transporte prestacion_transportepriv vehiculos_hogar
## 1 Pie/silla de ruedas                        No               0
## 2 Pie/silla de ruedas                        Sí               0
## 3 Pie/silla de ruedas                      <NA>               1
## 4 Pie/silla de ruedas                        No               1
## 5 Pie/silla de ruedas                      <NA>               1
## 6 Pie/silla de ruedas                      <NA>               0
##   usa_transporte_publico numero_transbordos tiempo_espera tiempo_total_traslado
## 1                     No                 NA            NA                    45
## 2                     Sí                 NA            NA                   100
## 3                     No                 NA            NA                    10
## 4                     No                 NA            NA                    10
## 5                     No                 NA            NA                    10
## 6                     Sí                 NA            NA                    40
##   motivo_traslado traslados_semanales_motivo municipio_destino_motivo
## 1         Trabajo                          5                Cadereyta
## 2         Trabajo                          6                   Juárez
## 3         Escuela                          5                Cadereyta
## 4          Visita                          1                Cadereyta
## 5          Visita                          2                Cadereyta
## 6       Diversión                          2                 Escobedo
##   costo_total_viaje_redondo unidades_climatizadas Transporte_público_fallas
## 1                        NA                  <NA>                      <NA>
## 2                        NA                  <NA>                        Sí
## 3                        NA                  <NA>                      <NA>
## 4                        NA                  <NA>                      <NA>
## 5                        NA                  <NA>                      <NA>
## 6                        NA                    No                        Sí
##   se_siente_seguro_tp victima_tp Calificacion_transporte Factor_CVNL
## 1                <NA>       <NA>                    <NA>    258.2655
## 2                  Sí         No                Adecuada    273.0114
## 3                <NA>       <NA>                    <NA>    258.2655
## 4                <NA>       <NA>                    <NA>    273.0114
## 5                <NA>       <NA>                    <NA>    273.0114
## 6             No sabe         Sí                Adecuada   1013.6011

Tabla resumen

library(knitr)
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
Elemento <- c(
  "sexo", "edad", "categoría_edad", "municipio", "ingresos_nivel_socioeconomico",
  "medio_transporte", "prestacion_transportepriv", "vehiculos_hogar", "usa_transporte_publico",
  "numero_transbordos", "tiempo_espera", "tiempo_total_traslado", "motivo_traslado",
  "traslados_semanales_motivo", "municipio_destino_motivo", "costo_total_viaje_redondo",
  "unidades_climatizadas", "Transporte_público_fallas", "se_siente_seguro_tp", "victima_tp",
  "Calificacion_transporte", "Factor_CVNL"
)

Hallazgo_Descripción <- c(
  "Era una variable numérica donde el valor 1 representaba a los hombres y el valor 2 a las mujeres.",
  "Es una variable numérica que va del 18 al 95.",
  "La variable estaba escrita como rangos de edad de forma numérica.",
  "El municipio estaba codificado numéricamente, asignándose una clave específica a cada uno.",
  "El nivel socioeconómico estaba representado por el ingreso total reportado por la persona.",
  "La variable hace referencia al medio de transporte que utilizan las personas para trasladarse.",
  "Indicaba si las personas recibían la prestación de transporte por parte de su empleo (0 = no, 1 = sí).",
  "La variable hace referencia a la cantidad de vehículos privados disponibles en cada hogar.",
  "Estaba codificada como numérica: 0 = no usa transporte público, 1 = sí usa.",
  "Indica cuántos transbordos semanales hace la persona usuaria de transporte público.",
  "Variable numérica de 0 a 180 minutos; la mayoría de NAs son personas con automóvil.",
  "Variable numérica que describe el tiempo total de traslado de la persona (ida y vuelta).",
  "Describe el motivo del traslado: trabajo, escuela, compras, etc.",
  "Número de traslados realizados por semana según el motivo principal.",
  "Municipio de destino de quienes se desplazaron fuera de su localidad.",
  "Costo total del viaje redondo, con valores entre $0 y $4000 pesos.",
  "Describe si las unidades cuentan con aire acondicionado.",
  "Describe si las personas han enfrentado fallas en el transporte público.",
  "Describe la percepción de seguridad del usuario en el transporte público.",
  "Indica si la persona fue víctima de violencia en el transporte público (0 = no, 1 = sí).",
  "Calificación general del transporte público (escala del 1 al 10).",
  "Factor de expansión o representatividad para extrapolar a la población total."
)

Acción_tomada <- c(
  "Se convirtió en una variable factorial, asignando etiquetas 'Hombre' y 'Mujer'.",
  "Se cambió el nombre de la variable.",
  "Se transformó en factorial y se agruparon las edades como 'Juventud', 'Adultos' y 'Tercera edad'.",
  "Se transformó en variable factorial usando nombres de municipios.",
  "Se convirtió en factorial con categorías de nivel socioeconómico según AMAI.",
  "Se cambió el nombre de la variable.",
  "Se convirtió en factorial con categorías 'Sí' y 'No'.",
  "Se cambió el nombre de la variable.",
  "Se transformó en variable factorial.",
  "Se cambió el nombre de la variable.",
  "Se cambió el nombre de la variable.",
  "Se cambió el nombre de la variable.",
  "Se transformó en factorial con categorías según tipo de motivo.",
  "Se cambió el nombre de la variable.",
  "Se cambió el nombre de la variable.",
  "Se cambió el nombre de la variable.",
  "Se transformó en factorial con categorías 'No', 'Sí algunas', 'Sí todas'.",
  "Se transformó en factorial con categorías 'Sí' y 'No'.",
  "Se transformó en factorial con categorías 'Sí' y 'No'.",
  "Se transformó en factorial con categorías 'Sí' y 'No'.",
  "Se recodificó de 1 a 10 en categorías cualitativas: Muy baja a Muy alta.",
  "Se aplicó como ponderador en análisis con argumento `weights =`."
)

Justificación <- c(
  "Facilita la interpretación en análisis y visualizaciones.",
  "Facilita la comprensión de la variable.",
  "Permite análisis más claros por grupo etario.",
  "Facilita el análisis territorial y comparación regional.",
  "Permite estudiar desigualdades por nivel socioeconómico.",
  "Facilita el análisis de los medios de transporte utilizados.",
  "Hace más clara la interpretación en cruces y modelos.",
  "Mejora la legibilidad y análisis por número de vehículos.",
  "Permite analizar patrones de uso del transporte público.",
  "Conserva el significado pero mejora su lectura.",
  "Facilita los análisis sin modificar el significado original.",
  "Mantiene claridad en el análisis de tiempos de traslado.",
  "Permite vincular el motivo con las condiciones de traslado.",
  "Facilita el análisis de la carga de movilidad semanal.",
  "Mejora la comprensión de los patrones de destino.",
  "Permite analizar el impacto económico de la movilidad.",
  "Hace más clara la percepción sobre la calidad del servicio.",
  "Permite vincular calidad del servicio con fallas específicas.",
  "Facilita análisis de género y seguridad en el transporte.",
  "Hace más clara la interpretación de experiencias de violencia.",
  "Facilita la interpretación de la percepción general del servicio.",
  "Permite estimar resultados representativos de la población."
)

tabla_limpieza <- data.frame(Elemento, Hallazgo_Descripción, Acción_tomada, Justificación)

kable(tabla_limpieza, caption = "Tabla resumen de limpieza y transformación de variables") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), full_width = FALSE)
Tabla resumen de limpieza y transformación de variables
Elemento Hallazgo_Descripción Acción_tomada Justificación
sexo Era una variable numérica donde el valor 1 representaba a los hombres y el valor 2 a las mujeres. Se convirtió en una variable factorial, asignando etiquetas ‘Hombre’ y ‘Mujer’. Facilita la interpretación en análisis y visualizaciones.
edad Es una variable numérica que va del 18 al 95. Se cambió el nombre de la variable. Facilita la comprensión de la variable.
categoría_edad La variable estaba escrita como rangos de edad de forma numérica. Se transformó en factorial y se agruparon las edades como ‘Juventud’, ‘Adultos’ y ‘Tercera edad’. Permite análisis más claros por grupo etario.
municipio El municipio estaba codificado numéricamente, asignándose una clave específica a cada uno. Se transformó en variable factorial usando nombres de municipios. Facilita el análisis territorial y comparación regional.
ingresos_nivel_socioeconomico El nivel socioeconómico estaba representado por el ingreso total reportado por la persona. Se convirtió en factorial con categorías de nivel socioeconómico según AMAI. Permite estudiar desigualdades por nivel socioeconómico.
medio_transporte La variable hace referencia al medio de transporte que utilizan las personas para trasladarse. Se cambió el nombre de la variable. Facilita el análisis de los medios de transporte utilizados.
prestacion_transportepriv Indicaba si las personas recibían la prestación de transporte por parte de su empleo (0 = no, 1 = sí). Se convirtió en factorial con categorías ‘Sí’ y ‘No’. Hace más clara la interpretación en cruces y modelos.
vehiculos_hogar La variable hace referencia a la cantidad de vehículos privados disponibles en cada hogar. Se cambió el nombre de la variable. Mejora la legibilidad y análisis por número de vehículos.
usa_transporte_publico Estaba codificada como numérica: 0 = no usa transporte público, 1 = sí usa. Se transformó en variable factorial. Permite analizar patrones de uso del transporte público.
numero_transbordos Indica cuántos transbordos semanales hace la persona usuaria de transporte público. Se cambió el nombre de la variable. Conserva el significado pero mejora su lectura.
tiempo_espera Variable numérica de 0 a 180 minutos; la mayoría de NAs son personas con automóvil. Se cambió el nombre de la variable. Facilita los análisis sin modificar el significado original.
tiempo_total_traslado Variable numérica que describe el tiempo total de traslado de la persona (ida y vuelta). Se cambió el nombre de la variable. Mantiene claridad en el análisis de tiempos de traslado.
motivo_traslado Describe el motivo del traslado: trabajo, escuela, compras, etc. Se transformó en factorial con categorías según tipo de motivo. Permite vincular el motivo con las condiciones de traslado.
traslados_semanales_motivo Número de traslados realizados por semana según el motivo principal. Se cambió el nombre de la variable. Facilita el análisis de la carga de movilidad semanal.
municipio_destino_motivo Municipio de destino de quienes se desplazaron fuera de su localidad. Se cambió el nombre de la variable. Mejora la comprensión de los patrones de destino.
costo_total_viaje_redondo Costo total del viaje redondo, con valores entre $0 y $4000 pesos. Se cambió el nombre de la variable. Permite analizar el impacto económico de la movilidad.
unidades_climatizadas Describe si las unidades cuentan con aire acondicionado. Se transformó en factorial con categorías ‘No’, ‘Sí algunas’, ‘Sí todas’. Hace más clara la percepción sobre la calidad del servicio.
Transporte_público_fallas Describe si las personas han enfrentado fallas en el transporte público. Se transformó en factorial con categorías ‘Sí’ y ‘No’. Permite vincular calidad del servicio con fallas específicas.
se_siente_seguro_tp Describe la percepción de seguridad del usuario en el transporte público. Se transformó en factorial con categorías ‘Sí’ y ‘No’. Facilita análisis de género y seguridad en el transporte.
victima_tp Indica si la persona fue víctima de violencia en el transporte público (0 = no, 1 = sí). Se transformó en factorial con categorías ‘Sí’ y ‘No’. Hace más clara la interpretación de experiencias de violencia.
Calificacion_transporte Calificación general del transporte público (escala del 1 al 10). Se recodificó de 1 a 10 en categorías cualitativas: Muy baja a Muy alta. Facilita la interpretación de la percepción general del servicio.
Factor_CVNL Factor de expansión o representatividad para extrapolar a la población total. Se aplicó como ponderador en análisis con argumento weights =. Permite estimar resultados representativos de la población.

Resultados preliminares del primer modelo

División en conjunto de prueba y entrenamiento

set.seed(1)
n = nrow(eav2024_final)
aleatorios <- sample(1:n, size=0.7*n)

#Entrenamiento

entrenamiento <- eav2024_final[aleatorios,] #Corchetes búsqueda dentro del data frame
head(entrenamiento)
##        sexo edad categoría_edad                municipio
## 1017 Hombre   29       Juventud San Nicolás de los Garza
## 679  Hombre   57        Adultos                El Carmen
## 2177 Hombre   48        Adultos                   García
## 930  Hombre   38        Adultos                Pesquería
## 1533 Hombre   41        Adultos                   Juárez
## 471   Mujer   38        Adultos                  Apodaca
##      ingresos_nivel_socioeconomico medio_transporte prestacion_transportepriv
## 1017                             D  Camión/microbus                        No
## 679                              D  Camión/microbus                        No
## 2177                            D+        Automóvil                        Sí
## 930                              D  Camión/microbus                      <NA>
## 1533                             D        Automóvil                        No
## 471                             D+  Camión/microbus                        No
##      vehiculos_hogar usa_transporte_publico numero_transbordos tiempo_espera
## 1017               0                     Sí                 NA            20
## 679                0                     Sí                  1            60
## 2177               1                     No                 NA            NA
## 930                0                     Sí                 NA            20
## 1533               3                     No                 NA            NA
## 471                1                     Sí                  2            60
##      tiempo_total_traslado motivo_traslado traslados_semanales_motivo
## 1017                   170         Trabajo                          7
## 679                    390         Trabajo                          6
## 2177                   195         Trabajo                          6
## 930                    100   Buscar empleo                          5
## 1533                   270       Diversión                          1
## 471                    360         Compras                          1
##      municipio_destino_motivo costo_total_viaje_redondo unidades_climatizadas
## 1017                Monterrey                        24                  <NA>
## 679                 Pesquería                        90                    No
## 2177 San Nicolás de los Garza                        NA                  <NA>
## 930                   Apodaca                        30                    Sí
## 1533                   García                        NA                  <NA>
## 471                 Monterrey                        90                  <NA>
##      Transporte_público_fallas se_siente_seguro_tp victima_tp
## 1017                        Sí                  Sí         No
## 679                         No                  No         No
## 2177                      <NA>                <NA>       <NA>
## 930                         Sí                  Sí         No
## 1533                      <NA>                <NA>       <NA>
## 471                         No                  No         No
##      Calificacion_transporte Factor_CVNL
## 1017                Muy alta    962.1404
## 679                     Alta    691.5113
## 2177                    <NA>    802.7727
## 930                 Adecuada    691.5113
## 1533                    <NA>    963.3539
## 471                     Alta   1407.3107
lm_model <- lm(tiempo_total_traslado ~ ingresos_nivel_socioeconomico + sexo + categoría_edad + medio_transporte + motivo_traslado, data= entrenamiento, weights = Factor_CVNL)
summary(lm_model)
## 
## Call:
## lm(formula = tiempo_total_traslado ~ ingresos_nivel_socioeconomico + 
##     sexo + categoría_edad + medio_transporte + motivo_traslado, 
##     data = entrenamiento, weights = Factor_CVNL)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -7733.3  -948.7  -221.4   609.3 14456.9 
## 
## Coefficients:
##                                             Estimate Std. Error t value
## (Intercept)                                   26.580     15.264   1.741
## ingresos_nivel_socioeconomicoD                 8.040     14.660   0.548
## ingresos_nivel_socioeconomicoD+               10.408     14.754   0.705
## ingresos_nivel_socioeconomicoC                 5.572     17.290   0.322
## ingresos_nivel_socioeconomicoC+               38.385     37.379   1.027
## ingresos_nivel_socioeconomicoA/B              32.998     25.730   1.282
## ingresos_nivel_socioeconomicoNo contesta       2.647     15.185   0.174
## sexoMujer                                    -13.945      3.224  -4.326
## categoría_edadAdultos                          4.260      3.681   1.157
## categoría_edadTercera Edad                    -6.564      5.729  -1.146
## medio_transporteCamión/microbus              140.903      4.817  29.253
## medio_transporteTaxi                          19.789     10.407   1.902
## medio_transporteUber                          18.456     11.144   1.656
## medio_transporteMotocicleta                   10.367     10.989   0.943
## medio_transporteBicicleta                      6.968     12.802   0.544
## medio_transporteMetro                        105.571     23.282   4.534
## medio_transporteAutomóvil                     32.874      4.639   7.086
## medio_transporteTransmetro                   117.169     47.480   2.468
## medio_transporteEcovía                       138.798     34.026   4.079
## medio_transporteTransporte escolar            31.513     75.901   0.415
## medio_transporteTransporte de trabajo         68.004      7.137   9.529
## medio_transporteCamión privado                62.794     18.112   3.467
## medio_transporteTrailer                      921.119     74.210  12.412
## medio_transporteTractor                       84.425     84.620   0.998
## motivo_trasladoEscuela                         5.124      5.935   0.863
## motivo_trasladoCompras                         3.194      4.249   0.752
## motivo_trasladoMédico u hospital              38.131      7.149   5.334
## motivo_trasladoDiversión                       6.416      7.603   0.844
## motivo_trasladoAcompañar o llevar a alguien   15.002      8.948   1.676
## motivo_trasladoBanco o pago de servicios       5.764     14.704   0.392
## motivo_trasladoVisita                         60.095      6.355   9.456
## motivo_trasladoBuscar empleo                   4.138     22.951   0.180
## motivo_trasladoTrámites                      -19.286     31.760  -0.607
## motivo_trasladoNo contesta                   182.191     75.542   2.412
##                                             Pr(>|t|)    
## (Intercept)                                 0.081777 .  
## ingresos_nivel_socioeconomicoD              0.583431    
## ingresos_nivel_socioeconomicoD+             0.480622    
## ingresos_nivel_socioeconomicoC              0.747287    
## ingresos_nivel_socioeconomicoC+             0.304581    
## ingresos_nivel_socioeconomicoA/B            0.199830    
## ingresos_nivel_socioeconomicoNo contesta    0.861638    
## sexoMujer                                   1.59e-05 ***
## categoría_edadAdultos                       0.247283    
## categoría_edadTercera Edad                  0.252043    
## medio_transporteCamión/microbus              < 2e-16 ***
## medio_transporteTaxi                        0.057371 .  
## medio_transporteUber                        0.097831 .  
## medio_transporteMotocicleta                 0.345560    
## medio_transporteBicicleta                   0.586298    
## medio_transporteMetro                       6.12e-06 ***
## medio_transporteAutomóvil                   1.91e-12 ***
## medio_transporteTransmetro                  0.013680 *  
## medio_transporteEcovía                      4.70e-05 ***
## medio_transporteTransporte escolar          0.678052    
## medio_transporteTransporte de trabajo        < 2e-16 ***
## medio_transporteCamión privado              0.000538 ***
## medio_transporteTrailer                      < 2e-16 ***
## medio_transporteTractor                     0.318544    
## motivo_trasladoEscuela                      0.387998    
## motivo_trasladoCompras                      0.452300    
## motivo_trasladoMédico u hospital            1.07e-07 ***
## motivo_trasladoDiversión                    0.398817    
## motivo_trasladoAcompañar o llevar a alguien 0.093801 .  
## motivo_trasladoBanco o pago de servicios    0.695116    
## motivo_trasladoVisita                        < 2e-16 ***
## motivo_trasladoBuscar empleo                0.856928    
## motivo_trasladoTrámites                     0.543766    
## motivo_trasladoNo contesta                  0.015964 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1948 on 1999 degrees of freedom
##   (46 observations deleted due to missingness)
## Multiple R-squared:  0.4676, Adjusted R-squared:  0.4588 
## F-statistic: 53.21 on 33 and 1999 DF,  p-value: < 2.2e-16
#Prueba
prueba <- eav2024_final[-aleatorios,]
head(prueba)
##      sexo edad categoría_edad         municipio ingresos_nivel_socioeconomico
## 1   Mujer   50        Adultos Cadereyta Jiménez                             D
## 2  Hombre   35        Adultos Cadereyta Jiménez                             D
## 6   Mujer   51        Adultos  General Escobedo                             D
## 18 Hombre   51        Adultos         Aramberri                            D+
## 20 Hombre   42        Adultos           Apodaca                             D
## 21  Mujer   45        Adultos            García                             D
##       medio_transporte prestacion_transportepriv vehiculos_hogar
## 1  Pie/silla de ruedas                        No               0
## 2  Pie/silla de ruedas                        Sí               0
## 6  Pie/silla de ruedas                      <NA>               0
## 18 Pie/silla de ruedas                        No               0
## 20 Pie/silla de ruedas                        No               0
## 21 Pie/silla de ruedas                      <NA>               0
##    usa_transporte_publico numero_transbordos tiempo_espera
## 1                      No                 NA            NA
## 2                      Sí                 NA            NA
## 6                      Sí                 NA            NA
## 18                     No                 NA            NA
## 20                     No                 NA            NA
## 21                     No                 NA            NA
##    tiempo_total_traslado motivo_traslado traslados_semanales_motivo
## 1                     45         Trabajo                          5
## 2                    100         Trabajo                          6
## 6                     40       Diversión                          2
## 18                    30         Trabajo                          5
## 20                    30         Trabajo                          3
## 21                    15         Escuela                          5
##    municipio_destino_motivo costo_total_viaje_redondo unidades_climatizadas
## 1                 Cadereyta                        NA                  <NA>
## 2                    Juárez                        NA                  <NA>
## 6                  Escobedo                        NA                    No
## 18                Aramberri                        NA                  <NA>
## 20                  Apodaca                        NA                  <NA>
## 21                   García                        NA                  <NA>
##    Transporte_público_fallas se_siente_seguro_tp victima_tp
## 1                       <NA>                <NA>       <NA>
## 2                         Sí                  Sí         No
## 6                         Sí             No sabe         Sí
## 18                      <NA>                <NA>       <NA>
## 20                      <NA>                <NA>       <NA>
## 21                      <NA>                <NA>       <NA>
##    Calificacion_transporte Factor_CVNL
## 1                     <NA>    258.2655
## 2                 Adecuada    273.0114
## 6                 Adecuada   1013.6011
## 18                    <NA>    663.3158
## 20                    <NA>   1429.0226
## 21                    <NA>    777.2303
prueba$predicted_tiempo_total_traslado <- predict(lm_model, newdata = prueba)
head(prueba)
##      sexo edad categoría_edad         municipio ingresos_nivel_socioeconomico
## 1   Mujer   50        Adultos Cadereyta Jiménez                             D
## 2  Hombre   35        Adultos Cadereyta Jiménez                             D
## 6   Mujer   51        Adultos  General Escobedo                             D
## 18 Hombre   51        Adultos         Aramberri                            D+
## 20 Hombre   42        Adultos           Apodaca                             D
## 21  Mujer   45        Adultos            García                             D
##       medio_transporte prestacion_transportepriv vehiculos_hogar
## 1  Pie/silla de ruedas                        No               0
## 2  Pie/silla de ruedas                        Sí               0
## 6  Pie/silla de ruedas                      <NA>               0
## 18 Pie/silla de ruedas                        No               0
## 20 Pie/silla de ruedas                        No               0
## 21 Pie/silla de ruedas                      <NA>               0
##    usa_transporte_publico numero_transbordos tiempo_espera
## 1                      No                 NA            NA
## 2                      Sí                 NA            NA
## 6                      Sí                 NA            NA
## 18                     No                 NA            NA
## 20                     No                 NA            NA
## 21                     No                 NA            NA
##    tiempo_total_traslado motivo_traslado traslados_semanales_motivo
## 1                     45         Trabajo                          5
## 2                    100         Trabajo                          6
## 6                     40       Diversión                          2
## 18                    30         Trabajo                          5
## 20                    30         Trabajo                          3
## 21                    15         Escuela                          5
##    municipio_destino_motivo costo_total_viaje_redondo unidades_climatizadas
## 1                 Cadereyta                        NA                  <NA>
## 2                    Juárez                        NA                  <NA>
## 6                  Escobedo                        NA                    No
## 18                Aramberri                        NA                  <NA>
## 20                  Apodaca                        NA                  <NA>
## 21                   García                        NA                  <NA>
##    Transporte_público_fallas se_siente_seguro_tp victima_tp
## 1                       <NA>                <NA>       <NA>
## 2                         Sí                  Sí         No
## 6                         Sí             No sabe         Sí
## 18                      <NA>                <NA>       <NA>
## 20                      <NA>                <NA>       <NA>
## 21                      <NA>                <NA>       <NA>
##    Calificacion_transporte Factor_CVNL predicted_tiempo_total_traslado
## 1                     <NA>    258.2655                        24.93514
## 2                 Adecuada    273.0114                        38.88055
## 6                 Adecuada   1013.6011                        31.35128
## 18                    <NA>    663.3158                        41.24822
## 20                    <NA>   1429.0226                        38.88055
## 21                    <NA>    777.2303                        30.05925
rmse <- sqrt(mean((prueba$tiempo_total_traslado - prueba$predicted_tiempo_total_traslado)^2)) #En promedio cuánto se distancia el error del valor real
r_squared <- cor(prueba$tiempo_total_traslado, prueba$predicted_tiempo_total_traslado)^2
cat("RMSE:", rmse, "\nR-squared:", r_squared, "\n")
## RMSE: NA 
## R-squared: NA
sd(prueba$tiempo_total_traslado)
## [1] NA
#Si RMSE es menor a la desviación estándar funciona bien la predicción