En este trabajó se realizaron matríces de correlación de cada municipio perteneciente al Corredor Centro Poniente de Puebla. Específicamente se busca análizar las correlaciones que existen entre los delítos de: Desaparición según Fiscalía “Desapariciones FGE” y Desaparición según la Comisión Nacional de Busqueda (Desapariciones CNB), con los demás delitos registrados a lo largo de 12 años.
En lugar de analizar los datos de todo el corredor como un solo bloque, se hizo un análisis de los 8 municipios independientes. Esto debido a que cada municipio tiene dinámicas económicas, carreteras y poblacionales distintas, evaluar el corredor en conjunto ocultaba patrones propios de zonas urbanos frente a zonas rurales.
En RStudio es necesario con contar dependencias “packs” que permiten añadir lineas de código para hacer diferentes cosas, la linea de código de las librerías inician siempre con “library”. Para correr las matrices necesitamos las siguientes librerías:
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.5.3
## corrplot 0.95 loaded
Esta línea de código se utiliza para llamar la base de datos de Excel que vamos a usar:
library(readxl)
Base_de_Datos_RStudio <- read_excel("C:/Users/Javie/OneDrive/Escritorio/Servicio Social/Análisis Econométrico/Base de Datos RStudio.xlsx")
View(Base_de_Datos_RStudio)
Este código lee la columna de municipios de la base de datos y extrae una lista limpia con los nombres de los municipios sin repetir.
lista_municipios <- unique(Base_de_Datos_RStudio$Municipio)
Este es un bloque de código que se divide en cuatro secciones:
1. Apertura del bucle automatizado
Lo que hace este código (for (muni in lista_municipios) {} es iniciar un ciclo repetitivo. Todo lo que esté dentro de las llaves { } se ejecutará de forma automática para el municipio 1, luego para el municipio 2, y así hasta terminar la lista. La palabra muni sirve como una etiqueta temporal que va cambiando de nombre en cada vuelta.
2. Aislamiento y depuración de datos locales
Este paso sirve para realizar dos filtros:
datos_muni <- Base_de_Datos_RStudio %>% filter(Municipio == muni) %>% select(-Municipio, -Ano)
datos_muni_limpios <- datos_muni %>% select_if(~ sd(., na.rm = TRUE) > 0)
Filtro geográfico: Con filter(Municipio == muni), aparta únicamente los 12 años de historia del municipio y descarta las columnas de texto (nombre y año), quedándose solo con números.
Filtro matemático: La instrucción sd(…) > 0 calcula la desviación estándar. Si un delito tuvo puros ceros durante los 12 años, la computadora lo retira automáticamente para evitar errores de división entre cero.
3. Cálculo matemático de la correlación
matriz_muni <- cor(datos_muni_limpios, use = “pairwise.complete.obs”, method = “pearson”) Ejecuta la fórmula matemática de Pearson. Compara cada delito contra todos los demás y calcula un valor entre -1 y 1 para cada combinación posible.
La instrucción pairwise.complete.obs asegura que, si en algún año faltó un dato específico, el cálculo no se rompa y aproveche todos los registros válidos disponibles.
4. Extracción y ordenamiento del reporte
La u´ltima parte del código se encarga de que, de la matriz completa (que puede tener más de 20x20 delitos cruzados), extrae únicamente las dos columnas que son de interés para este trabajo: las desapariciones de la Fiscalía y las de la Federación. Después, las ordena de mayor a menor según su nivel de asociación con la Fiscalía para que el lector vea el “Top” de delitos arriba. Y finalmente se le indica que imprima los resultados con los nombres de cada municipio.
for (muni in lista_municipios) {
datos_muni <- Base_de_Datos_RStudio %>%
filter(Municipio == muni) %>%
select(-Municipio, -Ano)
datos_muni_limpios <- datos_muni %>%
select_if(~ sd(., na.rm = TRUE) > 0)
matriz_muni <- cor(datos_muni_limpios, use = "pairwise.complete.obs", method = "pearson")
cor_desapariciones_muni <- as.data.frame(matriz_muni) %>%
select(any_of(c("Desaparicion_FGE", "Desaparicion_CNB_2025")))
if("Desaparicion_FGE" %in% names(cor_desapariciones_muni)) {
cor_desapariciones_muni <- cor_desapariciones_muni %>% arrange(desc(Desaparicion_FGE))
}
cat("\n======================================================\n")
cat("ANÁLISIS LOCAL: ", muni, "\n")
cat("======================================================\n")
print(cor_desapariciones_muni)
}
##
## ======================================================
## ANÁLISIS LOCAL: Chiautzingo
## ======================================================
## Desaparicion_FGE Desaparicion_CNB_2025
## Desaparicion_FGE 1.00000000 0.38750942
## Homicidio_D_T 0.62482266 0.35469060
## Desaparicion_CNB_2025 0.38750942 1.00000000
## Acoso_sexual 0.33693301 0.04323377
## Homicidio_D_A_F 0.26610527 0.33190100
## Abuso_sexual 0.26109772 0.49111184
## Violacion_equiparada 0.24698696 0.56967472
## Robo_4_R_T 0.23662327 0.03022858
## Violacion_simple 0.21761114 0.23181603
## Violencia_familiar 0.12185422 0.25906920
## Narcomenudeo -0.09894683 -0.01204670
##
## ======================================================
## ANÁLISIS LOCAL: Huejotzingo
## ======================================================
## Desaparicion_FGE Desaparicion_CNB_2025
## Desaparicion_FGE 1.00000000 0.196152056
## Robo_transportista_V 0.73607575 -0.099372989
## Abuso_sexual 0.73549195 0.044795939
## Robo_transportista_T 0.72851734 -0.120809548
## Homicidio_D_A_F 0.68509196 0.506960177
## Homicidio_D_T 0.68353256 0.455458632
## Violencia_familiar 0.62703150 0.047453531
## Robo_4R_V 0.58319530 0.518317715
## Robo_4_R_T 0.56968785 0.329512280
## Feminicidio_FGE 0.53301506 0.248583408
## Acoso_sexual 0.27148704 0.269226082
## Secuestro_EEO 0.24023509 0.566330432
## Violacion_equiparada 0.23612963 0.132898396
## Desaparicion_CNB_2025 0.19615206 1.000000000
## Extorsion 0.16237289 -0.364917544
## Trata_T_P 0.12867625 0.273108912
## Tomas_Huachicol_G_GLP 0.11634393 0.102820173
## Violacion_simple 0.07227814 -0.049223517
## Masacres -0.13345356 -0.174745098
## Narcomenudeo -0.14082822 0.271879582
## Despojo -0.14612931 0.002223015
## Corrupcion_Trafico_M_R -0.16247716 0.214189352
##
## ======================================================
## ANÁLISIS LOCAL: San Martín Texmelucan
## ======================================================
## Desaparicion_FGE Desaparicion_CNB_2025
## Desaparicion_FGE 1.00000000 0.486582385
## Homicidio_D_A_F 0.82960732 0.428775543
## Homicidio_D_T 0.82128553 0.416675162
## Robo_4_R_T 0.61722554 0.430071923
## Abuso_sexual 0.55243125 0.130672862
## Robo_4R_V 0.53681050 0.376068198
## Desaparicion_CNB_2025 0.48658239 1.000000000
## Tomas_Huachicol_G_GLP 0.41809592 0.369888485
## Masacres 0.36356216 0.253080316
## Robo_transportista_T 0.33361170 0.108557103
## Violacion_equiparada 0.33060024 -0.018030228
## Robo_transportista_V 0.33019315 0.106220980
## Acoso_sexual 0.29985123 -0.053803296
## Feminicidio_FGE 0.26513642 0.138757052
## Violencia_familiar 0.14942607 -0.013585719
## Extorsion 0.10460934 0.431476834
## Violacion_simple -0.02372376 0.368220665
## Secuestro_EEO -0.03937743 -0.094457717
## Despojo -0.13324090 0.006178255
## Narcomenudeo -0.22494578 -0.196106060
## Trata_T_P -0.40873376 0.004368724
## Corrupcion_Trafico_M_R -0.49393896 0.089554336
##
## ======================================================
## ANÁLISIS LOCAL: San Matías Tlalancaleca
## ======================================================
## Desaparicion_FGE Desaparicion_CNB_2025
## Desaparicion_FGE 1.000000000 0.24549769
## Masacres 0.325984923 -0.16116459
## Desaparicion_CNB_2025 0.245497686 1.00000000
## Violacion_simple 0.216522953 -0.22131670
## Violencia_familiar 0.207944414 0.22245313
## Violacion_equiparada 0.195574712 0.48712230
## Homicidio_D_T 0.159420694 -0.02746389
## Acoso_sexual 0.102270029 -0.05241424
## Robo_4_R_T 0.078765025 0.09419048
## Secuestro_EEO 0.048912353 -0.23904572
## Abuso_sexual 0.004431696 -0.15780122
## Despojo -0.061705309 -0.20538036
## Robo_transportista_T -0.063775895 0.56201850
## Robo_transportista_V -0.065587774 0.56912811
## Homicidio_D_A_F -0.120995128 -0.14504552
## Tomas_Huachicol_G_GLP -0.160578155 -0.32336771
## Robo_4R_V -0.180048318 0.03423532
## Extorsion -0.236526272 0.17792339
## Narcomenudeo -0.339559756 -0.09339866
## Trata_T_P -0.340430822 -0.16116459
##
## ======================================================
## ANÁLISIS LOCAL: San Miguel Xoxtla
## ======================================================
## Desaparicion_FGE Desaparicion_CNB_2025
## Desaparicion_FGE 1.000000000 0.67815202
## Violacion_simple 0.776222101 0.70497209
## Robo_4_R_T 0.769400754 0.83147006
## Robo_4R_V 0.730402929 0.70559218
## Robo_transportista_T 0.726029004 0.86894608
## Violencia_familiar 0.721434925 0.30019073
## Robo_transportista_V 0.720736043 0.86708215
## Desaparicion_CNB_2025 0.678152019 1.00000000
## Despojo 0.614932663 0.51549618
## Abuso_sexual 0.415062355 0.29377622
## Homicidio_D_T 0.415040739 0.39356563
## Acoso_sexual 0.169093758 -0.10555943
## Violacion_equiparada 0.061087338 -0.35153823
## Extorsion -0.007112133 -0.06107911
## Narcomenudeo -0.022993441 -0.05228830
## Homicidio_D_A_F -0.083705986 0.03328024
## Trata_T_P -0.413033443 -0.15778091
## Tomas_Huachicol_G_GLP -0.509847318 -0.29933437
##
## ======================================================
## ANÁLISIS LOCAL: San Salvador el Verde
## ======================================================
## Desaparicion_FGE Desaparicion_CNB_2025
## Desaparicion_FGE 1.00000000 -0.15515539
## Homicidio_D_A_F 0.65213609 0.35916680
## Robo_4R_V 0.62456490 -0.19074040
## Homicidio_D_T 0.61516005 0.37853818
## Robo_4_R_T 0.45889683 0.25079064
## Violacion_equiparada 0.40232683 -0.36324905
## Tomas_Huachicol_G_GLP 0.38099481 -0.24091543
## Despojo 0.35001841 -0.29526458
## Robo_transportista_V 0.29918147 0.02728174
## Masacres 0.28343308 -0.09090909
## Robo_transportista_T 0.28108904 0.05661467
## Abuso_sexual 0.26927518 0.42876835
## Violacion_simple 0.23589015 0.37877268
## Extorsion 0.21398655 -0.19782891
## Secuestro_EEO 0.17616757 -0.13461141
## Acoso_sexual 0.11328490 0.07175346
## Violencia_familiar -0.07327867 0.54940901
## Trata_T_P -0.10057680 -0.12146957
## Narcomenudeo -0.15344587 0.32830236
## Feminicidio_FGE -0.15515539 1.00000000
## Desaparicion_CNB_2025 -0.15515539 1.00000000
##
## ======================================================
## ANÁLISIS LOCAL: Santa Rita Tlahuapan
## ======================================================
## Desaparicion_FGE Desaparicion_CNB_2025
## Desaparicion_FGE 1.000000000 0.42662117
## Narcomenudeo 0.550247620 -0.03095759
## Homicidio_D_A_F 0.483517301 0.15946665
## Homicidio_D_T 0.463162589 0.02111867
## Abuso_sexual 0.438586655 0.36501135
## Desaparicion_CNB_2025 0.426621171 1.00000000
## Acoso_sexual 0.408139039 0.26279390
## Violencia_familiar 0.392555136 0.12694923
## Extorsion 0.377516341 0.65288347
## Robo_transportista_T 0.250745419 0.29422152
## Robo_transportista_V 0.242440710 0.28702503
## Robo_4_R_T 0.193140576 0.11044602
## Violacion_equiparada 0.181704596 -0.06819179
## Corrupcion_Trafico_M_R 0.091168074 -0.16383094
## Violacion_simple -0.004243843 0.39111970
## Trata_T_P -0.012536597 0.03750402
## Robo_4R_V -0.087511668 -0.16686657
## Despojo -0.090361485 -0.26523944
## Tomas_Huachicol_G_GLP -0.144792971 -0.37999738
## Ejecucion_extrajudicial -0.368614012 -0.16383094
##
## ======================================================
## ANÁLISIS LOCAL: Tlaltenango
## ======================================================
## Desaparicion_FGE Desaparicion_CNB_2025
## Desaparicion_FGE 1.00000000 0.435703549
## Despojo 0.54693390 0.319304748
## Desaparicion_CNB_2025 0.43570355 1.000000000
## Robo_4_R_T 0.38156833 0.159990791
## Robo_transportista_T 0.36609871 0.298072576
## Robo_transportista_V 0.36609871 0.298072576
## Violacion_simple 0.13128044 0.542492798
## Violacion_equiparada 0.13116938 0.581558041
## Violencia_familiar 0.11868419 0.080838613
## Robo_4R_V 0.06334094 0.223401968
## Feminicidio_FGE -0.03546893 0.216921221
## Masacres -0.03546893 -0.146551854
## Acoso_sexual -0.08035853 -0.217300328
## Abuso_sexual -0.08915818 0.005575639
## Tomas_Huachicol_G_GLP -0.15706125 -0.225740270
## Narcomenudeo -0.20105452 -0.296825398
## Homicidio_D_T -0.23347882 0.144503778
## Homicidio_D_A_F -0.47301556 -0.306172477
Finalmente se corre este bloque de código que nos permitirá traducir los resultados numéricos que nos arrojó el proceso anterior para poder interpretar vizualmente el tipo de correlaciones que hay.
lista_municipios <- unique(Base_de_Datos_RStudio$Municipio)
for (muni in lista_municipios) {
datos_muni <- Base_de_Datos_RStudio %>%
filter(Municipio == muni) %>%
select(-Municipio, -Ano)
datos_muni_limpios <- datos_muni %>%
select_if(~ sd(., na.rm = TRUE) > 0)
matriz_muni <- cor(datos_muni_limpios, use = "pairwise.complete.obs", method = "pearson")
corrplot(matriz_muni,
method = "circle",
type = "upper",
tl.col = "black",
tl.cex = 0.5,
tl.srt = 45,
title = muni,
mar = c(0,0,2,0))
}
Estos son los criterios que se deben seguir para interpretar los datos que se obtuvieron.
0.50 a 1.00: Correlación fuerte. Es un foco de atención prioritario: ambos fenómenos ocurren en sincronía dentro de ese municipio.
0.20 a 0.49: Correlación moderada. Coexistencia secundaria: hay tendencia conjunta, pero intervienen otros factores locales.
0.00 a 0.19: Correlación débil/nula. No existe evidencia de sincronía en el territorio.
Negativos (< 0): Correlación inversa: Este es un comportamiento excluyente o con dinámicas criminales que son dispares.