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.
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?
sexo_num: Permite analizar las diferencias de movilidad según el sexo biológico.
genero_num: Aporta una perspectiva más inclusiva y actualizada del género.
nom_mun_mv: Localiza espacialmente a las personas encuestadas para comparar desigualdades entre municipios.
nom_loc_mv: Permite análisis más precisos dentro de cada municipio, detectando diferencias urbanas vs. rurales o centrales vs. periféricas.
colonia: Aporta microdatos territoriales útiles para análisis georreferenciados.
mun_amm_y_periferia: Clasifica el lugar de residencia en zonas metropolitanas, periféricas o resto del estado.
cp4_1: Registra la edad exacta.
rangos_edad: Facilita el análisis por grupos etarios, identificando necesidades diferenciadas de movilidad entre jóvenes, adultos y mayores.
p7_8: Indica si el empleo ofrece transporte privado, revelando posibles diferencias según sector laboral o nivel socioeconómico.
p13: Muestra el motivo del traslado (trabajo, estudio, salud, etc.), necesario para vincular movilidad con acceso a oportunidades.
p15: Permite medir la frecuencia semanal de traslados para evaluar esfuerzo de movilidad.
p16: Identifica el municipio de destino de los viajes, lo que permite analizar patrones de desplazamiento intermunicipal.
p17: Complementa la información del destino principal.
p18: Revela el tipo de transporte utilizado.
tiempo_espera: Mide cuánto tiempo se espera el transporte.
p21: Informa si hubo transbordo.
p22: Cuantifica los transbordos.
tiempo_total_traslado: Mide la duración total del viaje redondo.
costo_total_viaje_redondo: Mide el gasto monetario en movilidad.
usa_transporte_publico: Variable dicotómica que permite identificar usuarios frecuentes de transporte público y asociarlos con condiciones de vulnerabilidad.
p31_3: Evalúa la percepción de seguridad en el transporte público, relevante para analizar desigualdades de género.
p31_6: Indica si el transporte está climatizado, lo cual impacta en la calidad y dignidad del servicio, especialmente en zonas de calor extremo.
p32: Mide la percepción sobre la tarifa, indicador subjetivo que puede variar según nivel socioeconómico.
p33_9: Señala fallas tecnológicas en las unidades, relacionadas con eficiencia y accesibilidad del sistema de transporte.
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.
p39: Indica el número de vehículos en el hogar, lo que permite aproximarse al nivel de dependencia del transporte público.
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.
p164: Permite ver el ingreso total del hogar.
# 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
# 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.
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
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".
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?
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
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)
| 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. |
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