Este trabajo presenta un modelo de dinámica de sistemas basado en el caso 6.7 del libro de Erik Pruyt (2013) titulado Unintended Family Planning Benefits. El caso plantea que las políticas de planificación familiar pueden tener efectos sociales no intencionados, como la reducción del crimen a largo plazo.
En este modelo se simulan las interacciones dinámicas entre grupos sociales y criminales dentro de familias con múltiples problemas, considerando factores como la natalidad, la edad, la criminalidad, el encarcelamiento y la reincidencia. Se busca explorar cómo cambios en la tasa de natalidad y el sistema penitenciario afectan el crimen total durante un periodo de 50 años.
El estudio utiliza herramientas de dinámica de sistemas para modelar estos comportamientos y comprender las retroalimentaciones presentes. La representación gráfica mediante diagramas causales y de flujo permite visualizar claramente las conexiones entre las variables clave.
Variable principal del sistema
La variable principal del modelo es el Crimen Total, ya que representa el resultado más relevante que se busca entender y reducir mediante intervenciones en el sistema. Esta variable es influida por factores poblacionales, sociales y de justicia penal, entre ellos:
Población criminal - Población en prisión - Reincidencia - Arrestos - Natalidad - Disponibilidad de hombres - Población en riesgo - Tasa de fertilidad - Crímenes externos
El diagrama causal representa gráficamente cómo se interrelacionan las variables. Se destacan:
Población Criminal + Crimen Total
Población en Prisión - Población Criminal
Población en Prisión - Disponibilidad de Hombres
Disponibilidad de Hombres + Tasa de Natalidad
Tasa de Natalidad + Población en Riesgo
Población en Riesgo + Población Criminal
Población en Prisión + Liberaciones + Reincidencia + Población Criminal
Población Criminal + Arrestos + Población en Prisión
Ciclos identificados: R1: Reincidencia (refuerzo) B1: Control del crimen (balanceo) B2: Reducción de la natalidad (balanceo)
knitr::include_graphics("~/Desktop/CAUSAL CRIMEN TOTAL.png")
El diagrama de flujo representa gráficamente la evolución de las poblaciones a través del tiempo y las relaciones entre los flujos que intervienen en la dinámica del crimen.
Se destacan:
Nacimientos + aumentan la Población en Riesgo
Población en Riesgo - disminuye por el Reclutamiento Criminal que + incrementa la Población Criminal
Población Criminal - disminuye por los Arrestos, que + aumentan la Población en Prisión
Población en Prisión - disminuye por las Liberaciones
Liberaciones + alimentan la Reincidencia, que + incrementa nuevamente la Población Criminal
Población en Prisión - reduce la Disponibilidad de Hombres
Disponibilidad de Hombres + incrementa la Tasa de Natalidad
Ciclos identificados: R1: Reincidencia (refuerzo) B1: Control del crimen (balanceo) B2: Reducción de la natalidad (balanceo)
knitr::include_graphics("/Users/Jairo/Desktop/CRIMEN TOTAL FLUJO.png")
# Instala estas librerías si no las tienes
# install.packages("deSolve")
# install.packages("ggplot2")
library(deSolve)
library(ggplot2)
# 🔧 Definición del modelo
modelo_crimen <- function(t, state, parameters) {
with(as.list(c(state, parameters)), {
# Flujos
nacimientos <- tasa_fertilidad * disponibilidad_hombres
reclutamiento_criminal <- poblacion_riesgo * propension_criminal
arrestos <- poblacion_criminal * fraccion_arresto
liberaciones <- prision / tiempo_en_prision
reincidencia <- liberaciones * tasa_reincidencia
crimen_total <- (poblacion_criminal * crimenes_por_persona) + crimenes_externos
# Derivadas (variación de stocks)
dp_riesgo <- nacimientos - reclutamiento_criminal
dp_criminal <- reclutamiento_criminal + reincidencia - arrestos
dp_prision <- arrestos - liberaciones
# Resultados
list(c(dp_riesgo, dp_criminal, dp_prision), crimen_total = crimen_total)
})
}
# 🧾 Estado inicial de los stocks
estado_inicial <- c(
poblacion_riesgo = 1e6,
poblacion_criminal = 1e6,
prision = 1e6
)
# ⚙️ Parámetros del sistema
parametros <- c(
tasa_fertilidad = 0.02, # tasa de natalidad
disponibilidad_hombres = 0.8e6, # hombres disponibles para reproducción
propension_criminal = 0.2, # % de jóvenes que se vuelven criminales
fraccion_arresto = 0.1, # % de criminales arrestados por año
tiempo_en_prision = 5, # tiempo promedio en prisión (años)
tasa_reincidencia = 0.4, # % de reincidencia de exconvictos
crimenes_por_persona = 10, # crímenes por criminal al año
crimenes_externos = 6e6 # crímenes externos fijos
)
# ⏳ Horizonte de simulación (50 años)
tiempo <- seq(0, 50, by = 1)
# 🧮 Simulación
resultado <- ode(y = estado_inicial, times = tiempo, func = modelo_crimen, parms = parametros)
resultado_df <- as.data.frame(resultado)
# 📈 Gráfica del Crimen Total
ggplot(resultado_df, aes(x = time, y = crimen_total)) +
geom_line(color = "red", size = 1.2) +
labs(title = "Proyección del Crimen Total a 50 años",
x = "Años",
y = "Crímenes anuales") +
theme_minimal()
## 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.
Para analizar el comportamiento del sistema criminal a lo largo del tiempo, se realizó una simulación en R utilizando el paquete deSolve. El modelo incluye tres poblaciones principales:
Población en Riesgo: jóvenes susceptibles a involucrarse en actividades delictivas. Población Criminal: personas activamente involucradas en crímenes. Población en Prisión: individuos que han sido arrestados. A lo largo de 50 años se simularon los siguientes flujos:
Nacimientos, que aumentan la población en riesgo (dependen de la tasa de fertilidad y la disponibilidad de hombres). Reclutamiento criminal, que transforma población en riesgo en criminales. Arrestos, que trasladan a los criminales hacia la prisión. Liberaciones, que devuelven presos a la población activa. Reincidencia, que convierte a exconvictos nuevamente en criminales. El modelo calcula el Crimen Total como:
Crimen Total = (Población Criminal × Crímenes por persona) + Crímenes externos
La gráfica muestra la evolución del crimen total a lo largo de los 50 años simulados.
Durante los primeros 10 años, se observa un aumento progresivo del crimen total, alcanzando un pico de casi 20 millones de crímenes anuales. A partir de ese punto, el sistema entra en una fase de descenso sostenido. Al llegar al año 50, el crimen total se ha reducido a aproximadamente 10 millones de crímenes por año, es decir, una reducción cercana al 50% respecto al punto máximo.
Este modelo de dinámica de sistemas permitió simular y analizar la evolución del crimen en poblaciones vulnerables a lo largo de 50 años, considerando factores sociales, demográficos y penales. A partir de la construcción de diagramas causales y de flujo, así como la simulación en R, se llegó a las siguientes conclusiones clave:
El crimen total puede disminuir a largo plazo gracias a la interacción de políticas de control penal (arrestos), reducción de reincidencia y disminución de natalidad en contextos de alta vulnerabilidad. La población en prisión actúa como regulador del sistema, al reducir temporalmente la criminalidad, pero también influye negativamente en la natalidad al limitar la disponibilidad de hombres. La reincidencia representa un ciclo de refuerzo peligroso, por lo que es clave implementar programas de reinserción social efectivos. La natalidad tiene efectos diferidos pero poderosos: al reducir el número de nacimientos en familias con múltiples problemas, se reduce la población en riesgo futuro y, con ello, la criminalidad a largo plazo. El modelo demuestra que intervenciones integrales y sostenidas pueden transformar sistemas criminales complejos y reducir significativamente el crimen total.
Pruyt, E. (2013). Small System Dynamics Models for Big Issues: Triple Jump towards Real-World Complexity. TU Delft Library, Delft University of Technology.
CONTENIDO VISTO Y APRENDIDO EN CLASE.
HERRAMIENTAS TECNOLOGICAS.