3. Modelo del problema y comportamiento dinámico de las variables de
estado
library("deSolve")
library(ggplot2)
# Establecer las condiciones iniciales de la variable de estado. En este caso 1
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) #meses
# 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_a= overassesment_factor_gang_b_by_a*obsolescence_rate_a*arms_stock_gang_b-obsolescence_rate_a*arms_stock_gang_a
relative_arming_rate_b=overassesment_factor_gang_a_by_b*obsolescence_rate_b*arms_stock_gang_a-obsolescence_rate_b*arms_stock_gang_b
#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
#SE EMPIEZA DE AQUI: 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.
## Simulación 1
### Supongamos que la gang A sobreestima el armamento de la banda B en un 10%, es decir, que el "overassessment factor of gang B arming by gang A" es 110%, y que la banda B evalúa correctamente el armado de la banda A, es decir, el "overassessment factor of gang A arming by gang B" es 100%. Modela este sistema y simula el modelo durante un periodo de 100 meses. Describe el comportamiento que muestra la simulación y relacionalo con los ciclos de causalidad que hayas encontrado en el diagrama causal.
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)
## Simulación 2
### Ahora supongamos que la gang A subestima el armamento de la banda B en un 50%, es decir, que el "overassessment factor of gang B arming by gang A" es 50%, y que la banda B evalúa correctamente el armado de la banda A, es decir, el "overassessment factor of gang A arming by gang B" es 100%. Haz una nueva corrida del modelo durante un periodo de 100 meses. Describe el comportamiento que muestra la simulación y relacionalo con los ciclos de causalidad que hayas encontrado en el diagrama causal.
parameters2 <- 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
intg.method = c("rk4")
# Realizar la simulación utilizando la función 'ode' del paquete deSolve
out1 <- ode(
y = inicial.conditions, #condiciones iniciales
times = times, #tiempo de simulación
func = model_arms, #función del modelo
parms = parameters,
method = intg.method
)
out2 <- ode(
y = inicial.conditions, #condiciones iniciales
times = times, #tiempo de simulación
func = model_arms, #función del modelo
parms = parameters,
method = intg.method
)
out3 <- ode(
y = inicial.conditions, #condiciones iniciales
times = times, #tiempo de simulación
func = model_arms, #función del modelo
parms = parameters2,
method = intg.method
)
out4 <- ode(
y = inicial.conditions, #condiciones iniciales
times = times, #tiempo de simulación
func = model_arms, #función del modelo
parms = parameters2,
method = intg.method
)
out1 <- as.data.frame(out1)
out2 <- as.data.frame(out2)
out3 <- as.data.frame(out3)
out4 <- as.data.frame(out4)
ggplot() +
geom_line(data = out1, aes(x = time, y = arms_stock_gang_a, color = "arms_stock_gang_a"), show.legend = TRUE) +
geom_line(data = out2, aes(x = time, y = arms_stock_gang_b, color = "arms_stock_gang_b"), show.legend = TRUE) +
scale_color_manual(name = "Legend",
values = c("arms_stock_gang_a" = "blue", "arms_stock_gang_b" = "red"),
labels = c("arms_stock_gang_a" = "Blue: Arms stock of gang A", "arms_stock_gang_b" = "Red: Arms stock of gang B")) +
labs(title = "Sobre estimación del armamento de la banda B \n y evaluación correcta del armado de la banda A",
y = "Arms stock of gangs")

ggplot() +
geom_line(data = out3, aes(x = time, y = arms_stock_gang_a, color = "arms_stock_gang_a"), show.legend = TRUE) +
geom_line(data = out4, aes(x = time, y = arms_stock_gang_b, color = "arms_stock_gang_b"), show.legend = TRUE) +
scale_color_manual(name = "Legend",
values = c("arms_stock_gang_a" = "blue", "arms_stock_gang_b" = "red"),
labels = c("arms_stock_gang_a" = "Blue: Arms stock of gang A", "arms_stock_gang_b" = "Red: Arms stock of gang B")) +
labs(title = "Subestimación del armamento de la banda B \n y evaluación correcta del armado de la banda A",
y = "Arms stock of gangs")
