R Markdown

  1. Diagrama causal del problema

  1. Diagrama de flujo del problema

#3. Modelo del problema y comportamiento dinámico de las variables de estado

Primer Escenario

# Cargar el paquete deSolve para utilizar funciones de resolución de ecuaciones diferenciales
library("deSolve")
library("ggplot2")

inicial.conditions <- c(arms_stock_gang_a = 1.0,
                        arms_stock_gang_b = 1.0) #animal

# Definir el vector de tiempos para la simulación
times <- seq(0,100, by = 1) #

# Definir la función del modelo. #parametros son las variables exógenas
model_arms<-function(t, state, parameters){
  with(as.list(c(state, parameters)),{
    #Variables Auxiliares o endógenas
    relative_arming_rate_b=overassesment_factor_gang_a_by_b*obsolescence_rate_b*arms_stock_gang_a-obsolescence_rate_b*arms_stock_gang_b
    relative_arming_rate_a=overassesment_factor_gang_b_by_a*obsolescence_rate_a*arms_stock_gang_b-obsolescence_rate_a*arms_stock_gang_a
    
    #Variables de flujo 
    arming_gang_a=autonomous_arming_rate_a+relative_arming_rate_a
    arming_gang_b=autonomous_arming_rate_b+relative_arming_rate_b

    #variable de estado 
    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)) 
  })
}

# Definir los parámetros del modelo. 
parameters <- c(autonomous_arming_rate_a= 0.05,
                autonomous_arming_rate_b =0.05 ,
                overassesment_factor_gang_b_by_a =1.1 ,
                overassesment_factor_gang_a_by_b =1.0 ,
                obsolescence_rate_a=0.10,
                obsolescence_rate_b=0.10)
               
# 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,  
  times = times, 
  func = model_arms, 
  parms = parameters,
  method = intg.method
)

out2 <- ode(
  y = inicial.conditions,  
  times = times, 
  func = model_arms, 
  parms = parameters,
  method = intg.method
)

out1 <- as.data.frame(out1)
out2 <- as.data.frame(out2)

# Graficar los resultados de la simulación
ggplot(out1, aes(x=time, y=arms_stock_gang_a )) + geom_line()

ggplot(out2, aes(x=time, y=arms_stock_gang_a )) + geom_line()

Segundo Escenario

# Establecer las condiciones iniciales de la variable de estado.
inicial.conditions <- c(arms_stock_gang_a = 1.0,
                        arms_stock_gang_b = 1.0) 

# Definir el vector de tiempos para la simulación
times <- seq(0,100, by = 1) #

# Definir la función del modelo. #parametros son las variables exógenas
model_arms<-function(t, state, parameters){
  with(as.list(c(state, parameters)),{
    
    #Variables Auxiliares o endógenas
    relative_arming_rate_b=overassesment_factor_gang_a_by_b*obsolescence_rate_b*arms_stock_gang_a-obsolescence_rate_b*arms_stock_gang_b
    relative_arming_rate_a=overassesment_factor_gang_b_by_a*obsolescence_rate_a*arms_stock_gang_b-obsolescence_rate_a*arms_stock_gang_a
    
    
    #Variables de flujo (son las que modifican a las variables de estado)
    arming_gang_a=autonomous_arming_rate_a+relative_arming_rate_a
    arming_gang_b=autonomous_arming_rate_b+relative_arming_rate_b

    #variable de estado
    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)) 
  })
}

# Definir los parámetros del modelo. Estan por fuera del sistema
parameters <- c(autonomous_arming_rate_a= 0.05,
                autonomous_arming_rate_b =0.05 ,
                overassesment_factor_gang_b_by_a =0.50 ,
                overassesment_factor_gang_a_by_b =1.00 ,
                obsolescence_rate_a=0.10,
                obsolescence_rate_b=0.10)
               


# 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
out3 <- ode(
  y = inicial.conditions, 
  times = times,
  func = model_arms, 
  parms = parameters,
  method = intg.method
)

out4 <- ode(
  y = inicial.conditions, 
  times = times, 
  func = model_arms,
  parms = parameters,
  method = intg.method
)

out3 <- as.data.frame(out3)
out4 <- as.data.frame(out4)

# Graficar los resultados de la simulación
ggplot(out3, aes(x=time, y=arms_stock_gang_a )) + geom_line()

ggplot(out4, aes(x=time, y= arms_stock_gang_b)) + geom_line()

Análisis Comparativo

Gang A

out1$Corrida <- "Sobreestimación"
out3$Corrida <- "Subestimación"

# Unir los datos de ambas corridas
out_combined <- rbind(out1, out3)

# Graficar los resultados combinados
ggplot(out_combined, aes(x = time, y = arms_stock_gang_a, color = Corrida)) +
  geom_line() +
  labs(x = "Tiempo", y = "Stock de Armas de la Pandilla 'A'", title = "Comparación de la subestimacion y sobreestimacion de la Pandilla 'A'") +
  theme_minimal()

Análisis Comparativo

Gang B

# Combinar los resultados de ambas corridas en un solo dataframe
out4$Corrida <- "Subestimación"
out2$Corrida <- "Sobreestimación"

# Unir los datos de ambas corridas
out_combined <- rbind(out4, out2)

# Graficar los resultados combinados
ggplot(out_combined, aes(x = time, y = arms_stock_gang_b, color = Corrida)) +
  geom_line() +
  labs(x = "Tiempo", y = "Stock de armas de la Pandilla 'B'", title = "Comparación de la subestimacion y sobreestimacion de la Pandilla 'B'") +
  theme_minimal()

Conclusiones

Gracias al modelo se pueden hacerse las siguientes observaciones: Las pandillas valoran su Stock de armamento e base a la cantidad de armas que tiene su contraparte. Debido a esto, existen implicaciones causales importantes en el desarrollo de los conflictos armados entre ellas. Podemos notar que elStock de las pandillas aumenta conforme aumenta el de su contraparte, quieriendo siempre mantener una ventaja comparativa entre ellos. Lo que podría interpretarse como un intento por protegerse o igualar lo que percibe como una amenaza, la pandilla A podría aumentar su propio armamento. Sin embargo, esto puede malinterpretarse como una señal de agresión por parte de la pandilla B, lo que haría que la pandilla B aumente su armamento y lleve a una escalada en el conflicto. Por otro lado, si la pandilla A subestima el armamento de la pandilla B , por decir, en un 50%, podría conducir a una reducción en la preparación defensiva de la pandilla A. Aprovechando esta subestimación, la pandilla B podría fortalecer su propio armamento y posición estratégica sin provocar una reacción defensiva significativa por parte de la pandilla A. Con esto se lleva a que la pandilla B ejerza una una mayor presión sobre la pandilla A al aumentar así su poder comprando más armas en el conflicto. En conclusión, tanto la sobreestimación como la subestimación del armamento entre las pandillas pueden conlleva dinámicas de acumulación de armas y una posible escalada de conflictos que incrementan la tensión y el riesgo de violencia. Estos escenarios destacan la importancia de una percepción y la estimación, así como una comunicación efectiva en situaciones de conflicto.

Referencias:

Pruyt, E. (2013). Small system dynamics models for big issues: Triple jump towards real-world complexity (1st ed.). TU Delft Library