Usando un enfoque tidy en R para analizar la ENVIPE 2024 de México
Parte 1: Estimando la prevalencia delictiva con el paquete {srvyr}
Introducción
En este artículo, te guiaré en el proceso de analizar la Encuesta Nacional de Victimización y Percepción sobre Seguridad Pública 2024 (ENVIPE) de México utilizando el marco de trabajo {tidyverse} para análisis de encuestas, junto con el paquete {srvyr}. En particular, calcularemos la tasa de prevalencia delictiva por cada 100,000 habitantes por entidad federativa, según sexo de la víctima.
Las tablas oficiales con este indicador pueden consultarse aquí.
Al final de este artículo, podrás usar el {tidyverse} para:
- Cargar los microdatos de la encuesta desde el sitio web del INEGI.
- Especificar el diseño muestral de la ENVIPE.
- Calcular indicadores de prevalencia delictiva.
Acerca de la ENVIPE
La ENVIPE es una encuesta oficial que proporciona información representativa a nivel nacional y estatal sobre la victimización delictiva en los hogares y la percepción de seguridad pública en México. Desde 2011, es realizada anualmente por el Instituto Nacional de Estadística y Geografía (INEGI), recolectando datos sobre los siguientes delitos:
- Robo total de vehículo (auto, camioneta o camión).
- Robo de accesorios, refacciones o herramientas de vehículo (auto, camioneta o camión).
- Grafiti en paredes, daños intencionales a vehículos y otros tipos de vandalismo.
- Robo a casa habitación o intento de robo.
- Secuestro.
- Desaparición forzada.
- Homicidio.
- Robo o asalto en la calle o transporte público.
- Robo distinto a los anteriores.
- Fraude bancario.
- Fraude al consumidor.
- Extorsión.
- Amenazas.
- Lesiones.
- Secuestro.
- Hostigamiento o intimidación.
- Manoseo.
- Exhibicionismo.
- Intento de violación.
- Violación sexual.
- Otros delitos.
Toda la información relacionada con la encuesta, incluidos cuestionarios, metodología, glosarios, resúmenes y microdatos, está disponible en el sitio web del INEGI.
Preparación del entorno
Primero, instala y carga los paquetes requeridos:
Cargando microdatos de la encuesta desde el INEGI
Los microdatos están disponibles aquí en varios formatos (CSV, DBF, DTA, SAV y RData). En este ejemplo usaremos los archivos en formato RData.
load(archive_read(
archive = "https://www.inegi.org.mx/contenidos/programas/envipe/2024/microdatos/bd_envipe_2024_RData.zip",
file = "BD_ENVIPE_2024.RData"
))Usando el paquete {archive}, podemos extraer directamente el archivo requerido desde bd_envipe_2024_RData.zip.
Esto carga los siguientes objetos en el entorno global:
THogar: Contiene el resultado de la entrevista, la fila del informante seleccionado, el factor de expansión del hogar y otras características del hogar.TMod_Vic: Incluye información sobre los delitos sufridos por el informante seleccionado y su hogar durante el año de referencia (2023). Proviene del módulo de victimización de la encuesta.TPer_Vic1: Incluye información relacionada con la percepción de seguridad pública en el área geográfica del entrevistado, conductas antisociales en su entorno inmediato y cambios de hábitos por temor a ser víctima de un delito en 2023. También presenta información sobre el desempeño y la confianza en las autoridades (Secciones IV y V del cuestionario).TPer_Vic2: Consolida información sobre victimización del hogar y personal, especialmente en delitos de alto impacto (como secuestro, desaparición forzada u homicidio) sufridos por el hogar o el entrevistado. Incluye las Secciones VI y VII del cuestionario.TSDem: Contiene las características sociodemográficas de los integrantes del hogar (Sección III del cuestionario).TSVivienda: Contiene las características de las viviendas registradas en la portada del cuestionario, así como el número de residentes y de hogares (Secciones I y II del cuestionario).
Cálculo de la tasa de prevalencia delictiva por cada 100,000 habitantes por entidad federativa, según sexo de la víctima
Para estimar la tasa de prevalencia delictiva, utilizamos información de TPer_Vic2 (preguntas de cribado sobre victimización) y de TMod_Vic (módulo específico para víctimas). TPer_Vic2 se usa para caracterizar a la población total y TMod_Vic para describir a las víctimas y los delitos asociados.
1. Especificando el diseño muestral de la ENVIPE
La ENVIPE sigue un diseño probabilístico, estratificado, por conglomerados y en tres etapas. La unidad de muestreo es el hogar, y la unidad de análisis es la población de 18 años o más en hogares seleccionados. Más detalles aquí.
De la documentación sobre la estructura de datos, las variables clave para el diseño son:
ID_PER: Identificador de personaEST_DIS: EstratoUPM_DIS: Unidad primaria de muestreoFAC_ELE: Factor de expansión para estimaciones de victimización y percepción de seguridad.
El diseño se especifica así:
# Identificar víctimas en TMod_Vic, excluyendo
# "Grafiti, daños intencionales a vehículos y otros vandalismos" (BPCOD != "03")
id_victims <- TMod_Vic |>
filter(BPCOD != "03") |>
pull(ID_PER)
# Crear variable de victimización en TPer_Vic2
TPer_Vic2 <- TPer_Vic2 |>
mutate(victimization = ifelse(ID_PER %in% id_victims, 1, 0))
# Convertir FAC_ELE (pesos) a numérico
TPer_Vic2 <- TPer_Vic2 |>
mutate(FAC_ELE = as.numeric(FAC_ELE))
# Etiquetar variable SEXO
TPer_Vic2 <- TPer_Vic2 |>
mutate(SEXO = recode(SEXO, "1" = "Hombre", "2" = "Mujer"))
# Crear objeto de encuesta
envipe_design <- TPer_Vic2 |>
as_survey_design(
weights = FAC_ELE,
strata = EST_DIS,
ids = UPM_DIS,
nest = TRUE
)2. Cálculo de estimaciones puntuales e indicadores de variabilidad
Para calcular proporciones usamos survey_mean() del paquete {srvyr}. NOM_ENT representa la entidad federativa y SEXO el sexo de la persona entrevistada.
envipe_design |>
# La función `interact` se usa para calcular la proporción
# sobre la interacción de entidad federativa y sexo
group_by(interact(NOM_ENT, SEXO)) |>
summarize(
Proporcion = survey_mean(victimization,
level = 0.90, # Nivel de confianza
vartype = c("se", "ci", "cv") # Indicadores de variabilidad
)
) |>
ungroup() |>
mutate(
`Tasa de prevalencia` = Proporcion * 100000, # Tasa por cada 100,000 personas
`Error estándar` = Proporcion_se * 100000,
`Límite inferior IC 90%` = Proporcion_low * 100000,
`Límite superior IC 90%` = Proporcion_upp * 100000,
`Coeficiente de variación %` = Proporcion_cv * 100,
Entidad = str_to_sentence(NOM_ENT) # Capitalizar solo la primera letra
) |>
rename(Sexo = SEXO) |>
select(
Entidad, Sexo, `Tasa de prevalencia`, `Error estándar`,
`Límite inferior IC 90%`, `Límite superior IC 90%`, `Coeficiente de variación %`
) |>
kbl() |> # Tabla HTML
kable_styling() # Aplicar tema bootstrap a la tablaLa tabla final es:
| Entidad | Sexo | Tasa de prevalencia | Error estándar | Límite inferior IC 90% | Límite superior IC 90% | Coeficiente de variación % |
|---|---|---|---|---|---|---|
| Aguascalientes | Hombre | 33710.81 | 2172.7372 | 30136.71 | 37284.91 | 6.445224 |
| Aguascalientes | Mujer | 32041.57 | 1831.7081 | 29028.45 | 35054.68 | 5.716662 |
| Baja california | Hombre | 23043.35 | 1604.9769 | 20403.20 | 25683.50 | 6.965032 |
| Baja california | Mujer | 24480.64 | 1536.1771 | 21953.66 | 27007.61 | 6.275070 |
| Baja california sur | Hombre | 19329.94 | 1244.1353 | 17283.36 | 21376.51 | 6.436314 |
| Baja california sur | Mujer | 23817.58 | 1466.2963 | 21405.56 | 26229.60 | 6.156361 |
| Campeche | Hombre | 21832.87 | 1455.8508 | 19438.03 | 24227.71 | 6.668161 |
| Campeche | Mujer | 23213.74 | 1381.0933 | 20941.88 | 25485.61 | 5.949465 |
| Chiapas | Hombre | 16602.99 | 986.0052 | 14981.03 | 18224.94 | 5.938722 |
| Chiapas | Mujer | 12074.36 | 978.7862 | 10464.28 | 13684.44 | 8.106318 |
| Chihuahua | Hombre | 22303.22 | 1234.5065 | 20272.49 | 24333.96 | 5.535103 |
| Chihuahua | Mujer | 22804.31 | 1181.0327 | 20861.54 | 24747.08 | 5.178990 |
| Ciudad de mexico | Hombre | 34562.66 | 1089.2714 | 32770.84 | 36354.49 | 3.151584 |
| Ciudad de mexico | Mujer | 30746.76 | 990.3528 | 29117.66 | 32375.87 | 3.220999 |
| Coahuila de zaragoza | Hombre | 18179.70 | 1249.1422 | 16124.89 | 20234.51 | 6.871084 |
| Coahuila de zaragoza | Mujer | 20447.19 | 1238.7111 | 18409.54 | 22484.84 | 6.058099 |
| Colima | Hombre | 21106.85 | 1593.5970 | 18485.43 | 23728.28 | 7.550140 |
| Colima | Mujer | 21295.28 | 1351.1455 | 19072.68 | 23517.88 | 6.344813 |
| Durango | Hombre | 15240.74 | 1133.1868 | 13376.67 | 17104.80 | 7.435250 |
| Durango | Mujer | 17401.18 | 1166.0910 | 15482.99 | 19319.37 | 6.701219 |
| Guanajuato | Hombre | 20057.38 | 1428.0981 | 17708.20 | 22406.57 | 7.120063 |
| Guanajuato | Mujer | 18930.15 | 1287.0811 | 16812.93 | 21047.37 | 6.799107 |
| Guerrero | Hombre | 16981.89 | 1494.6554 | 14523.22 | 19440.56 | 8.801466 |
| Guerrero | Mujer | 14572.44 | 1238.6234 | 12534.93 | 16609.94 | 8.499769 |
| Hidalgo | Hombre | 22397.82 | 1338.0474 | 20196.77 | 24598.88 | 5.974006 |
| Hidalgo | Mujer | 20215.02 | 1157.0294 | 18311.73 | 22118.30 | 5.723613 |
| Jalisco | Hombre | 24390.13 | 1548.7916 | 21842.40 | 26937.85 | 6.350076 |
| Jalisco | Mujer | 25141.90 | 1438.5170 | 22775.58 | 27508.23 | 5.721592 |
| Mexico | Hombre | 32906.59 | 1632.3183 | 30221.47 | 35591.71 | 4.960460 |
| Mexico | Mujer | 33023.78 | 1483.3471 | 30583.71 | 35463.85 | 4.491755 |
| Michoacan de ocampo | Hombre | 14405.17 | 1031.1125 | 12709.01 | 16101.32 | 7.157934 |
| Michoacan de ocampo | Mujer | 15485.20 | 1036.3320 | 13780.46 | 17189.94 | 6.692401 |
| Morelos | Hombre | 26995.43 | 1517.6054 | 24499.00 | 29491.85 | 5.621713 |
| Morelos | Mujer | 24869.74 | 1688.5969 | 22092.04 | 27647.44 | 6.789765 |
| Nayarit | Hombre | 16075.56 | 1516.6195 | 13580.76 | 18570.36 | 9.434318 |
| Nayarit | Mujer | 18639.61 | 1597.1842 | 16012.28 | 21266.94 | 8.568766 |
| Nuevo leon | Hombre | 23602.12 | 1261.9498 | 21526.25 | 25678.00 | 5.346764 |
| Nuevo leon | Mujer | 21440.72 | 1211.6372 | 19447.60 | 23433.83 | 5.651104 |
| Oaxaca | Hombre | 12940.56 | 1158.2366 | 11035.29 | 14845.83 | 8.950434 |
| Oaxaca | Mujer | 13548.61 | 1017.7020 | 11874.51 | 15222.70 | 7.511489 |
| Puebla | Hombre | 26519.64 | 1342.0473 | 24312.00 | 28727.27 | 5.060579 |
| Puebla | Mujer | 24176.45 | 1124.4656 | 22326.73 | 26026.17 | 4.651078 |
| Queretaro | Hombre | 30297.50 | 1620.6534 | 27631.57 | 32963.44 | 5.349132 |
| Queretaro | Mujer | 25746.31 | 1260.3524 | 23673.06 | 27819.56 | 4.895273 |
| Quintana roo | Hombre | 22592.04 | 1384.4250 | 20314.70 | 24869.39 | 6.127932 |
| Quintana roo | Mujer | 21775.64 | 1237.8095 | 19739.48 | 23811.81 | 5.684376 |
| San luis potosi | Hombre | 24019.02 | 1874.7438 | 20935.11 | 27102.93 | 7.805247 |
| San luis potosi | Mujer | 23227.97 | 1491.3111 | 20774.80 | 25681.14 | 6.420324 |
| Sinaloa | Hombre | 21181.44 | 1122.0160 | 19335.76 | 23027.13 | 5.297165 |
| Sinaloa | Mujer | 20562.22 | 1086.2790 | 18775.32 | 22349.12 | 5.282887 |
| Sonora | Hombre | 26864.66 | 1816.2677 | 23876.94 | 29852.37 | 6.760808 |
| Sonora | Mujer | 25742.16 | 1902.0264 | 22613.37 | 28870.95 | 7.388759 |
| Tabasco | Hombre | 25881.72 | 1354.6212 | 23653.40 | 28110.04 | 5.233891 |
| Tabasco | Mujer | 25522.45 | 1091.8488 | 23726.38 | 27318.51 | 4.277994 |
| Tamaulipas | Hombre | 17788.15 | 1075.8038 | 16018.47 | 19557.82 | 6.047869 |
| Tamaulipas | Mujer | 18368.67 | 1017.1639 | 16695.46 | 20041.88 | 5.537493 |
| Tlaxcala | Hombre | 23968.33 | 1621.2198 | 21301.47 | 26635.20 | 6.764007 |
| Tlaxcala | Mujer | 22295.82 | 1473.2391 | 19872.38 | 24719.26 | 6.607692 |
| Veracruz de ignacio de la llave | Hombre | 16365.05 | 1055.8247 | 14628.24 | 18101.86 | 6.451705 |
| Veracruz de ignacio de la llave | Mujer | 14712.45 | 947.9121 | 13153.15 | 16271.74 | 6.442927 |
| Yucatan | Hombre | 20677.82 | 1239.0909 | 18639.55 | 22716.10 | 5.992366 |
| Yucatan | Mujer | 17805.62 | 1141.8291 | 15927.34 | 19683.90 | 6.412745 |
| Zacatecas | Hombre | 17328.49 | 1346.8466 | 15112.96 | 19544.02 | 7.772440 |
| Zacatecas | Mujer | 15690.25 | 1335.9463 | 13492.65 | 17887.85 | 8.514502 |
Citation
@online{torres munguía2025,
author = {Torres Munguía, Juan Armando},
title = {Usando Un Enfoque Tidy En {R} Para Analizar La {ENVIPE} 2024
de {México}},
date = {2025-01-27},
url = {https://juan-torresmunguia.netlify.app/blog/posts-es/estimating-envipe-prevalence},
langid = {en}
}