¡Hola, Cuali-Cuanti Reviewers!
En esta publicación, les mostraré cómo se comporta un sistema delictivo y las variables que lo impactan. Me basaré en el caso 6.6 “Ganga and Arms Races” del libro “Small System Dynamics Models for Big Issues: Triple Jump towards Real-World Complexity” de Erik Pruyt.
###¿De qué trata el caso?
Tenemos dos pandillas, la A y la B. Cada pandilla tiene armas almacenadas y miembros armados. Las pandillas aumentan o disminuyen su flujo de armas según el armamento esperado de la pandilla opuesta. Es decir, se espera que una pandilla aumente su armamento si estima que la pandilla opuesta está incrementando el suyo.
###Variables a considerar:
Tenemos las siguientes variables que forman parte del diagrama, es importante conocer como las variables influyen en los cambios en el sistema delictivo.En el libro, las variables están en inglés. Les daré una breve descripción y su traducción más cercana al español:
En la Figura 1, se pueden identificar cinco bucles dentro del diagrama, tres de los cuales son positivos y dos negativos
Se destaca las complejas relaciones de retroalimentación presentes en el sistema, donde los aumentos en ciertas variables pueden tanto estimular como frenar otras. Este comportamiento se podrá ver observar adelante en el modelado del sistema.
El diagrama de flujo representado en la Figura 2 ilustra la existencia de dos variables de estado “arms stock gang a” y “arms stock gang b”, cada una con un solo flujo de entrada “arming of gang a” y “arming of gang b”. Además, se muestran las variables endógenas y exógenas que influyen en el sistema.
A partir de los diagramas, podemos observar que el “arms stock” está influenciado principalmente por el armamento de la pandilla. Es decir, cuanto mayor sea el armamento de una pandilla, mayor será su almacenamiento de armas. Sin embargo, también debemos considerar que el almacenamiento de armas de la pandilla opuesta afectará la tasa de armamento relativa, la cual influye directamente en el armamento de la pandilla.
Para una comprensión más detallada de cómo cada variable afecta a las demás, y cómo estas influencias pueden impactar el almacenamiento de armas de una pandilla u otra, pueden consultar la Figura. 1 , en donde se muestra el diagrama de sistemas.
En el sguiente codigo, se explican las condiciones iniciales, asi como las ecuaciones necesarias para el modelado del sistema.
# Cargar el paquete deSolve para utilizar funciones de resolución de ecuaciones diferenciales
library("deSolve")
## Warning: package 'deSolve' was built under R version 4.2.3
# Establecer las condiciones iniciales de la variable de estado
inicial.conditions <- c(arms_stock_gang_a = .1,
arms_stock_gang_b = .1) #porcentaje
# Definir el vector de tiempos para la simulación
time <- seq(0,100, by = 1) #meses
# Definir la función del modelo
model.arms <- function(t,state,parameters){
with(as.list(c(state, parameters)),{
#Variables Auxiliares o endógenas
relative_arming_rate_gang_a = overassesment_factor_of_gang_b_arming_by_gang_a * arms_obsolescence_rate_of_gang_a * arms_stock_gang_b - (arms_obsolescence_rate_of_gang_a * arms_stock_gang_a )
relative_arming_rate_gang_b = overassesment_factor_of_gang_a_arming_by_gang_b * arms_obsolescence_rate_of_gang_b * arms_stock_gang_a - (arms_obsolescence_rate_of_gang_b * arms_stock_gang_b )
#Variables de flujo (son las que modifican a las variables de estado)
arming_gang_a = relative_arming_rate_gang_a + autonomous_arming_rate_gang_a
arming_gang_b = relative_arming_rate_gang_b + autonomous_arming_rate_gang_b
#variable de estado (se establece su ecuación diferencial de ahí viene la d)
darms_stock_gang_a = arming_gang_a
darms_stock_gang_b = arming_gang_b
#Devuelve los resultados de la variable de estado
return(list(c(darms_stock_gang_a,darms_stock_gang_b),
arming_gang_a = arming_gang_a,
arming_gang_b = arming_gang_b
))
})
}
En el siguiente modelo, la pandilla A estima que la pandilla B tiene un 10% más de armamento de lo que realmente tiene. Es decir, creen que la pandilla B posee más armas de las que en realidad tiene, con una diferencia del 10%.
El propósito de este modelo es mostrar cómo afecta esta sobreestimación del armamento de la pandilla B al armamento de ambas pandillas (arming of gang).
# Definir los parámetros del modelo
parameters1<-c(overassesment_factor_of_gang_b_arming_by_gang_a =1.10,
overassesment_factor_of_gang_a_arming_by_gang_b = 1,
arms_obsolescence_rate_of_gang_a = .1,
arms_obsolescence_rate_of_gang_b = .1,
autonomous_arming_rate_gang_a = .05,
autonomous_arming_rate_gang_b = .05
) #%Rate #variables exógenas
# Seleccionar el método de integración a utilizar en la simulación, en este caso 'rk4' (Runge-Kutta de 4to orden)
intg.method<-c("rk4")
# Realizar la simulación utilizando la función 'ode' del paquete deSolve
out1 <- ode(
y = inicial.conditions , #condiciones iniciales
times = time, #tiempo de simulación
func = model.arms, #función del modelo
parms = parameters1 ,
method = intg.method
)
library(ggplot2)
# Convertir los resultados en un dataframe para facilitar la manipulación y la graficación
out1_df <- as.data.frame(out1)
ggplot(out1_df, aes(x = time)) +
geom_line(aes(y = arming_gang_a, color = "Gang A"), size = 1.5) +
geom_line(aes(y = arming_gang_b, color = "Gang B"), size = 1.5) +
scale_color_manual(values = c("Gang A" = "#8BD09D", "Gang B" = "#FFA07A")) +
labs(x = "Tiempo (meses)", y = "Armas", color = "Gangs", title = "Comportamiento del armamento de pandillas, Modelo 1") +
theme_minimal() +
theme(plot.title = element_text(size = 16, face = "bold")) +
theme(axis.title.x = element_text(size = 14)) +
theme(axis.title.y = element_text(size = 14)) +
theme(legend.title = element_text(size = 12), legend.text = element_text(size = 12))
## 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.
En la gráfica, podemos observar que el armamento de los miembros de la
pandilla A aumenta más rápidamente que el de la pandilla B. Esto ocurre
porque la pandilla A se prepara como si la pandilla B estuviera
funcionando al 110%, es decir, estiman que la pandilla B tiene más armas
de las que realmente tiene. Como respuesta a esta sobreestimación, el
armamento de la pandilla A aumenta de manera significativa.
Por otro lado, el armamento de la pandilla B también aumenta, pero este aumento es un comportamiento esperado en respuesta a la subida inesperada de armamento por parte de la pandilla A. Es decir, la pandilla B responde a la percepción de que la pandilla A está reforzando su armamento, lo que provoca un aumento en su propio armamento para mantenerse en igualdad de condiciones o como medida de precaución.
En este modelo, la pandilla A subestima el armamento de la pandilla B en un 50%, lo que significa que creen que la pandilla B tiene solo la mitad de armas de las que realmente posee. Esto implica que la pandilla A arma a sus miembros bajo la suposición de que la pandilla B tiene menos armas de las que en realidad tiene.
Veamos qué sucede con el armamento en esta situación:
# Definir los parámetros del modelo
parameters2<-c(overassesment_factor_of_gang_b_arming_by_gang_a =.50,
overassesment_factor_of_gang_a_arming_by_gang_b = 1,
arms_obsolescence_rate_of_gang_a = .1,
arms_obsolescence_rate_of_gang_b = .1,
autonomous_arming_rate_gang_a = .05,
autonomous_arming_rate_gang_b = .05
) #%Rate #variables exógenas
# Seleccionar el método de integración a utilizar en la simulación, en este caso 'rk4' (Runge-Kutta de 4to orden)
intg.method<-c("rk4")
# Realizar la simulación utilizando la función 'ode' del paquete deSolve
out2 <- ode(
y = inicial.conditions , #condiciones iniciales
times = time, #tiempo de simulación
func = model.arms, #función del modelo
parms = parameters2 ,
method = intg.method
)
library(ggplot2)
# Convertir los resultados en un dataframe para facilitar la manipulación y la graficación
out2_df <- as.data.frame(out2)
ggplot(out2_df, aes(x = time)) +
geom_line(aes(y = arming_gang_a, color = "Gang A"), size = 1.5) +
geom_line(aes(y = arming_gang_b, color = "Gang B"), size = 1.5) +
scale_color_manual(values = c("Gang A" = "#8BD09D", "Gang B" = "#FFA07A")) +
labs(x = "Tiempo (meses)", y = "Armas", color = "Gangs", title = "Comportamiento del armamento, Modelo 2") +
theme_minimal() +
theme(plot.title = element_text(size = 16, face = "bold")) +
theme(axis.title.x = element_text(size = 14)) +
theme(axis.title.y = element_text(size = 14)) +
theme(legend.title = element_text(size = 12), legend.text = element_text(size = 12))
En la gráfica, observamos cómo la subestimación del armamento de la pandilla B por parte de la pandilla A tiene un efecto notable en la dinámica de armamento entre ambas pandillas. Como consecuencia de esta subestimación, vemos que el armamento de la pandilla A es menor que el de la pandilla B.
Esto es un resultado directo de la estrategia de la pandilla A basada en una percepción errónea de la cantidad de armas de la pandilla B. Al subestimar el armamento de la pandilla B, la pandilla A no refuerza su armamento tanto como lo haría si tuviera una percepción precisa de la situación.
También, debemos observar que, en respuesta a esta disminución en el armamento de la pandilla A, la pandilla B también disminuye su armamento. Esto sugiere, que, como vimos en la Figura 1, la pandilla B está atenta al comportamiento de la pandilla A y ajusta su propia estrategia de armamento en respuesta al cambio de la pandilla A.
# Convertir los resultados en dataframes para facilitar la manipulación
out1_df <- as.data.frame(out1)
out2_df <- as.data.frame(out2)
# Combinar los dataframes agregando una columna para distinguir los parámetros
out1_df$parametro <- "Modelo 1. Sobreestimacion de armamento en pandilla B "
out2_df$parametro <- "Modelo 2. Subestimacion de armamento de pandilla B"
combined_df <- rbind(out1_df, out2_df)
# Graficar arming_gang_a y arming_gang_b para ambos parámetros en una sola gráfica
ggplot(combined_df, aes(x = time)) +
geom_line(aes(y = arming_gang_a, color = parametro, linetype = "Gang A"), size = 1) +
geom_line(aes(y = arming_gang_b, color = parametro, linetype = "Gang B"), size = 1) +
scale_color_manual(values = c("#9B89B1", "#90B4D6")) +
scale_linetype_manual(values = c("solid", "dashed")) +
labs(x = "Tiempo (meses)", y = "Arming", color = "Parámetro", linetype = "Gangs") +
theme_minimal() +
theme(legend.title = element_text(size = 12), legend.text = element_text(size = 10)) +
labs(linetype = "Línea: Gang A\nPunteado: Gang B") +
theme(legend.text = element_text(size = 10))
Por último, esta gráfica ilustra el comportamiento de las pandillas A y B de acuerdo con el modelo de sobreestimación o subestimación del armamento.
Podemos observar cómo las decisiones estratégicas de una pandilla, basadas en su percepción del armamento de la otra pandilla, afectan la dinámica de armamento entre ambas. Ya sea que la pandilla A sobreestime o subestime el armamento de la pandilla B, estos modelos nos permiten entender cómo estas percepciones erróneas influyen en las acciones y reacciones de ambas pandillas
¡Hasta la proxima!
Les comparto la fuente del libro, donde podran encontrar mas problemas similares:
Prut, E. (2013) Small System dynamics models for big issues: Triple jump towards real-world complexity. TU Deft Library. http://resolver.tudelft.nl/uuid:10980974-69c3-4357-962f-d923160ab638