Autores:
Julia Sicarú Martínez Canseco
Daniel Delgado
Alondra I. Huerta
Diego Durán
La violencia y el crimen representan fenómenos complejos que afectan significativamente la cohesión social y el ejercicio de la ciudadanía. En contextos donde la victimización es recurrente, se observa una disminución en la participación ciudadana, un aumento en los niveles de inseguridad y una pérdida progresiva de confianza en las instituciones encargadas de la seguridad y justicia. Este fenómeno tiene implicaciones profundas para el desarrollo democrático y el fortalecimiento del Estado de derecho.
El presente trabajo utiliza un enfoque de dinámica de sistemas para modelar las relaciones causales entre la victimización, el poder criminal y el poder institucional. A través del uso de simulaciones, se busca comprender cómo estos factores interactúan entre sí, generando patrones de retroalimentación que pueden perpetuar o mitigar el ciclo de violencia y victimización. El análisis no solo permite visualizar las posibles trayectorias del sistema en diferentes escenarios, sino que también contribuye a la generación de recomendaciones informadas para la formulación de políticas públicas más efectivas.
Decidimos centrar este análisis en Nuevo León debido a la magnitud y persistencia del problema de violencia en la entidad. Según datos de la Fiscalía General de Justicia del Estado (2025), durante el año 2024, Nuevo León ocupó el quinto lugar a nivel nacional en muertes violentas, con un total de 1,471 homicidios.
Si bien el Gobierno del Estado (2025) reporta una disminución del 37% en los homicidios durante el último año, estas cifras, aunque positivas, no anulan la gravedad del fenómeno. Al contrario, nos invitan a mirar con mayor detalle otras dimensiones del problema, especialmente en ciertos municipios donde la situación es particularmente crítica.
De acuerdo con el Semáforo Delictivo de la Fiscalía, municipios como Monterrey, Santa Catarina y San Nicolás presentan niveles de homicidio significativamente más altos que el resto del estado.
Con esto en mente surge un pregunta clave:
En Nuevo León, ¿Cómo impactan las características del entorno en el nivel de riesgo a ser víctima?
Antes de profundizar en el desarrollo de esta pregunta y de mostrar los resultados, es fundamental comprender dos aspectos clave:
En la literatura de este tema, el concepto es considerado un sinónimo del término “gobernanza criminal”. De acuerdo a Trejo y Ley (2019), este término hace referencia a la relación entre el crimen organizado (prinicipalmente cárteles) y el Estado.
Esto no se trata únicamente de una relación económica. Hoy, todos nos enfrentamos a actores criminales con capacidad estratégica, capaces de leer el mapa institucional, detectar sus debilidades y operar allí donde el Estado está ausente, es débil o cómplice. Estos grupos no solo disputan el control territorial: también pueden replicar funciones del Estado, ofrecer “justicia” a su manera e imponer un orden paralelo, muchas veces a través de la violencia.
Por eso, cuando hablamos de entorno, es útil descomponerlo en dos dimensiones clave para nuestro análisis; el poder criminal y el poder institucional. Ambos coexisten en tensión o colaboración, y su interacción define el contexto en el que las personas perciben —y viven— el riesgo de ser víctimas.
Sabemos que la violencia criminal, en gran medida, se origina en la actividad de los cárteles, y que puede manifestarse de formas muy diversas. Aunque su expresión más extrema son los homicidios, para este primer acercamiento decidimos abordar la violencia criminal como un fenómeno integral, sin desagregar por tipo de delito. Por lo que el alcance de este proyecto está centrado en entender cómo el individuo percibe y experimenta ese entorno.
Ahora si la explicación de nuestra variables de estado .Para contruir un modelo que simulara la gobernanza criminal, tuvimos que tomar en cuenta la intersección de un poder institucional, de un poder criminal y claro una representación invidivdual, del la probabilidad a ser víctima.
library(readxl)
variables_modelo_con_fuente <- read_excel("C:/Users/Sicaru/Desktop/Tecnologico/8vo semestre/analisis de decisiones/tercer_periodo/variables_modelo_con_fuente.xlsx")
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.4.3
variables_modelo_con_fuente %>%
kable("html", caption = "Variables del Modelo con Fuente") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = F)
Variable | Descripcion | Fuente |
---|---|---|
riesgo.de.victimizacion | Porcentaje de personas que han sido víctimas de un delito | NA |
poder.criminal | Nivel de control del crimen organizado; 1 - índice de orden y seguridad | Índice de Orden y Seguridad, World Justice Project México 2024 |
poder.institucional | Efectividad del sistema penal en investigar delitos y proporcionar justicia | Subíndice de investigación penal eficaz, World Justice Project México 2024 |
tasa.de.homicidios | Número de homicidios por cada 100,000 habitantes | INEGI, 2024 |
numero.de.carteles.en.el.estado | Número estimado de cárteles activos en Nuevo León | INFOBAE, 2024 |
carteles.en.mexico | Total de cárteles estimados en el país | El Universal, 2023 |
frecuencia.de.enfrentamientos | Número anual de enfrentamientos armados | Índice de Paz México, 2022 |
numero.de.detenciones | Detenciones anuales vinculadas al crimen organizado | FGE NL, 2024 |
κ.enfrentamientos | Porcentaje de fortalecimiento del crimen por cada enfrentamiento | Índice de Paz México |
κ.detencion | Porcentaje de debilitamiento del crimen por cada detención | Modelo interno (sin fuente externa) |
relevancia.en.el.ambito.publico | Nivel de interés o resonancia social del crimen organizado | Modelo interno (sin fuente externa) |
participacion.ciudadana | Porcentaje de la población que participa activamente en acciones públicas | ENVIPE, 2024 |
actitud.de.indiferencia | Porcentaje de personas indiferentes ante el crimen organizado | Scielo, Estudios Políticos México |
utilidad.del.individuo.para.el.crimen.organizado | Valor estratégico de un individuo para el crimen | Supuesto del modelo |
exposición.en.via.publica | Porcentaje de tiempo o situaciones en que una persona está expuesta en la vía pública | ENVIPE, 2024 |
numero.de.policias | Total de policías estatales y municipales en Nuevo León | Secretaría de Seguridad Pública del Estado, 2024 |
horas.trabajadas.de.los.policias | Total anual estimado de horas laborales por policía | Cálculo propio |
salario.de.los.policias | Salario anual promedio de un policía | Data México, 2024 |
seguridad.social.del.policia | Proporción de policías con acceso efectivo a prestaciones | Data México, 2024 |
desconfianza.en.policias | Porcentaje de la población que desconfía de la policía | World Justice Project México 2024 |
κ.policias.efectivos | Coeficiente de efectividad policial anual | INEGI, Censo de Seguridad Pública, 2024 |
κ.transparencia | Nivel de transparencia institucional | World Justice Project México 2024 |
κ.imparticion.justicia.ineficiente | Ineficiencia en la procuración de justicia | World Justice Project México 2024 |
casos.resueltos | Total anual de casos judiciales resueltos | Secretaría de Seguridad Pública del Estado, 2024 |
casos.impunes | Casos sin resolución judicial | Secretaría de Seguridad Pública del Estado, 2024 |
Para construir los parámetros del subsistema criminal, el Instituto Nacional de Estadística y Geografía (INEGI) fue una fuente clave. Gracias a su información, pudimos calcular indicadores como la tasa de homicidios.
En cuanto al subsistema institucional, utilizamos el Banco de Indicadores del Consejo Nuevo León nos proporcionó información valiosa para construir variables relacionadas con la desconfianza ciudadana en las policías, la presencia efectiva de cuerpos de seguridad y los niveles percibidos de ineficiencia en la impartición de justicia.
Esta combinación de fuentes nos permitió construir un modelo robusto, basado en evidencia, que refleja tanto las capacidades del Estado como la presencia del crimen en el entorno.
Para construir un modelo que simulara los escenarios de gobernanza criminal, fue necesario identificar tres grandes componentes o variables de estado
El Poder institucional
Representa la fuerza, legitimidad y efectividad del Estado para impartir justicia a través de los cuerpos policiales y del poder judicial y/o las físcalias
El Poder criminal
Refleja la presencia y capacidad de accion del crimen organizado. Tomando en cuenta todos lo elementos que los componen y lo hacen más fuerte a lo largo del tiempo
Riesgo de Victimización
Se refiere a la probabilidad de que una persona sea víctima del la violencia criminal debido al contexto del estado.
A continuación podrás observar el comportamiento de cada variable de estado, también conocidas como subsistemas
Lo que verás a continuación es una representación visual del modelo que desarrollamos. Cada componente refleja cómo interactúan el poder criminal, el poder institucional y el riesgo de victimización
En esta sección encontrarás el código comentado que utilizamos para construir el modelo. Podrás ver cómo traducimos las variables de estado en un sistema lógico, listo para ser simulado y analizado en R.
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::group_rows() masks kableExtra::group_rows()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(deSolve)
## Warning: package 'deSolve' was built under R version 4.4.3
library(ggplot2)
# Variables de estado iniciales
InitialConditions <- c(
riesgo.de.victimizacion = 35/100, #porcentaje
poder.criminal = (100-38)/100, #índice de orden y seguridad de Nuevo León World Justice Project de México 2024.
poder.institucional = 22/100 #subíndice de investigación penal eficaz de Nuevo León World Justice Project de México 2024.
)
# Tiempo
times <- seq(0, 50, 1) #años
riesgo.violencia.criminal <- function(t, state, parameters) {
with(as.list(c(state, parameters)), {
# Endogenous auxiliary variables
involucramiento.social <- (relevancia.en.el.ambito.publico * participacion.ciudadana) / actitud.de.indiferencia
payroll_ref <- horas.trabajadas.de.los.policias * salario.de.los.policias * seguridad.social.del.policia * numero.de.policias # coeficiente de condiciones laborales de policias
condiciones.laborales.de.policias <-(horas.trabajadas.de.los.policias * salario.de.los.policias * seguridad.social.del.policia * numero.de.policias) / payroll_ref
confianza.ciudadana.en.las.instituciones <- casos.impunes
disposicion.del.individuo.a.denunciar <- poder.criminal * confianza.ciudadana.en.las.instituciones
cooperacion.del.individuo <- utilidad.del.individuo.para.el.crimen.organizado / disposicion.del.individuo.a.denunciar
competencia.entre.carteles <- numero.de.carteles.en.el.estado / carteles.en.mexico
violencia.en.el.estado <- competencia.entre.carteles * tasa.de.homicidios
probabilidad.de.ser.atacado.arbitrariamente <- violencia.en.el.estado * exposición.en.via.publica
probabilidad.de.ser.objeto.de.ataque <- involucramiento.social / cooperacion.del.individuo
medidas.de.proteccion <- riesgo.de.victimizacion / disposicion.del.individuo.a.denunciar
presencia.efectiva.de.cuerpos.de.seguridad <- poder.institucional
fort.policial <- κ.policias.efectivos * condiciones.laborales.de.policias * (1 - poder.institucional)
deb.policial <- desconfianza.en.policias * (1 - condiciones.laborales.de.policias) * poder.institucional
total.casos <- casos.resueltos + casos.impunes # 1350
tasa.resueltos <- casos.resueltos / total.casos # 0.667
tasa.impunes <- casos.impunes / total.casos # 0.333
fort.judicial <- κ.transparencia * tasa.resueltos * (1 - poder.institucional)
deb.judicial <- κ.imparticion.justicia.ineficiente * tasa.impunes * poder.institucional
#percepcion.de.seguridad.estatal <- debilitamiento.criminal
# Flow variables (rate of change)
# SISTEMA CRIMINAL
fortalecimiento.criminal <- κ.enfrentamientos * competencia.entre.carteles * frecuencia.de.enfrentamientos * (1 - poder.criminal) # porcentaje/año
debilitamiento.criminal <- κ.detencion * presencia.efectiva.de.cuerpos.de.seguridad * numero.de.detenciones * poder.criminal # porcentaje/año
# SISTEMA INSTITUCIONAL
fortalecimiento.institucional <- fort.policial + fort.judicial
debilitacion.institucional <- deb.policial + deb.judicial
# SISTEMA INDIVIDUAL
incremento.de.riesgo <- probabilidad.de.ser.objeto.de.ataque *
probabilidad.de.ser.atacado.arbitrariamente
disminucion.de.riesgo <- medidas.de.proteccion
# Stock variables (derivatives)
driesgo.de.victimizacion <- incremento.de.riesgo - disminucion.de.riesgo
dpoder.criminal <- fortalecimiento.criminal - debilitamiento.criminal
dpoder.institucional <- fortalecimiento.institucional - debilitacion.institucional
# if (t == 0) cat("CLP at t=0 =", condiciones.laborales.de.policias, "\n")
list(c(driesgo.de.victimizacion, dpoder.criminal, dpoder.institucional))
})
}
# Parámetros
parameters <- c(
#SISTEMA CRIMINAL
tasa.de.homicidios = 25/100000, #homicidios/personas
numero.de.carteles.en.el.estado = 15, #numero de carteles en NL
carteles.en.mexico = 150, #numero de carteles en el país.
frecuencia.de.enfrentamientos = 153, #enfrentamientos/año
numero.de.detenciones = 27, #detenciones/año
κ.enfrentamientos = 0.003, # 0.3 % ganancia por enfrentamiento
κ.detencion = 0.010, # 1 % pérdida por detención
#SISTEMA INDIVIDUAL
relevancia.en.el.ambito.publico = 0.2, #unidades porcentaje, se moverá a escenario.
participacion.ciudadana = 0.01, #unidades porcentaje, se moverá a escenario.
actitud.de.indiferencia = 0.5, #unidades porcentaje, se moverá a escenario.
utilidad.del.individuo.para.el.crimen.organizado = 0.6, #porcentaje pero modificar unidades o medición.
exposición.en.via.publica = 0.6, #porcentaje
# SISTEMA INSTITUCIONAL
numero.de.policias= 7685 , #policias totales en todo el estado (fuerza civil, municipales)
horas.trabajadas.de.los.policias = 3300, #horas al año (considerando 11 horas por 50 semanas al año)
salario.de.los.policias = 12 * 15855, #salario anual en pesos mexicanos de un policia
seguridad.social.del.policia = 3/5,#prestaciones activas por el gobierno estatal hacia los elementos de seguridad del estado
desconfianza.en.policias = 1 - 0.7251, #coeficiente de % personas que confían en la policia
κ.policias.efectivos = 0.004, #coeficiente de policias efectivos al año
κ.transparencia = 0.5017, # índice de transparencia
κ.imparticion.justicia.ineficiente = 1 - 0.28, # subíndice de procuración e impartición de justicia eficiente y eficaz del Indice de Estado de Derecho
casos.resueltos = 13500, #casos
casos.impunes = 10000 #casos
)
# Resolución
out <- ode(y = InitialConditions,
times = times,
func = riesgo.violencia.criminal,
parms = parameters,
method = "rk4")
# Convertir la matriz out a data.frame
df <- as.data.frame(out)
# Transformar a formato long
df_long <- df %>%
pivot_longer(
cols = c(riesgo.de.victimizacion, poder.criminal, poder.institucional),
names_to = "Variable",
values_to = "Nivel"
) %>%
mutate(
# Renombrar las variables para que las etiquetas queden más legibles
Variable = case_when(
Variable == "riesgo.de.victimizacion" ~ "Riesgo de Victimización",
Variable == "poder.criminal" ~ "Poder Criminal",
Variable == "poder.institucional" ~ "Poder Institucional"
)
)
ggplot(df_long, aes(x = time, y = Nivel, color = Variable)) +
geom_line(size = 1.2) +
labs(
title = "Evolución de las Variables del Modelo",
x = "Tiempo (años)",
y = "Niveles (%)",
color = "Variable"
) +
scale_color_manual(
values = c(
"Riesgo de Victimización" = "#1f78b4", # azul
"Poder Criminal" = "#e31a1c", # rojo
"Poder Institucional" = "#33a02c" # verde
)
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
axis.title = element_text(face = "bold"),
legend.position = "top",
legend.title = element_text(face = "bold")
)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
# Poder Criminal
ggplot(df, aes(x = time, y = poder.criminal)) +
geom_line(color = "#e31a1c", size = 1.2) +
labs(
title = "Evolución del Poder Criminal",
x = "Tiempo (años)",
y = "Poder Criminal (%)"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
axis.title = element_text(face = "bold")
)
Observa que su comportamiento también está en función del comportamiento de las demás variables de estado. En este caso en poder criminal va a bajar solo sí el poder institucional es mayor.
# Riesgo de Victimización
ggplot(df, aes(x = time, y = riesgo.de.victimizacion)) +
geom_line(color = "#1f78b4", size = 1.2) +
labs(
title = "Evolución del Riesgo de Victimización",
x = "Tiempo (años)",
y = "Riesgo de Victimización (%)"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
axis.title = element_text(face = "bold")
)
El comportamiento del riesgo de victimización, es curioso porque no contempla la años de vida de una persona, pero sí representa que tan probable es a ser víctima de algun tipo de violencia por los factores en el tiempo que pasan en un determinado periodo. Este es otro alcance de la investigación.
# Poder Institucional
ggplot(df, aes(x = time, y = poder.institucional)) +
geom_line(color = "#33a02c", size = 1.2) +
labs(
title = "Evolución del Poder Institucional",
x = "Tiempo (años)",
y = "Poder Institucional (%)"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
axis.title = element_text(face = "bold")
)
Lo interesante de este comportamiento es que el poder institucional crece de forma abrupta en cierto punto del modelo. Este fenómeno se explica, principalmente, por dos razones.
La primera tiene que ver con la estructura interna del sistema, particularmente con la forma en que fluye el poder institucional dentro del diagrama de flujo (puedes consultarlo más arriba). En ese flujo se identifican dos bucles principales: uno de reforzamiento y otro de balanceo. Esa interacción provoca un crecimiento acelerado en ciertos escenarios, hasta que el sistema alcanza cierto equilibrio.
La segunda razón está relacionada con su estabilización a lo largo del tiempo. Y es que, en este modelo, el poder institucional no crece de forma infinita. Existe un límite, y ese límite está definido por el nivel de violencia ejercida por el crimen organizado; es decir, por la fuerza del poder criminal. Así, el crecimiento institucional está siempre condicionado por el entorno en el que opera.
Para capturar la complejidad y variabilidad inherente a contextos de violencia estructural, empleamos una metodología basada en incertidumbre y generación de escenarios. Esta técnica permite explorar cómo distintas combinaciones de factores; como la tasa de homicidios, el número de cárteles activos en una región o la distribución del crimen organizado en el país afectan dinámicas clave como el riesgo de victimización, el poder criminal y la capacidad institucional.
En lugar de asumir condiciones fijas, modelamos múltiples escenarios posibles mediante simulaciones dinámicas, permitiendo observar trayectorias divergentes en función de variables inciertas. Esta aproximación resulta particularmente útil para sistemas sociales complejos donde interactúan gobernanza criminal, colapso institucional y decisiones individuales.
Así, el modelo no solo describe el presente, sino que ayuda a anticipar futuros plausibles bajo diferentes configuraciones de violencia y respuesta estatal. Esta metodológía es importante para entender en donde tendría un mayor impacto la creación de alguna política pública.
NOTA: Para determinar las variables más adecuadas y relevantes para nuestro modelo, fue necesario realizar un análisis exhaustivo y detallado. Sabemos que esta sección incluye una cantidad considerable de código y explicaciones técnicas, que pueden resultar densas para algunos lectores. Si prefieres una visión más general, puedes ir directamente al apartado de Conclusiones Generales o al de Políticas de Intervención, donde resumimos los hallazgos clave
En esta primera etapa del análisis, estaremos modelando tres incertidumbres: la tasa de homicidios, el número de cárteles en el estado y el número total de cárteles en México. Estas variables representan dimensiones críticas de la gobernanza criminal y nos permiten observar cómo su variación incide en los niveles de riesgo de victimización, poder criminal y capacidad institucional. Antes de incorporar más incertidumbres al modelo, comenzaremos con estas tres para entender sus efectos individuales y combinados. Más adelante, ampliaremos el análisis para incluir el impacto de todas las variables exógenas sobre todas las variables de estado del sistema.
library(tidyverse)
library(deSolve)
# 1. Condiciones iniciales y tiempos
InitialConditions <- c(
riesgo.de.victimizacion = 35 / 100,
poder.criminal = (100 - 38) / 100,
poder.institucional = 22 / 100
)
times <- seq(0, 50, by = 1)
# 2. Función del modelo
riesgo.violencia.criminal <- function(t, state, parameters) {
with(as.list(c(state, parameters)), {
involucramiento.social <- (relevancia.en.el.ambito.publico * participacion.ciudadana) / actitud.de.indiferencia
payroll_ref <- horas.trabajadas.de.los.policias * salario.de.los.policias * seguridad.social.del.policia * numero.de.policias
max_payroll <- 30000 * 3300 * (12 * 15855) * (3/5)
condiciones.laborales.de.policias <- payroll_ref / max_payroll
confianza.ciudadana.en.las.instituciones <- casos.impunes
disposicion.del.individuo.a.denunciar <- poder.criminal * confianza.ciudadana.en.las.instituciones
cooperacion.del.individuo <- utilidad.del.individuo.para.el.crimen.organizado / disposicion.del.individuo.a.denunciar
competencia.entre.carteles <- numero.de.carteles.en.el.estado / carteles.en.mexico
violencia.en.el.estado <- competencia.entre.carteles * tasa.de.homicidios
probabilidad.de.ser.atacado.arbitrariamente <- violencia.en.el.estado * exposición.en.via.publica
probabilidad.de.ser.objeto.de.ataque <- involucramiento.social / cooperacion.del.individuo
medidas.de.proteccion <- riesgo.de.victimizacion / disposicion.del.individuo.a.denunciar
presencia.efectiva.de.cuerpos.de.seguridad <- poder.institucional
fort.policial <- κ.policias.efectivos * condiciones.laborales.de.policias * (1 - poder.institucional)
deb.policial <- desconfianza.en.policias * (1 - condiciones.laborales.de.policias) * poder.institucional
total.casos <- casos.resueltos + casos.impunes
tasa.resueltos <- casos.resueltos / total.casos
tasa.impunes <- casos.impunes / total.casos
fort.judicial <- κ.transparencia * tasa.resueltos * (1 - poder.institucional)
deb.judicial <- κ.imparticion.justicia.ineficiente * tasa.impunes * poder.institucional
fortalecimiento.criminal <- κ.enfrentamientos * competencia.entre.carteles * frecuencia.de.enfrentamientos * (1 - poder.criminal)
debilitamiento.criminal <- κ.detencion * presencia.efectiva.de.cuerpos.de.seguridad * numero.de.detenciones * poder.criminal
fortalecimiento.institucional <- fort.policial + fort.judicial
debilitacion.institucional <- deb.policial + deb.judicial
incremento.de.riesgo <- probabilidad.de.ser.objeto.de.ataque * probabilidad.de.ser.atacado.arbitrariamente
disminucion.de.riesgo <- medidas.de.proteccion
driesgo.de.victimizacion <- incremento.de.riesgo - disminucion.de.riesgo
dpoder.criminal <- fortalecimiento.criminal - debilitamiento.criminal
dpoder.institucional <- fortalecimiento.institucional - debilitacion.institucional
list(c(driesgo.de.victimizacion, dpoder.criminal, dpoder.institucional))
})
}
# 3. Crear grilla de escenarios
x1 <- seq(25/100, 100/100, 12/100) # tasa.de.homicidios
x2 <- seq(15, 500, 30) # numero.de.carteles.en.el.estado
x3 <- seq(150, 1000, 25) # carteles.en.mexico
Xs <- expand.grid(
tasa.de.homicidios = x1,
numero.de.carteles.en.el.estado = x2,
carteles.en.mexico = x3
)
Xs$Run.ID <- 1:nrow(Xs)
# 4. Simulación por cada escenario
out_all <- list()
for (i in 1:nrow(Xs)) {
parameters <- c(
tasa.de.homicidios = Xs$tasa.de.homicidios[i],
numero.de.carteles.en.el.estado = Xs$numero.de.carteles.en.el.estado[i],
carteles.en.mexico = Xs$carteles.en.mexico[i],
frecuencia.de.enfrentamientos = 153,
numero.de.detenciones = 27,
κ.enfrentamientos = 0.003,
κ.detencion = 0.010,
relevancia.en.el.ambito.publico = 0.2,
participacion.ciudadana = 0.01,
actitud.de.indiferencia = 0.5,
utilidad.del.individuo.para.el.crimen.organizado = 0.6,
exposición.en.via.publica = 0.6,
numero.de.policias = 7685,
horas.trabajadas.de.los.policias = 3300,
salario.de.los.policias = 12 * 15855,
seguridad.social.del.policia = 3 / 5,
desconfianza.en.policias = 1 - 0.7251,
κ.policias.efectivos = 0.004,
κ.transparencia = 0.5017,
κ.imparticion.justicia.ineficiente = 1 - 0.28,
casos.resueltos = 13500,
casos.impunes = 10000
)
out <- ode(
y = InitialConditions,
times = times,
func = riesgo.violencia.criminal,
parms = parameters,
method = "rk4"
)
out_df <- as.data.frame(out)
out_df$Run.ID <- Xs$Run.ID[i]
out_all[[i]] <- out_df
}
# 5. Unir resultados
out_all_df <- bind_rows(out_all)
out_all_df <- left_join(out_all_df, Xs, by = "Run.ID")
# Comportamiento de las variables en el poder criminal
p1<- ggplot(out_all_df,aes(x=time,y=poder.criminal,group=Run.ID, colour=tasa.de.homicidios))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
p2<- ggplot(out_all_df,aes(x=time,y=poder.criminal,group=Run.ID, colour= numero.de.carteles.en.el.estado))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
p3<- ggplot(out_all_df,aes(x=time,y=poder.criminal,group=Run.ID, colour= carteles.en.mexico))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
# Ahora puedes ver las gráficas individualmente
p1
p2
p3
# Para ver las gráficas juntas, se puede usar gridExtra
library(gridExtra)
## Warning: package 'gridExtra' was built under R version 4.4.3
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
grid.arrange(p1, p2, p3, ncol = 1)
Lo que se observa sugiere que la variable de tasa de homicidios no es tan relevante para este análisis. Sin embargo, cuando analizamos la variable del número de cárteles en el estado, todo empieza a cobrar más sentido. Esta variable muestra que una menor presencia de cárteles puede reducir el poder criminal, y según los resultados del modelo, el rango óptimo estaría entre 100 y 200 cárteles para que ese poder no continúe aumentando.
Por otro lado, la variable de cárteles en México presenta un comportamiento algo extraño. Esto se debe a que está definida en función del número de cárteles en el estado, lo que termina diluyendo su relevancia dentro del modelo. Por eso, aunque forma parte del sistema, no aporta tanto valor al análisis final.
Los siguientes parametros a analizar son:
library(tidyverse)
library(deSolve)
# 1. Condiciones iniciales y tiempos
InitialConditions <- c(
riesgo.de.victimizacion = 35 / 100,
poder.criminal = (100 - 38) / 100,
poder.institucional = 22 / 100
)
times <- seq(0, 50, by = 1)
# 2. Función del modelo
riesgo.violencia.criminal <- function(t, state, parameters) {
with(as.list(c(state, parameters)), {
involucramiento.social <- (relevancia.en.el.ambito.publico * participacion.ciudadana) / actitud.de.indiferencia
payroll_ref <- horas.trabajadas.de.los.policias * salario.de.los.policias * seguridad.social.del.policia * numero.de.policias
max_payroll <- 30000 * 3300 * (12 * 15855) * (3/5)
condiciones.laborales.de.policias <- payroll_ref / max_payroll
confianza.ciudadana.en.las.instituciones <- casos.impunes
disposicion.del.individuo.a.denunciar <- poder.criminal * confianza.ciudadana.en.las.instituciones
cooperacion.del.individuo <- utilidad.del.individuo.para.el.crimen.organizado / disposicion.del.individuo.a.denunciar
competencia.entre.carteles <- numero.de.carteles.en.el.estado / carteles.en.mexico
violencia.en.el.estado <- competencia.entre.carteles * tasa.de.homicidios
probabilidad.de.ser.atacado.arbitrariamente <- violencia.en.el.estado * exposición.en.via.publica
probabilidad.de.ser.objeto.de.ataque <- involucramiento.social / cooperacion.del.individuo
medidas.de.proteccion <- riesgo.de.victimizacion / disposicion.del.individuo.a.denunciar
presencia.efectiva.de.cuerpos.de.seguridad <- poder.institucional
fort.policial <- κ.policias.efectivos * condiciones.laborales.de.policias * (1 - poder.institucional)
deb.policial <- desconfianza.en.policias * (1 - condiciones.laborales.de.policias) * poder.institucional
total.casos <- casos.resueltos + casos.impunes
tasa.resueltos <- casos.resueltos / total.casos
tasa.impunes <- casos.impunes / total.casos
fort.judicial <- κ.transparencia * tasa.resueltos * (1 - poder.institucional)
deb.judicial <- κ.imparticion.justicia.ineficiente * tasa.impunes * poder.institucional
fortalecimiento.criminal <- κ.enfrentamientos * competencia.entre.carteles * frecuencia.de.enfrentamientos * (1 - poder.criminal)
debilitamiento.criminal <- κ.detencion * presencia.efectiva.de.cuerpos.de.seguridad * numero.de.detenciones * poder.criminal
fortalecimiento.institucional <- fort.policial + fort.judicial
debilitacion.institucional <- deb.policial + deb.judicial
incremento.de.riesgo <- probabilidad.de.ser.objeto.de.ataque * probabilidad.de.ser.atacado.arbitrariamente
disminucion.de.riesgo <- medidas.de.proteccion
driesgo.de.victimizacion <- incremento.de.riesgo - disminucion.de.riesgo
dpoder.criminal <- fortalecimiento.criminal - debilitamiento.criminal
dpoder.institucional <- fortalecimiento.institucional - debilitacion.institucional
list(c(driesgo.de.victimizacion, dpoder.criminal, dpoder.institucional))
})
}
# 3. Crear grilla de escenarios
x4 <- seq(153, 500, 25) # frecuencia.de.enfrentamientos
x5 <- seq(27, 100, 5) # numero.de.detenciones
x6 <- seq(0.03, 0.9, 0.05) # κ.enfrentamientos
Xs <- expand.grid(
frecuencia.de.enfrentamientos = x4,
numero.de.detenciones = x5,
κ.enfrentamientos = x6
)
Xs$Run.ID <- 1:nrow(Xs)
# 4. Simulación por cada escenario
out_all <- list()
for (i in 1:nrow(Xs)) {
parameters <- c(
tasa.de.homicidios = 25/100000,
numero.de.carteles.en.el.estado = 15,
carteles.en.mexico = 153,
frecuencia.de.enfrentamientos = Xs$frecuencia.de.enfrentamientos[i],
numero.de.detenciones = Xs$numero.de.detenciones[i],
κ.enfrentamientos = Xs$κ.enfrentamientos[i],
κ.detencion = 0.010,
relevancia.en.el.ambito.publico = 0.2,
participacion.ciudadana = 0.01,
actitud.de.indiferencia = 0.5,
utilidad.del.individuo.para.el.crimen.organizado = 0.6,
exposición.en.via.publica = 0.6,
numero.de.policias = 7685,
horas.trabajadas.de.los.policias = 3300,
salario.de.los.policias = 12 * 15855,
seguridad.social.del.policia = 3 / 5,
desconfianza.en.policias = 1 - 0.7251,
κ.policias.efectivos = 0.004,
κ.transparencia = 0.5017,
κ.imparticion.justicia.ineficiente = 1 - 0.28,
casos.resueltos = 13500,
casos.impunes = 10000
)
out <- ode(
y = InitialConditions,
times = times,
func = riesgo.violencia.criminal,
parms = parameters,
method = "rk4"
)
out_df <- as.data.frame(out)
out_df$Run.ID <- Xs$Run.ID[i]
out_all[[i]] <- out_df
}
# 5. Unir resultados
out_all_df <- bind_rows(out_all)
out_all_df <- left_join(out_all_df, Xs, by = "Run.ID")
#Comportamiento de las variables en su subsitema (criminal)
p1<- ggplot(out_all_df,aes(x=time,y=poder.criminal,group=Run.ID, colour=frecuencia.de.enfrentamientos))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
p2<- ggplot(out_all_df,aes(x=time,y=poder.criminal,group=Run.ID, colour= numero.de.detenciones))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
p3<- ggplot(out_all_df,aes(x=time,y=poder.criminal,group=Run.ID, colour= κ.enfrentamientos))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
# Ahora puedes ver las gráficas individualmente
p1
p2
p3
# Para ver las gráficas juntas, se puede usar gridExtra
library(gridExtra)
grid.arrange(p1, p2, p3, ncol = 1)
El poder criminal se mantiene bajo durante casi todo el periodo, pero disminuye abruptamente al final, mostrando un comportamiento explosivo. Esto sugiere que factores como la frecuencia de enfrentamientos y el número de detenciones acumulan tensiones que detonan un colapso. Lo que indica que no son relevantes.
library(tidyverse)
library(deSolve)
# 1. Condiciones iniciales y tiempos
InitialConditions <- c(
riesgo.de.victimizacion = 35 / 100,
poder.criminal = (100 - 38) / 100,
poder.institucional = 22 / 100
)
times <- seq(0, 50, by = 1)
# 2. Función del modelo
riesgo.violencia.criminal <- function(t, state, parameters) {
with(as.list(c(state, parameters)), {
involucramiento.social <- (relevancia.en.el.ambito.publico * participacion.ciudadana) / actitud.de.indiferencia
payroll_ref <- horas.trabajadas.de.los.policias * salario.de.los.policias * seguridad.social.del.policia * numero.de.policias
max_payroll <- 30000 * 3300 * (12 * 15855) * (3/5)
condiciones.laborales.de.policias <- payroll_ref / max_payroll
confianza.ciudadana.en.las.instituciones <- casos.impunes
disposicion.del.individuo.a.denunciar <- poder.criminal * confianza.ciudadana.en.las.instituciones
cooperacion.del.individuo <- utilidad.del.individuo.para.el.crimen.organizado / disposicion.del.individuo.a.denunciar
competencia.entre.carteles <- numero.de.carteles.en.el.estado / carteles.en.mexico
violencia.en.el.estado <- competencia.entre.carteles * tasa.de.homicidios
probabilidad.de.ser.atacado.arbitrariamente <- violencia.en.el.estado * exposición.en.via.publica
probabilidad.de.ser.objeto.de.ataque <- involucramiento.social / cooperacion.del.individuo
medidas.de.proteccion <- riesgo.de.victimizacion / disposicion.del.individuo.a.denunciar
presencia.efectiva.de.cuerpos.de.seguridad <- poder.institucional
fort.policial <- κ.policias.efectivos * condiciones.laborales.de.policias * (1 - poder.institucional)
deb.policial <- desconfianza.en.policias * (1 - condiciones.laborales.de.policias) * poder.institucional
total.casos <- casos.resueltos + casos.impunes
tasa.resueltos <- casos.resueltos / total.casos
tasa.impunes <- casos.impunes / total.casos
fort.judicial <- κ.transparencia * tasa.resueltos * (1 - poder.institucional)
deb.judicial <- κ.imparticion.justicia.ineficiente * tasa.impunes * poder.institucional
fortalecimiento.criminal <- κ.enfrentamientos * competencia.entre.carteles * frecuencia.de.enfrentamientos * (1 - poder.criminal)
debilitamiento.criminal <- κ.detencion * presencia.efectiva.de.cuerpos.de.seguridad * numero.de.detenciones * poder.criminal
fortalecimiento.institucional <- fort.policial + fort.judicial
debilitacion.institucional <- deb.policial + deb.judicial
incremento.de.riesgo <- probabilidad.de.ser.objeto.de.ataque * probabilidad.de.ser.atacado.arbitrariamente
disminucion.de.riesgo <- medidas.de.proteccion
driesgo.de.victimizacion <- incremento.de.riesgo - disminucion.de.riesgo
dpoder.criminal <- fortalecimiento.criminal - debilitamiento.criminal
dpoder.institucional <- fortalecimiento.institucional - debilitacion.institucional
list(c(driesgo.de.victimizacion, dpoder.criminal, dpoder.institucional))
})
}
# 3. Crear grilla de escenarios
x7 <- seq(0.010, 0.2, 0.01) # κ.detencion
x8 <- seq(0.2, 0.7, 0.05) # relevancia.en.el.ambito.publico
x9 <- seq(0.01, 0.2, 0.01) # participacion.ciudadana
Xs <- expand.grid(
κ.detencion = x7,
relevancia.en.el.ambito.publico = x8,
participacion.ciudadana = x9
)
Xs$Run.ID <- 1:nrow(Xs)
# 4. Simulación por cada escenario
out_all <- list()
for (i in 1:nrow(Xs)) {
parameters <- c(
tasa.de.homicidios = 25 / 100000,
numero.de.carteles.en.el.estado = 15,
carteles.en.mexico = 150,
frecuencia.de.enfrentamientos = 153,
numero.de.detenciones = 27,
κ.enfrentamientos = 0.003,
κ.detencion = Xs$κ.detencion[i],
relevancia.en.el.ambito.publico = Xs$relevancia.en.el.ambito.publico[i],
participacion.ciudadana = Xs$participacion.ciudadana[i],
actitud.de.indiferencia = 0.5,
utilidad.del.individuo.para.el.crimen.organizado = 0.6,
exposición.en.via.publica = 0.6,
numero.de.policias = 7685,
horas.trabajadas.de.los.policias = 3300,
salario.de.los.policias = 12 * 15855,
seguridad.social.del.policia = 3 / 5,
desconfianza.en.policias = 1 - 0.7251,
κ.policias.efectivos = 0.004,
κ.transparencia = 0.5017,
κ.imparticion.justicia.ineficiente = 1 - 0.28,
casos.resueltos = 13500,
casos.impunes = 10000
)
out <- ode(
y = InitialConditions,
times = times,
func = riesgo.violencia.criminal,
parms = parameters,
method = "rk4"
)
out_df <- as.data.frame(out)
out_df$Run.ID <- Xs$Run.ID[i]
out_all[[i]] <- out_df
}
# 5. Unir resultados
out_all_df <- bind_rows(out_all)
out_all_df <- left_join(out_all_df, Xs, by = "Run.ID")
# Comportamiento de las variables exógenas en la varible de estado "riesgo.de.victimizacion"
p1<- ggplot(out_all_df,aes(x=time,y=riesgo.de.victimizacion,group=Run.ID, colour=κ.detencion))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
p2<- ggplot(out_all_df,aes(x=time,y=riesgo.de.victimizacion,group=Run.ID, colour= relevancia.en.el.ambito.publico))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
p3<- ggplot(out_all_df,aes(x=time,y=riesgo.de.victimizacion,group=Run.ID, colour= participacion.ciudadana))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
# Ahora puedes ver las gráficas individualmente
p1
p2
p3
# Para ver las gráficas juntas, se puede usar gridExtra
library(gridExtra)
grid.arrange(p1, p2, p3, ncol = 1)
Las tres gráficas muestran cómo el riesgo de victimización aumenta con el tiempo, pero su velocidad de crecimiento varía según ciertos factores. Una mayor tasa de detención, participación ciudadana y relevancia del tema en el ámbito público ayudan a desacelerar ese crecimiento. Esto sugiere que fortalecer la acción institucional y el involucramiento social puede mitigar el riesgo percibido por la población.
Los siguientes parámetros a analizar son:
library(tidyverse)
library(deSolve)
# 1. Condiciones iniciales y tiempos
InitialConditions <- c(
riesgo.de.victimizacion = 35 / 100,
poder.criminal = (100 - 38) / 100,
poder.institucional = 22 / 100
)
times <- seq(0, 50, by = 1)
# 2. Función del modelo
riesgo.violencia.criminal <- function(t, state, parameters) {
with(as.list(c(state, parameters)), {
involucramiento.social <- (relevancia.en.el.ambito.publico * participacion.ciudadana) / actitud.de.indiferencia
payroll_ref <- horas.trabajadas.de.los.policias * salario.de.los.policias * seguridad.social.del.policia * numero.de.policias
max_payroll <- 30000 * 3300 * (12 * 15855) * (3/5)
condiciones.laborales.de.policias <- payroll_ref / max_payroll
confianza.ciudadana.en.las.instituciones <- casos.impunes
disposicion.del.individuo.a.denunciar <- poder.criminal * confianza.ciudadana.en.las.instituciones
cooperacion.del.individuo <- utilidad.del.individuo.para.el.crimen.organizado / disposicion.del.individuo.a.denunciar
competencia.entre.carteles <- numero.de.carteles.en.el.estado / carteles.en.mexico
violencia.en.el.estado <- competencia.entre.carteles * tasa.de.homicidios
probabilidad.de.ser.atacado.arbitrariamente <- violencia.en.el.estado * exposición.en.via.publica
probabilidad.de.ser.objeto.de.ataque <- involucramiento.social / cooperacion.del.individuo
medidas.de.proteccion <- riesgo.de.victimizacion / disposicion.del.individuo.a.denunciar
presencia.efectiva.de.cuerpos.de.seguridad <- poder.institucional
fort.policial <- κ.policias.efectivos * condiciones.laborales.de.policias * (1 - poder.institucional)
deb.policial <- desconfianza.en.policias * (1 - condiciones.laborales.de.policias) * poder.institucional
total.casos <- casos.resueltos + casos.impunes
tasa.resueltos <- casos.resueltos / total.casos
tasa.impunes <- casos.impunes / total.casos
fort.judicial <- κ.transparencia * tasa.resueltos * (1 - poder.institucional)
deb.judicial <- κ.imparticion.justicia.ineficiente * tasa.impunes * poder.institucional
fortalecimiento.criminal <- κ.enfrentamientos * competencia.entre.carteles * frecuencia.de.enfrentamientos * (1 - poder.criminal)
debilitamiento.criminal <- κ.detencion * presencia.efectiva.de.cuerpos.de.seguridad * numero.de.detenciones * poder.criminal
fortalecimiento.institucional <- fort.policial + fort.judicial
debilitacion.institucional <- deb.policial + deb.judicial
incremento.de.riesgo <- probabilidad.de.ser.objeto.de.ataque * probabilidad.de.ser.atacado.arbitrariamente
disminucion.de.riesgo <- medidas.de.proteccion
driesgo.de.victimizacion <- incremento.de.riesgo - disminucion.de.riesgo
dpoder.criminal <- fortalecimiento.criminal - debilitamiento.criminal
dpoder.institucional <- fortalecimiento.institucional - debilitacion.institucional
list(c(driesgo.de.victimizacion, dpoder.criminal, dpoder.institucional))
})
}
# 3. Crear grilla de escenarios
x10 <- seq(0.5, 0.7, 0.03) # actitud.de.indiferencia
x11 <- seq(0.6, 0.9, 0.03) # utilidad.del.individuo.para.el.crimen.organizado
x12 <- seq(0.6, 0.9, 0.03) # exposición.en.via.publica
Xs <- expand.grid(
actitud.de.indiferencia = x7,
utilidad.del.individuo.para.el.crimen.organizado = x8,
exposición.en.via.publica = x9
)
Xs$Run.ID <- 1:nrow(Xs)
# 4. Simulación por cada escenario
out_all <- list()
for (i in 1:nrow(Xs)) {
parameters <- c(
tasa.de.homicidios = 25 / 100000,
numero.de.carteles.en.el.estado = 15,
carteles.en.mexico = 150,
frecuencia.de.enfrentamientos = 153,
numero.de.detenciones = 27,
κ.enfrentamientos = 0.003,
κ.detencion = 0.010,
relevancia.en.el.ambito.publico = 0.2,
participacion.ciudadana = 0.01,
actitud.de.indiferencia = Xs$actitud.de.indiferencia[i],
utilidad.del.individuo.para.el.crimen.organizado = Xs$utilidad.del.individuo.para.el.crimen.organizado[i],
exposición.en.via.publica = Xs$exposición.en.via.publica[i],
numero.de.policias = 7685,
horas.trabajadas.de.los.policias = 3300,
salario.de.los.policias = 12 * 15855,
seguridad.social.del.policia = 3 / 5,
desconfianza.en.policias = 1 - 0.7251,
κ.policias.efectivos = 0.004,
κ.transparencia = 0.5017,
κ.imparticion.justicia.ineficiente = 1 - 0.28,
casos.resueltos = 13500,
casos.impunes = 10000
)
out <- ode(
y = InitialConditions,
times = times,
func = riesgo.violencia.criminal,
parms = parameters,
method = "rk4"
)
out_df <- as.data.frame(out)
out_df$Run.ID <- Xs$Run.ID[i]
out_all[[i]] <- out_df
}
# 5. Unir resultados
out_all_df <- bind_rows(out_all)
out_all_df <- left_join(out_all_df, Xs, by = "Run.ID")
# Gráficas de los parámetros en su subsitema
p1<- ggplot(out_all_df,aes(x=time,y=riesgo.de.victimizacion,group=Run.ID, colour=actitud.de.indiferencia))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
p2<- ggplot(out_all_df,aes(x=time,y=riesgo.de.victimizacion,group=Run.ID, colour= utilidad.del.individuo.para.el.crimen.organizado))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
p3<- ggplot(out_all_df,aes(x=time,y=riesgo.de.victimizacion,group=Run.ID, colour= exposición.en.via.publica))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
# Ahora puedes ver las gráficas individualmente
p1
p2
p3
# Para ver las gráficas juntas, se puede usar gridExtra
library(gridExtra)
grid.arrange(p1, p2, p3, ncol = 1)
Lo interesante de este comportamiento es que sí hay parámetros relevenantes. En el caso de actitud de indiferencia, vemos que debes aumentar tu apatía por la violencia para poder proteguerte. Esto tiene sentido porque le crimen organizado es capaz de perfilarte si eres activo o estás presente en la política o en el activismo.
Por otro lado vemos que los parámetros de exposición en vía pública no es relevante para el análisis y tampoco lo es la utilidad del individuo para el crimen organizado debido a que el ancance de esta variable depende mucho del planteamiento de la problemática, y se necesita una base de datos o un cuestionario que pueda sustentar con datos. Lo anterior es parte de los siguientes pasos de este trabajo.
Te invito a poner especial atención a este sistema, porque aquí empieza a tomar forma algo muy importante que es el puente entre el análisis y la acción.
library(tidyverse)
library(deSolve)
# 1. Condiciones iniciales y tiempos
InitialConditions <- c(
riesgo.de.victimizacion = 35 / 100,
poder.criminal = (100 - 38) / 100,
poder.institucional = 22 / 100
)
times <- seq(0, 50, by = 1)
# 2. Función del modelo
riesgo.violencia.criminal <- function(t, state, parameters) {
with(as.list(c(state, parameters)), {
involucramiento.social <- (relevancia.en.el.ambito.publico * participacion.ciudadana) / actitud.de.indiferencia
payroll_ref <- horas.trabajadas.de.los.policias * salario.de.los.policias * seguridad.social.del.policia * numero.de.policias
max_payroll <- 30000 * 3300 * (12 * 15855) * (3/5)
condiciones.laborales.de.policias <- payroll_ref / max_payroll
confianza.ciudadana.en.las.instituciones <- casos.impunes
disposicion.del.individuo.a.denunciar <- poder.criminal * confianza.ciudadana.en.las.instituciones
cooperacion.del.individuo <- utilidad.del.individuo.para.el.crimen.organizado / disposicion.del.individuo.a.denunciar
competencia.entre.carteles <- numero.de.carteles.en.el.estado / carteles.en.mexico
violencia.en.el.estado <- competencia.entre.carteles * tasa.de.homicidios
probabilidad.de.ser.atacado.arbitrariamente <- violencia.en.el.estado * exposición.en.via.publica
probabilidad.de.ser.objeto.de.ataque <- involucramiento.social / cooperacion.del.individuo
medidas.de.proteccion <- riesgo.de.victimizacion / disposicion.del.individuo.a.denunciar
presencia.efectiva.de.cuerpos.de.seguridad <- poder.institucional
fort.policial <- κ.policias.efectivos * condiciones.laborales.de.policias * (1 - poder.institucional)
deb.policial <- desconfianza.en.policias * (1 - condiciones.laborales.de.policias) * poder.institucional
total.casos <- casos.resueltos + casos.impunes
tasa.resueltos <- casos.resueltos / total.casos
tasa.impunes <- casos.impunes / total.casos
fort.judicial <- κ.transparencia * tasa.resueltos * (1 - poder.institucional)
deb.judicial <- κ.imparticion.justicia.ineficiente * tasa.impunes * poder.institucional
fortalecimiento.criminal <- κ.enfrentamientos * competencia.entre.carteles * frecuencia.de.enfrentamientos * (1 - poder.criminal)
debilitamiento.criminal <- κ.detencion * presencia.efectiva.de.cuerpos.de.seguridad * numero.de.detenciones * poder.criminal
fortalecimiento.institucional <- fort.policial + fort.judicial
debilitacion.institucional <- deb.policial + deb.judicial
incremento.de.riesgo <- probabilidad.de.ser.objeto.de.ataque * probabilidad.de.ser.atacado.arbitrariamente
disminucion.de.riesgo <- medidas.de.proteccion
driesgo.de.victimizacion <- incremento.de.riesgo - disminucion.de.riesgo
dpoder.criminal <- fortalecimiento.criminal - debilitamiento.criminal
dpoder.institucional <- fortalecimiento.institucional - debilitacion.institucional
list(c(driesgo.de.victimizacion, dpoder.criminal, dpoder.institucional))
})
}
# 3. Crear grilla de escenarios
x13 <- seq(7685, 30000, 2000) # número de policías
x14 <- seq(0.1, 0.5, 0.05) # κ.transparencia
x15 <- seq(13500, 30000, 5000) # casos resueltos
Xs <- expand.grid(
numero.de.policias = x13,
κ.transparencia = x14,
casos.resueltos = x15
)
Xs$Run.ID <- 1:nrow(Xs)
# 4. Simulación por cada escenario
out_all <- list()
for (i in 1:nrow(Xs)) {
parameters <- c(
tasa.de.homicidios = 25 / 100000,
numero.de.carteles.en.el.estado = 15,
carteles.en.mexico = 150,
frecuencia.de.enfrentamientos = 153,
numero.de.detenciones = 27,
κ.enfrentamientos = 0.003,
κ.detencion = 0.010,
relevancia.en.el.ambito.publico = 0.2,
participacion.ciudadana = 0.01,
actitud.de.indiferencia = 0.5,
utilidad.del.individuo.para.el.crimen.organizado = 0.6,
exposición.en.via.publica = 0.6,
numero.de.policias = Xs$numero.de.policias[i],
horas.trabajadas.de.los.policias = 3300,
salario.de.los.policias = 12 * 15855,
seguridad.social.del.policia = 3 / 5,
desconfianza.en.policias = 1 - 0.7251,
κ.policias.efectivos = 0.004,
κ.transparencia = Xs$κ.transparencia[i],
κ.imparticion.justicia.ineficiente = 1 - 0.28,
casos.resueltos = Xs$casos.resueltos[i],
casos.impunes = 10000
)
out <- ode(
y = InitialConditions,
times = times,
func = riesgo.violencia.criminal,
parms = parameters,
method = "rk4"
)
out_df <- as.data.frame(out)
out_df$Run.ID <- Xs$Run.ID[i]
out_all[[i]] <- out_df
}
# 5. Unir resultados
out_all_df <- bind_rows(out_all)
out_all_df <- left_join(out_all_df, Xs, by = "Run.ID")
p1<- ggplot(out_all_df,aes(x=time,y=poder.institucional,group=Run.ID, colour=numero.de.policias))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
p2<- ggplot(out_all_df,aes(x=time,y=poder.institucional,group=Run.ID, colour= κ.transparencia))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
p3<- ggplot(out_all_df,aes(x=time,y=poder.institucional,group=Run.ID, colour= casos.resueltos))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
# Ahora puedes ver las gráficas individualmente
p1
p2
p3
# Para ver las gráficas juntas, se puede usar gridExtra
library(gridExtra)
grid.arrange(p1, p2, p3, ncol = 1)
Podemos observar que todas las variables son relevantes, aunque algunas más que otras. Por ejemplo, el número de policias indica que una mayor presencia de policias en el estado puede indicar un mayor poder institucional que a su vez se traduce como un sistema de justicia eficaz. Lo mismo ocurre con el coeficiente de transparencia, lo que demuestra como este parámetro es relevante e importante.
Por otro lado los casos resueltos tienen un comportamiento peluliar. Su rango minimo sigue siendo un número alto pero no lo suficiente para ejercer de manera correcta su deber. Es por eso que el mensaje principal de la gráfica es que los casos resultos tienen que ser en gran cantidad, en un rango de 24 000 a 28 000 para considerar un fortalecimiento en este poder.
Siguientes parámetros a analizar:
library(tidyverse)
library(deSolve)
# 1. Condiciones iniciales y tiempos
InitialConditions <- c(
riesgo.de.victimizacion = 35 / 100,
poder.criminal = (100 - 38) / 100,
poder.institucional = 22 / 100
)
times <- seq(0, 50, by = 1)
# 2. Función del modelo
riesgo.violencia.criminal <- function(t, state, parameters) {
with(as.list(c(state, parameters)), {
involucramiento.social <- (relevancia.en.el.ambito.publico * participacion.ciudadana) / actitud.de.indiferencia
payroll_ref <- horas.trabajadas.de.los.policias * salario.de.los.policias * seguridad.social.del.policia * numero.de.policias
max_payroll <- max(x16) * salario.de.los.policias * max(x17) * numero.de.policias
condiciones.laborales.de.policias <- payroll_ref / max_payroll
confianza.ciudadana.en.las.instituciones <- casos.impunes
disposicion.del.individuo.a.denunciar <- poder.criminal * confianza.ciudadana.en.las.instituciones
cooperacion.del.individuo <- utilidad.del.individuo.para.el.crimen.organizado / disposicion.del.individuo.a.denunciar
competencia.entre.carteles <- numero.de.carteles.en.el.estado / carteles.en.mexico
violencia.en.el.estado <- competencia.entre.carteles * tasa.de.homicidios
probabilidad.de.ser.atacado.arbitrariamente <- violencia.en.el.estado * exposición.en.via.publica
probabilidad.de.ser.objeto.de.ataque <- involucramiento.social / cooperacion.del.individuo
medidas.de.proteccion <- riesgo.de.victimizacion / disposicion.del.individuo.a.denunciar
presencia.efectiva.de.cuerpos.de.seguridad <- poder.institucional
fort.policial <- κ.policias.efectivos * condiciones.laborales.de.policias * (1 - poder.institucional)
deb.policial <- desconfianza.en.policias * (1 - condiciones.laborales.de.policias) * poder.institucional
total.casos <- casos.resueltos + casos.impunes
tasa.resueltos <- casos.resueltos / total.casos
tasa.impunes <- casos.impunes / total.casos
fort.judicial <- κ.transparencia * tasa.resueltos * (1 - poder.institucional)
deb.judicial <- κ.imparticion.justicia.ineficiente * tasa.impunes * poder.institucional
fortalecimiento.criminal <- κ.enfrentamientos * competencia.entre.carteles * frecuencia.de.enfrentamientos * (1 - poder.criminal)
debilitamiento.criminal <- κ.detencion * presencia.efectiva.de.cuerpos.de.seguridad * numero.de.detenciones * poder.criminal
fortalecimiento.institucional <- fort.policial + fort.judicial
debilitacion.institucional <- deb.policial + deb.judicial
incremento.de.riesgo <- probabilidad.de.ser.objeto.de.ataque * probabilidad.de.ser.atacado.arbitrariamente
disminucion.de.riesgo <- medidas.de.proteccion
driesgo.de.victimizacion <- incremento.de.riesgo - disminucion.de.riesgo
dpoder.criminal <- fortalecimiento.criminal - debilitamiento.criminal
dpoder.institucional <- fortalecimiento.institucional - debilitacion.institucional
list(c(driesgo.de.victimizacion, dpoder.criminal, dpoder.institucional))
})
}
# 3. Crear grilla de escenarios
x16 <- seq(3300, 30000, 2000) # horas.trabajadas.de.los.policias
x17 <- seq(0.3, 0.9, 0.05) # seguridad.social.del.policia
x18 <- seq(13500, 30000, 5000) # casos.impunes
Xs <- expand.grid(
horas.trabajadas.de.los.policias = x16,
seguridad.social.del.policia = x17,
casos.impunes = x18
)
Xs$Run.ID <- 1:nrow(Xs)
# 4. Simulación por cada escenario
out_all <- list()
for (i in 1:nrow(Xs)) {
parameters <- c(
tasa.de.homicidios = 25 / 100000,
numero.de.carteles.en.el.estado = 15,
carteles.en.mexico = 150,
frecuencia.de.enfrentamientos = 153,
numero.de.detenciones = 27,
κ.enfrentamientos = 0.003,
κ.detencion = 0.010,
relevancia.en.el.ambito.publico = 0.2,
participacion.ciudadana = 0.01,
actitud.de.indiferencia = 0.5,
utilidad.del.individuo.para.el.crimen.organizado = 0.6,
exposición.en.via.publica = 0.6,
numero.de.policias = 7685,
horas.trabajadas.de.los.policias = Xs$horas.trabajadas.de.los.policias[i],
salario.de.los.policias = 12 * 15855,
seguridad.social.del.policia = Xs$seguridad.social.del.policia[i],
desconfianza.en.policias = 1 - 0.7251,
κ.policias.efectivos = 0.004,
κ.transparencia = 0.5017,
κ.imparticion.justicia.ineficiente = 1 - 0.28,
casos.resueltos = 13500,
casos.impunes = Xs$casos.impunes[i]
)
out <- ode(
y = InitialConditions,
times = times,
func = riesgo.violencia.criminal,
parms = parameters,
method = "rk4"
)
out_df <- as.data.frame(out)
out_df$Run.ID <- Xs$Run.ID[i]
out_all[[i]] <- out_df
}
# 5. Unir resultados
out_all_df <- bind_rows(out_all)
out_all_df <- left_join(out_all_df, Xs, by = "Run.ID")
p4<- ggplot(out_all_df,aes(x=time,y=poder.institucional,group=Run.ID, colour=horas.trabajadas.de.los.policias))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
p5<- ggplot(out_all_df,aes(x=time,y=poder.institucional,group=Run.ID, colour= seguridad.social.del.policia))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
p6<- ggplot(out_all_df,aes(x=time,y=poder.institucional,group=Run.ID, colour= casos.impunes))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
# Ahora puedes ver las gráficas individualmente
p4
p5
p6
# Para ver las gráficas juntas, se puede usar gridExtra
library(gridExtra)
grid.arrange(p4, p5, p6, ncol = 1)
Lo importante de señalar aquí es que la seguridad social del policía no resulta una variable útil para este análisis. Aunque es un tema relevante desde una perspectiva laboral o de bienestar, no tiene un impacto claro en la dinámica del poder institucional dentro del modelo que estamos trabajando.
En cambio, los casos impunes sí muestran una relación significativa. No se trata de que la impunidad deba desaparecer por completo, pero los resultados sugieren que cuando el número de casos impunes baja de los 20,000, el poder institucional comienza a fortalecerse. Es decir, reducir la impunidad sí puede marcar una diferencia sustancial.
Por otro lado, la variable de horas trabajadas por los policías plantea un reto distinto. Si bien podría interpretarse como un indicador de esfuerzo físico o carga laboral, se aleja del enfoque central de este análisis.
library(tidyverse)
library(deSolve)
# 1. Condiciones iniciales y tiempos
InitialConditions <- c(
riesgo.de.victimizacion = 35 / 100,
poder.criminal = (100 - 38) / 100,
poder.institucional = 22 / 100
)
times <- seq(0, 50, by = 1)
# 2. Función del modelo
riesgo.violencia.criminal <- function(t, state, parameters) {
with(as.list(c(state, parameters)), {
involucramiento.social <- (relevancia.en.el.ambito.publico * participacion.ciudadana) / actitud.de.indiferencia
payroll_ref <- horas.trabajadas.de.los.policias * salario.de.los.policias * seguridad.social.del.policia * numero.de.policias
max_payroll <- 30000 * 3300 * (12 * 15855) * (3/5)
condiciones.laborales.de.policias <- payroll_ref / max_payroll
confianza.ciudadana.en.las.instituciones <- casos.impunes
disposicion.del.individuo.a.denunciar <- poder.criminal * confianza.ciudadana.en.las.instituciones
cooperacion.del.individuo <- utilidad.del.individuo.para.el.crimen.organizado / disposicion.del.individuo.a.denunciar
competencia.entre.carteles <- numero.de.carteles.en.el.estado / carteles.en.mexico
violencia.en.el.estado <- competencia.entre.carteles * tasa.de.homicidios
probabilidad.de.ser.atacado.arbitrariamente <- violencia.en.el.estado * exposición.en.via.publica
probabilidad.de.ser.objeto.de.ataque <- involucramiento.social / cooperacion.del.individuo
medidas.de.proteccion <- riesgo.de.victimizacion / disposicion.del.individuo.a.denunciar
presencia.efectiva.de.cuerpos.de.seguridad <- poder.institucional
fort.policial <- κ.policias.efectivos * condiciones.laborales.de.policias * (1 - poder.institucional)
deb.policial <- desconfianza.en.policias * (1 - condiciones.laborales.de.policias) * poder.institucional
total.casos <- casos.resueltos + casos.impunes
tasa.resueltos <- casos.resueltos / total.casos
tasa.impunes <- casos.impunes / total.casos
fort.judicial <- κ.transparencia * tasa.resueltos * (1 - poder.institucional)
deb.judicial <- κ.imparticion.justicia.ineficiente * tasa.impunes * poder.institucional
fortalecimiento.criminal <- κ.enfrentamientos * competencia.entre.carteles * frecuencia.de.enfrentamientos * (1 - poder.criminal)
debilitamiento.criminal <- κ.detencion * presencia.efectiva.de.cuerpos.de.seguridad * numero.de.detenciones * poder.criminal
fortalecimiento.institucional <- fort.policial + fort.judicial
debilitacion.institucional <- deb.policial + deb.judicial
incremento.de.riesgo <- probabilidad.de.ser.objeto.de.ataque * probabilidad.de.ser.atacado.arbitrariamente
disminucion.de.riesgo <- medidas.de.proteccion
driesgo.de.victimizacion <- incremento.de.riesgo - disminucion.de.riesgo
dpoder.criminal <- fortalecimiento.criminal - debilitamiento.criminal
dpoder.institucional <- fortalecimiento.institucional - debilitacion.institucional
list(c(driesgo.de.victimizacion, dpoder.criminal, dpoder.institucional))
})
}
# 3. Nueva grilla de escenarios
x19 <- seq(12 * 12000, 12 * 20000, by = 12 * 2000) # salario.de.los.policias (anual)
x20 <- seq(0.1, 0.4, by = 0.05) # desconfianza.en.policias
x21 <- seq(0.5, 1, by = 0.1) # κ.imparticion.justicia.ineficiente
Xs <- expand.grid(
salario.de.los.policias = x19,
desconfianza.en.policias = x20,
κ.imparticion.justicia.ineficiente = x21
)
Xs$Run.ID <- 1:nrow(Xs)
# 4. Simulación por cada escenario
out_all <- list()
for (i in 1:nrow(Xs)) {
parameters <- c(
tasa.de.homicidios = 25 / 100000,
numero.de.carteles.en.el.estado = 15,
carteles.en.mexico = 150,
frecuencia.de.enfrentamientos = 153,
numero.de.detenciones = 27,
κ.enfrentamientos = 0.003,
κ.detencion = 0.010,
relevancia.en.el.ambito.publico = 0.2,
participacion.ciudadana = 0.01,
actitud.de.indiferencia = 0.5,
utilidad.del.individuo.para.el.crimen.organizado = 0.6,
exposición.en.via.publica = 0.6,
numero.de.policias = 7685,
horas.trabajadas.de.los.policias = 3300,
salario.de.los.policias = Xs$salario.de.los.policias[i],
seguridad.social.del.policia = 0.8,
desconfianza.en.policias = Xs$desconfianza.en.policias[i],
κ.policias.efectivos = 0.004,
κ.transparencia = 0.5017,
κ.imparticion.justicia.ineficiente = Xs$κ.imparticion.justicia.ineficiente[i],
casos.resueltos = 13500,
casos.impunes = 15855
)
out <- ode(
y = InitialConditions,
times = times,
func = riesgo.violencia.criminal,
parms = parameters,
method = "rk4"
)
out_df <- as.data.frame(out)
out_df$Run.ID <- Xs$Run.ID[i]
out_all[[i]] <- out_df
}
# 5. Unir resultados
out_all_df <- bind_rows(out_all)
out_all_df <- left_join(out_all_df, Xs, by = "Run.ID")
p4<- ggplot(out_all_df,aes(x=time,y=poder.institucional,group=Run.ID, colour=salario.de.los.policias))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
p5<- ggplot(out_all_df,aes(x=time,y=poder.institucional,group=Run.ID, colour= desconfianza.en.policias))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
p6<- ggplot(out_all_df,aes(x=time,y=poder.institucional,group=Run.ID, colour= κ.imparticion.justicia.ineficiente))+
geom_line()+
scale_color_gradient(low = "blue3", high = "brown1")
# Ahora puedes ver las gráficas individualmente
p4
p5
p6
# Para ver las gráficas juntas, se puede usar gridExtra
library(gridExtra)
grid.arrange(p4, p5, p6, ncol = 1)
El comportamiento de la variable del salario de los policías sugiere que no es relevante dentro del modelo. Es decir, no parece tener un impacto directo sobre el poder institucional. Sin embargo, esto no deja de ser interesante, ya que cuestiona una idea muy extendida: la creencia de que más salario necesariamente implica un mejor desempeño. Al menos en este análisis, ese vínculo no se sostiene.
En el caso de la desconfianza en policía, el comportamiento de la variable es contradictorio, lo que dificulta extraer una conclusión clara. Por eso, en este contexto, tampoco se considera relevante.
Por el contrario, el coeficiente de impartición de justicia ineficiente sí resulta significativo. El modelo muestra que para que el poder institucional crezca y se fortalezca, es necesario que este indicador se mantenga por debajo de 0.7. Lo que indica que tanto la fuerza policial como el sistema judicial, que en conjunto conforman el poder institucional, deben operar con un nivel aceptable de eficiencia. De lo contrario, su capacidad de respuesta se ve limitada, y con ello, también su legitimidad.
La simulación de escenarios es una herramienta fundamental para identificar en qué variables es más relevante y factible intervenir mediante políticas públicas, con el fin de generar un impacto significativo en la dinámica del modelo. A través del análisis realizado, hemos detectado que existen tres variables clave que tienen mayor peso en el comportamiento del sistema: el número de policías, la efectividad de las detenciones (k.detención) y los casos impunes. Estas variables representan puntos estratégicos donde una intervención adecuada puede modificar sustancialmente el riesgo de victimización y el poder criminal. A continuación, se presentan las políticas públicas diseñadas para incidir en estas áreas prioritarias dentro del modelo.
La política judicial propuesta consiste en la creación y expansión de Unidades de Investigación Criminal Especializada, enfocadas en delitos de alta complejidad como el crimen organizado, el narcotráfico y los homicidios relacionados con disputas criminales. La literatura especializada y organismos internacionales coinciden en que la especialización investigativa mejora sustantivamente las tasas de resolución de casos, reduce los niveles de impunidad y fortalece la legitimidad institucional.
En países como Colombia y México, estas unidades han demostrado su utilidad en el procesamiento de estructuras criminales complejas, gracias al desarrollo de capacidades en inteligencia criminal, análisis forense, cooperación interinstitucional y trabajo focalizado por territorio. Por ejemplo, el estudio de Davis, García y Herrerías (2013) sobre el sistema de justicia penal en México documenta cómo las unidades especializadas en el fuero federal lograron tasas de resolución significativamente mayores que las jurisdicciones locales en delitos de crimen organizado.
Además, la Oficina de las Naciones Unidas contra la Droga y el Delito (UNODC, 2021) destaca que las unidades especializadas permiten desarrollar estrategias sostenidas contra organizaciones delictivas, evitando que los esfuerzos se diluyan en el sistema judicial ordinario.
Desde el subsistema policial, se propone la implementación sistemática del enfoque conocido como “Hot Spots Policing”, una estrategia que consiste en asignar recursos policiales de manera intensiva a zonas geográficas con alta concentración de delitos violentos, denominadas “puntos calientes”. Esta estrategia se fundamenta en la evidencia empírica acumulada en diversos contextos, incluyendo ciudades de Estados Unidos, América Latina y Europa.
El metaanálisis realizado por Braga, Papachristos y Hureau (2019), publicado por la Campbell Collaboration, sintetiza más de 60 estudios cuasi-experimentales y concluye que el patrullaje focalizado en puntos calientes reduce significativamente los delitos violentos, sin evidencia de desplazamiento geográfico del crimen.
Además, esta estrategia permite maximizar el uso de recursos policiales escasos, mejora la percepción de presencia estatal en zonas vulnerables y puede ser compatible con enfoques de proximidad comunitaria, siempre que se acompañe de controles institucionales adecuados para evitar abusos o estigmatización territorial.
Uno de los grandes desafíos que enfrentan los sistemas de seguridad y justicia es contar con personal capacitado, comprometido y suficiente. La confianza en las instituciones no solo se construye con resultados, sino también con las personas que las representan. Por eso, una de las propuestas más prometedoras dentro del modelo es el Programa de Servicio Público Universitario en Seguridad y Justicia (SPUSJ).
Esta política formativa-institucional busca ampliar y profesionalizar la base de reclutamiento para cuerpos policiales y operadores judiciales, a través de un enfoque de largo plazo: formar desde las universidades a quienes quieren servir en el ámbito público.
Objetivo: Aumentar sostenidamente el número de policías efectivos mediante la creación de un programa de formación universitaria de servicio público, orientado a estudiantes en criminología, derecho, sociología, psicología y otras disciplinas afines, que deseen hacer carrera en seguridad pública o justicia penal.
Mecanismos de impacto: - Esta política incide directamente sobre la tasa de ingreso de nuevos policías y operadores judiciales mediante dos mecanismos complementarios:
Expande el grupo elegible para el reclutamiento profesional, al atraer perfiles con formación previa y vocación de servicio.
Reduce el tiempo de formación y mejora la retención institucional, al incorporar incentivos académicos, vocacionales y profesionales desde el nivel universitario.
Modelos similares han sido implementados en programas de servicio público en países como Francia (Écoles de Service Public), Canadá (RCMP University Programs) y Japón, con impactos positivos en la profesionalización, diversificación y legitimidad del personal de seguridad y justicia. En América Latina, iniciativas piloto en Argentina y Colombia también han mostrado que la vinculación temprana entre academia e instituciones públicas mejora los perfiles de ingreso y la calidad del servicio.
Desde una perspectiva de dinámica de sistemas, esta política fortalece los bucles positivos asociados a la capacidad institucional y permite aumentar sostenidamente el capital humano disponible para enfrentar desafíos complejos en seguridad y justicia.
En el siguiente link podrás acceder a la simulación del modelo:
https://alondraihuerta-a01571130.shinyapps.io/riesgo/
Allí podrás visualizar cómo interactúan las variables de estado claves del sistema: poder criminal, poder institucional y riesgo de victimización. Es una herramienta pensada para observar, analizar y comprender la dinámica del entorno pero también para analizar que tipo de intervenciones son efectivas.
Trejo, G., & Ley, S. (2019). High-Profile Criminal Violence: Why Drug Cartels Murder Government Officials and Party Candidates in Mexico.
Bell-Martin, R., & Marston Jr., J. F. (2023). Staying Power: Strategies for Weathering Criminal Violence in Marginal Neighborhoods of Medellín and Monterrey. Latin American Research Review, 58(4), 817–836. https://doi.org/10.1017/lar.2023.16
Lessing, B. (2021). Conceptualizing Criminal Governance. Perspectives on Politics, 854–873.
Yashar, D. J. (2018). Violence in Third Wave Democracies. In Homicidal Ecologies: Illicit Economies and Complicit States in Latin America (pp. 3–23). Cambridge: Cambridge University Press.
World Justice Project México. (2025, March 8). World Justice Project (México). https://worldjusticeproject.mx/
Braga, A. A., Papachristos, A. V., & Hureau, D. M. (2019). Hot Spots Policing Effects on Crime. Campbell Systematic Reviews, 15(3). https://doi.org/10.4073/csr.2019.3
*Davis, D. E., García, G., & Herrerías, R. (2013). Desafíos de la reforma judicial en México: entre la ley y la práctica. Woodrow Wilson Center.
UNODC. (2021). Global Report on Crime and Justice. Oficina de las Naciones Unidas contra la Droga y el Delito. https://www.unodc.org/unodc/en/data-and-analysis/statistics/crime.html