Este caso de estudio debe ser cuidadosamente documentado en R, ya que la información proporcionada será esencial para responder preguntas y realizar análisis posteriores sobre la efectividad de las políticas de prevención de crímenes de odio en el estado analizado.
Imaginemos un estudio de caso enfocado en la dinámica poblacional y los crímenes de odio dentro de una región ficticia. Este escenario servirá para comprender el impacto potencial de las políticas de prevención en la incidencia de tales crímenes a lo largo del tiempo. El objetivo es simular cómo diferentes enfoques pueden influir en la reducción de los crímenes de odio mediante la implementación de políticas públicas específicas.
Para realizar este análisis, es crucial considerar el último dígito de tu número de matrícula como variable [X] para determinar ciertos parámetros iniciales en la simulación. Este número [X] ajustará los valores iniciales relacionados con la población y la incidencia de crímenes de odio en diferentes zonas de un estado. Por ejemplo, si tu matrícula es A0012345, el 5 sustituirá a los valores faltantes en el problema [X], si tu matrícula es A0012540, el 0 sustituirá a los valores faltantes en el problema [X].
El estado está dividido en tres zonas principales: urbanas, suburbanas y rurales. La población se distribuye de la siguiente manera: inicialmente tenemos [X+2] millones en zonas urbanas, [X+4] millones en zonas suburbanas y [X+1] millones en zonas rurales. Para simplificar el modelo consideremos que no existen muertes ni nacimientos en las poblaciones establecidas.
La incidencia inicial de crímenes de odio se establece en 100 en zonas urbanas, 50 en zonas suburbanas y 200 en zonas rurales. Se espera que los crímenes de odio se incrementen a una tasa de 10 crímenes por cada millón de habitantes.
A partir de que se implementa una política pública esta tiene un período de 10 años para ver resultados de efectividad en la reducción de los crímenes de odio. Anualmente, se espera que la incidencia de crímenes de odio disminuya un 5% en zonas urbanas, 7% en zonas suburbanas y 10% en zonas rurales, gracias a la implementación efectiva de las políticas de prevención.
Las políticas de prevención incluyen programas de educación y sensibilización que incrementan la eficacia de la reducción de crímenes de odio. Este modelo debe ejecutarse a lo largo de un período de 50 años y ver su desarrollo cada 3 meses, la variable relevante a analizar es total de crímenes de odio en el estado (además de las variables de estado y flujo que determines).
Matricula: A0170354
En Vensim, elabora el diagrama causal del caso de estudio y cargalo como imagen jpg. Recuerda que debe contener polaridades de las relaciones causales y ciclos de retroalimentación.
En Vensim, elabora el diagrama de flujo del caso de estudio y cárgalo como imagen jpg o png.
Utilizando la plantilla con la que elaboramos nuestros modelos, en un archivo Rmd modela tu sistema y con la función ggplot() grafica el comportamiento de las variables de estado, las variables de flujo y las que se te hayan solicitado en la descripción de tu caso de estudio como variables relevantes. Sube tu archivo html con el código y las gráficas con ggplot(). Sólo se calificarán archivos html con el código y las gráficas, archivos Rmd o de otra extensión se calificarán con 0.
#Carga la librería deSolve empleando la función library()
library("deSolve")
# Condiciones iniciales de cada variable de estado
InitialConditions <- c(poblacion_urbana = 6000000 , # x+2 millones de personas
poblacion_suburbana = 8000000 , #x+4 millones de personas
poblacion_rural = 5000000 , #x+1 millones de personas
crimenes_odio_urbano = 100,
crimenes_odio_suburbano = 50,
crimenes_odio_rural = 200,
politica_publica = 0) #numero de crimenes de odio
# Especificar el vector de tiempo con la funcion "seq()" Nota: es importante indicar la unidad de tiempo
times <- seq(2010, 2150, by = 1)
# Generar la función
modelo_crimenes <- function(t, state, parameters) {
with(as.list(c(state, parameters)), {
# Variables auxiliares (endógenas)
efectividad_politica <- ifelse(t >= tiempo_efectividad, 1, 0)
# Variables de flujo
generacion_urbana <- tasa_generacion_urbana * poblacion_urbana
generacion_suburbana <- tasa_generacion_suburbana * poblacion_suburbana
generacion_rural <- tasa_generacion_rural * poblacion_rural
reduccion_urbana <- efectividad_politica * impacto_politica * crimenes_odio_urbano
reduccion_suburbana <- efectividad_politica * impacto_politica * crimenes_odio_suburbano
reduccion_rural <- efectividad_politica * impacto_politica * crimenes_odio_rural
# Variables de estado (stock) Nota: recordar agregar "d" al inicio
dcrimenes_odio_urbano <- generacion_urbana - reduccion_urbana
dcrimenes_odio_suburbano <- generacion_suburbana - reduccion_suburbana
dcrimenes_odio_rural <- generacion_rural - reduccion_rural
dpolitica_publica <- ifelse(t == tiempo_efectividad, 1, 0)
# No cambia la población (stock fijo)
dpoblacion_urbana <- 0
dpoblacion_suburbana <- 0
dpoblacion_rural <- 0
# Elegir las variables que serán “impresas” por la simulación empleando la función c() Nota: hay que agregar signo diferencial “d”
list(c(dpoblacion_urbana,
dpoblacion_suburbana,
dpoblacion_rural,
dcrimenes_odio_urbano,
dcrimenes_odio_suburbano,
dcrimenes_odio_rural,
dpolitica_publica),
reduccion_total = reduccion_urbana + reduccion_suburbana + reduccion_rural,
total_crimenes = crimenes_odio_urbano + crimenes_odio_suburbano + crimenes_odio_rural)
})
}
# Variables exógenas. Nota: cada parámetro está asociado a un valor numérico único para el cual correremos el modelo de simulación, es importante indicar la unidad de medida
parameters <- c(
tasa_generacion_urbana = 0.00001,
tasa_generacion_suburbana = 0.000008,
tasa_generacion_rural = 0.000012,
impacto_politica = 0.05, # 5% reduccion por año
tiempo_efectividad = 2030
)
# Método Runge-Kutta de Orden 4
out <- ode(y = InitialConditions, times = times, func = modelo_crimenes,
parms = parameters, method = "rk4")
# Generar datos de la simulación, creando una base de datos "out", empleando la función “ode” considerando todos los elemntos definidos.
out_df <- as.data.frame(out)
# Analizar gráficamente los resultados para esto emplea la función “plot”
plot(out_df$time, out_df$crimenes_odio_urbano, type = "l", col = "red",
ylim = c(0, max(out_df$crimenes_odio_urbano,
out_df$crimenes_odio_suburbano,
out_df$crimenes_odio_rural)),
xlab = "Año", ylab = "Crímenes de odio", lwd = 2,
main = "Evolución de crímenes de odio por zona")
lines(out_df$time, out_df$crimenes_odio_suburbano, col = "blue", lwd = 2)
lines(out_df$time, out_df$crimenes_odio_rural, col = "green", lwd = 2)
legend("topright", legend = c("Urbano", "Suburbano", "Rural"),
col = c("red", "blue", "green"), lwd = 2)