Fuente: Pruyt, E. (2013). Small System Dynamics Models for Big Issues (Capítulo 6, Problema 6.7)
Este modelo simula la evolución de familias con múltiples problemas mediante gráficos y diagramas. Se analiza el flujo de personas a través de distintas etapas de vida (niñez, juventud, adultez y retiro), considerando cuánto tiempo permanecen en cada una y cómo cambian las proporciones con el tiempo.
También se incluye la natalidad, con tasas específicas para jóvenes y adultos, y la mortalidad, que solo afecta a los retirados. Además, se estudia la criminalidad dentro de estas familias, analizando qué porcentaje de cada grupo tiene comportamiento delictivo y cuántos delitos se cometen en promedio.
A través de diagramas y gráficos, se visualiza cómo estas dinámicas impactan la composición de la población y el comportamiento delictivo en estas familias.
library(deSolve)
## Warning: package 'deSolve' was built under R version 4.4.3
InitialConditions <- c(kids= 1000000,
youngsters= 1000000,
adults= 3000000,
retirees= 750000
)
times <- seq(0,#Inicio
50,#Tiempofinal
1) #Cadencia
prob6.7 <- function(t, state, parameters) {
with(as.list(c(state,parameters)), {
#Variables endogenas
criminalkids= criminalkids_percentage*kids
criminalyoungsters= criminalyoungsters_percentage*youngsters
criminaladults= criminaladults_percentage*adults
criminalretirees= criminalretirees_percentage*retirees
crimes = otherscrimes + (crimes_perkids*criminalkids) + (crimes_peryoungsters*criminalyoungsters) + (crimes_peradults*criminaladults) + (crimes_perretirees*criminalretirees)
#Variables de flujo
birth= (fertility_youngsters*youngsters) + (fertility_adults*adults)
kids2youngsters= kids/time_kids
youngsters2adults= youngsters/time_youngsters
adults2retirees= adults/time_adults
death= retirees/time_retiree
#Variables de estado (d)
d.kids= birth - kids2youngsters
d.youngs= kids2youngsters - youngsters2adults
d.adults= youngsters2adults - adults2retirees
d.retirees= adults2retirees - death
list(c(d.kids,d.youngs,d.adults,d.retirees))
})
}
###Variables exógenas
parameters<-c(time_kids= 12,
time_youngsters= 12,
time_adults= 40,
time_retiree= 15,
fertility_youngsters= 0.3/100,
fertility_adults= 3/100,
criminalkids_percentage= 5/100,
criminalyoungsters_percentage= 50/100,
criminaladults_percentage= 60/100,
criminalretirees_percentage= 10/100,
crimes_perkids= 2,
crimes_peryoungsters= 4,
crimes_peradults= 12,
crimes_perretirees= 4,
otherscrimes= 6000000
)
intg.method<-c("rk4")
out <- ode(y = InitialConditions,
times = times,
func = prob6.7,
parms = parameters,
method =intg.method )
plot(out,
col=c("blue"))