Como se mencionó en la entrada del blog anterior, tenemos como variables de estado a jóvenes trans, adultos trans y adultos mayores trans. Hemos decidido actualizar el diagrama causal agregando la cadena de envejecimiento de la población mexicana, para que nuestro modelo considere el incremento de la población de México en el aumento de muertes y riesgo de las personas trans.
En la siguiente imagen pueden observar el diagrama causal ya con la cadena de envejecimiento de la población mexicana.
Cadena de envejecimiento y de poblacion trans
También, hemos encontrado información más certera del modelo, lo cual nos permite calibrar y tener un análisis más preciso. Nuestros parámetros son los siguientes:
Tasa de natalidad Tasa de población trans
Tasa de suicidio en adultos trans: Nos basamos en la tasa de suicidio de adultos en Estados Unidos (que es 0.014) y en un estudio sobre intentos de suicidio cometidos por adultos trans, que sugiere que son 3.5 veces más propensos a cometer suicidio. Realizamos una operación para obtener esta tasa.
Tasa de suicidio en jóvenes trans: Encontramos que el 18% de los jóvenes trans en Latinoamérica han intentado suicidarse. Basándonos en estudios psicológicos que muestran que entre el 10% y el 15% de las personas que intentan suicidarse lo vuelven a intentar y logran, estimamos un porcentaje de 1.8. Sin embargo, como no es una estimación precisa, un análisis de incertidumbre será de gran ayuda para manejar las cifras en las que no tenemos un 100% de seguridad.
Tasa de homicidio en adultos trans: En México, se cometen un total de 87 homicidios de personas por su orientación sexual o identidad de género, y más del 50% son de personas trans. Aunque no hay datos específicos, estimamos que son 70 personas y luego calculamos la tasa.
Tenemos otros parámetros basados en la información proporcionada, por lo cual no hay certeza de que los datos estén correctos. Estos son:
Es con estos datos que hemos realizado el modelo, de igual manera está presente el código en RStudio para su revisión.
library(deSolve)
## Warning: package 'deSolve' was built under R version 4.2.3
library(ggplot2)
#exógenas
parameters <- c(tasa_natalidad = 15.75, #Verificado: por cada 1000 habitantes
tasa_poblacion_trans = 1.734/100, #Verificada de datos ensideg
tasa_suicidio_jovenes_trans = 0.09, #Asumida de fuente real
tasa_suicidio_adultos_trans = 0.049, #Verificada, estudio nyt
tasa_suicidio_adultos_mayores_trans = 0.020, #Asumida de datos reales
tasa_homicidio_jovenes_trans = 0.0017, #Asumida conforme dato oficial
tasa_homicidio_adultos_trans = 0.4017, # Semi-real Asumida conforme a fuentes nacionales (85 homicidios lgbt, mas del 50% de trans,se asume que 70 son trans)
tasa_homicidio_adultos_mayores_trans = 0.0117 ,#Asumida confrome dato real.
periodo_adolescencia_cis = 7, #Años promedio de infancia a adolescencia
periodo_madurez_cis = 3, # Edad promedio para ser adulto
periodo_madurez_trans = 3, #de 15 a 25 ("adulto" biologico)
periodo_envejecimiento_trans = 30, # de 25 a 55 (edad para jubvilarse)
periodo_envejecimiento_cis = 30, # de 25 a 55 (edad para jubvilarse)
periodo_muerte_cis = 20,
periodo_muerte = 20
)
initial.conditions <- c(ninos_cis = 25870672, #dato INEGI
jovenes_cis = 25896449, #dato UNFPA
adultos_cis = 10939569,
adultos_mayores_cis = 17958707, #dato INEGI, adultos 60+
jovenes_trans= 154460, #entre 1.2 y 2.7 de la poblacion total de jovenes
adultos_trans = 705063,
adultos_mayores_trans = 49428)
# Definir el vector de tiempos para la simulación
times <- seq(0,
30,
1) #años
intg.method <- c("rk4")
model_reto <-function(t, state, parameters){
with(as.list(c(state, parameters)),{
#Variables Auxiliares o endógenas
suicidio_jovenes_trans = jovenes_trans * tasa_suicidio_jovenes_trans
homicidio_jovenes_trans = jovenes_trans * tasa_homicidio_jovenes_trans
suicidio_adultos_trans = adultos_trans * tasa_suicidio_adultos_trans
homicidio_adultos_trans = adultos_trans * tasa_homicidio_adultos_trans
suicidio_adultos_mayores_trans = adultos_mayores_trans * tasa_suicidio_adultos_mayores_trans
homicidio_adultos_mayores_trans = adultos_mayores_trans * tasa_homicidio_adultos_mayores_trans
muerte_natural = adultos_mayores_trans / periodo_muerte
#Variables de flujo (son las que modifican a las variables de estado)
nacimientos = adultos_cis/ 10000 * tasa_natalidad
adolescencia_cis = ninos_cis / periodo_adolescencia_cis
madurez_cis = jovenes_cis / periodo_madurez_cis
autoid_poblacion_trans = jovenes_cis * tasa_poblacion_trans
envejecimiento_cis = adultos_cis / periodo_envejecimiento_cis
muerte_cis = adultos_mayores_cis / periodo_muerte_cis
muertes_jovenes_trans = suicidio_jovenes_trans + homicidio_jovenes_trans
madurez_trans = jovenes_trans / periodo_madurez_trans
muertes_adultos_trans = suicidio_adultos_trans + homicidio_adultos_trans
envejecimiento_trans = adultos_trans / periodo_envejecimiento_trans
muertes_adultos_mayores_trans = suicidio_adultos_mayores_trans + homicidio_adultos_mayores_trans + muerte_natural
#variable de estado (se establece su ecuación diferencial de ahí viene la d)
dninos_cis = nacimientos - adolescencia_cis
djovenes_cis = adolescencia_cis - madurez_cis - autoid_poblacion_trans
dadultos_cis = madurez_cis - envejecimiento_cis
dadultos_mayores_cis = envejecimiento_cis - muerte_cis
djovenes_trans = autoid_poblacion_trans - muertes_jovenes_trans - madurez_trans
dadultos_trans = madurez_trans - muertes_adultos_trans - envejecimiento_trans
dadultos_mayores_trans = envejecimiento_trans - muertes_adultos_mayores_trans
#Devuelve los resultados de la variable de estado
return(list(c(dninos_cis, djovenes_cis, dadultos_cis, dadultos_mayores_cis, djovenes_trans, dadultos_trans, dadultos_mayores_trans)
))
})
}
# 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")
out <- ode(
y = initial.conditions, #condiciones iniciales
times = times, #tiempo de simulación
func = model_reto, #función del modelo
parms = parameters,
method = intg.method
)
out <- as.data.frame(out)
ggplot(out, aes(x = time, y = jovenes_trans)) +geom_line()
ggplot(out, aes(x = time, y = adultos_trans)) +geom_line()
ggplot(out, aes(x = time, y = adultos_mayores_trans)) +geom_line()
Realizamos 3 modelos de cadena de envejecimiento para representar cómo 3 grupos poblacionales de la comunidad trans, son afectados por diferentes manifestaciones de discriminación y cómo estas recaen en resultados como homicidios y suicidios.
Estos 3 grupos poblacionales son jóvenes trans, adultos trans y adultos mayores trans. En el caso de los jóvenes vemos cómo en un modelo a 30 años la población crecerá durante los primero 5 años, pero a partir de ahí la población irá disminuyendo a causa de estos dos factores (suicidios/homicidios). Para los adultos trans durante todo el modelo se muestra la disminución, sin embargo en los primeros 2 años, muestran una disminución más acelerada. Por último, en el caso de los adultos mayores trans, la población crece dentro de los primeros 10 años, y a partir de ahí comienza la disminución. Reconocemos que hasta el momento, nuestra investigación es un poco simplista y que el tema posee toda una red de causas y efectos interseccionales, por lo que entendemos que esta es una primera aproximación.
Debido a que no tenemos seguridad en los parametros, realizamos un analsis de incertidumbre.
#Definimos las incertidumbres
x1<- seq(5/100, 15/100, 1/100) # tasa_suicidio_jovenes_trans 0.09
x2<- seq(0.1/100, 0.5/100, 0.01/100)# tasa homicidio jovenes trans 0.0017
x3<- seq(2.5/100, 7.5/100, 0.5/100)# tasa_suicidio_adultos_trans0.049
x4<- seq(30.17/100, 50.17/100, 5/100) # tasa_homicidio_adultos_trans 0.4017
Xs<-expand.grid(list(tasa_suicidio_jovenes_trans=x1,tasa_homicidio_jovenes_trans=x2, tasa_suicidio_adultos_trans=x3, tasa_homicidio_adultos_trans = x4))
Xs$Run.ID <- 1:nrow(Xs)
out_all <- list()
#Establecemos el loop
for (i in 1:nrow(Xs))
{
parameters.Xs <- c(tasa_natalidad = 15.75, #Verificado: por cada 1000 habitantes
tasa_poblacion_trans = 1.734/100, #Verificada de datos ensideg
tasa_suicidio_jovenes_trans = Xs$tasa_suicidio_jovenes_trans[i], #Asumida de fuente real
tasa_suicidio_adultos_trans = Xs$tasa_suicidio_adultos_trans[i], #Verificada, estudio nyt
tasa_suicidio_adultos_mayores_trans = 0.020, #Asumida de datos reales
tasa_homicidio_jovenes_trans = Xs$tasa_homicidio_jovenes_trans[i], #Asumida conforme dato oficial
tasa_homicidio_adultos_trans = Xs$tasa_homicidio_adultos_trans[i], # Semi-real Asumida conforme a fuentes nacionales (85 homicidios lgbt, mas del 50% de trans,se asume que 70 son trans)
tasa_homicidio_adultos_mayores_trans = 0.0117 ,#Asumida confrome dato real.
periodo_adolescencia_cis = 7, #Años promedio de infancia a adolescencia
periodo_madurez_cis = 3, # Edad promedio para ser adulto
periodo_madurez_trans = 3, #de 15 a 25 ("adulto" biologico)
periodo_envejecimiento_trans = 30, # de 25 a 55 (edad para jubvilarse)
periodo_envejecimiento_cis = 30, # de 25 a 55 (edad para jubvilarse)
periodo_muerte_cis = 20,
periodo_muerte = 20
)
# 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
out <- ode(
y = initial.conditions, #condiciones iniciales
times = times, #tiempo de simulación
func = model_reto, #función del modelo
parms = parameters.Xs,
method = intg.method
)
out <- as.data.frame(out)
#agregar columna al dataframe
out$Run.ID <- Xs$Run.ID[i]
# Agregar el data frame out a la lista out_all.
# out_all es una lista que recopila los resultados de todas las simulaciones.
# La función append() se utiliza para agregar el data frame out a la lista out_all.
out_all <- append(out_all, list(out))
# Imprimir el Run.ID para esta simulación particular.
# Esto podría ser útil para el seguimiento del progreso de la simulación, especialmente si hay muchas iteraciones.
#print(Xs$Run.ID[i])
}
# Concatenar resultados
# La función do.call() ejecuta una función (en este caso "rbind") en una lista de argumentos (en este caso out_all).
# "rbind" es una función que combina data frames por filas.
# Al utilizar do.call con "rbind", se están combinando todos los data frames en la lista out_all en un solo data frame.
out_all <- do.call("rbind", out_all)
# La función dim() devuelve las dimensiones del objeto, mostrando el número de filas y columnas del data frame out_all.
# Esto puede ser útil para verificar que todos los data frames se hayan combinado correctamente.
dim(out_all)
## [1] 768955 9
# Combinar out_all y Xs
# La función merge() combina dos data frames en uno, basándose en una o más columnas en común.
# En este caso, se están combinando los data frames out_all y Xs basándose en la columna "Run.ID".
# Esto agregará las columnas de Xs al data frame out_all, alineando las filas basadas en los valores de "Run.ID".
out_all <- merge(out_all, Xs, by="Run.ID")
# Nuevamente, se utiliza dim() para mostrar las dimensiones del objeto resultante.
# Esto puede ser útil para verificar que la fusión se haya realizado correctamente y para entender cómo ha cambiado
# el tamaño del data frame como resultado de la fusión.
dim(out_all)
## [1] 768955 13
Se crearon 768,955 escenarios con las diferentes variaciones en los parámetros de las variables tasa de suicidio de jóvenes trans, tasa de homicidio jóvenes trans, tasa de suicidio de adultos trans y tasa de homicidio de adultos trans. Enseguida presentamos los parámetros originales de las variables, junto a sus variaciones para crear escenarios de incertidumbre:
#Varios plots
# Crea una gráfica para cada variable de interés
p1<- ggplot(out_all,aes(x=time,y=adultos_mayores_trans,group=Run.ID, colour=tasa_suicidio_jovenes_trans))+
geom_line()+
scale_color_gradient(low = "blue", high = "orange")
p2<- ggplot(out_all,aes(x=time,y=adultos_mayores_trans,group=Run.ID, colour=tasa_homicidio_jovenes_trans))+
geom_line()+
scale_color_gradient(low = "blue", high = "green")
p3<- ggplot(out_all,aes(x=time,y=adultos_mayores_trans,group=Run.ID, colour=tasa_suicidio_adultos_trans))+
geom_line()+
scale_color_gradient(low = "blue", high = "red")
p4<- ggplot(out_all,aes(x=time,y=adultos_mayores_trans,group=Run.ID, colour=tasa_homicidio_adultos_trans))+
geom_line()+
scale_color_gradient(low = "pink", high = "skyblue")
# Ahora puedes ver las gráficas individualmente
p1
Después de graficar todos los escenarios, hicimos tres diferentes gráficas utilizando las diferentes variables como criterio de color. En la primera gráfica, se colorean los diferentes escenarios utilizando como referencia la variable tasa de suicidio de jóvenes trans. Los colores naranjas indican los escenarios donde es más grande la tasa de suicidio de jóvenes, y muestran que estos casos serán en los que habrán menos personas adultxs mayores trans. Por otra parte, la mayoría de los escenarios a partir de la franja naranja que se muestra tienen una tasa de suicidio del menor rango, indicando que entre menor sea la tasa de suicidio de personas jóvenes, más personas trans alcanzarán la edad de adulto mayor. El hecho de que las transiciones de color no sean tan presentes en esta gráfica indica que, mientras que es significativo el cambio en la tasa de suicidio en personas jóvenes para que haya una mayor población de adultos mayores trans en el futuro, no es el factor más determinante para que esto llegue a suceder.
p2
En la segunda gráfica, se colorean los diferentes escenarios utilizando como referencia la variable tasa de homicidio jóvenes trans. Los colores azules indican que en los escenarios donde es más grande la tasa de homicidio de jóvenes, y los verdes lo opuesto. En la gráfica se puede apreciar que en todos los escenarios, ya sea donde haya menor o mayor cantidad de personas trans que llegan a la vejez, hay una mezcla de ambos parámetros; indicando que esta variable no tiene tanta relevancia para determinar si las personas trans llegan a la vejez por los homicidios de jóvenes trans.
p3
En la tercera gráfica, se colorean los diferentes escenarios utilizando como referencia la variable tasa de suicidio de adultos trans. Los colores rojizos indican que en los escenarios donde es más grande la tasa de homicidio de jóvenes, y los azules lo opuesto. En esta gráfica, como en la pasada, no hay una transición de colores uniforme en los diferentes escenarios donde hay más o menos personas trans llegando a la vejez; sin embargo, los saltos entre valores de tasas son más prolongados. Esto indica que esta variable es más relevante que la graficada en la pasada, pero aún no es la variable más relevante para que más personas trans puedan llegar a la vejez.
p4
Por último, en la última gráfica, se colorean los diferentes escenarios utilizando como referencia la variable tasa de homicidio de adultos trans. Los colores celestes indican que en los escenarios donde es más grande la tasa de homicidio de adultos trans, y los rosados lo opuesto. Al haber una transición uniforme que se relaciona negativamente con la variable modelada (o se hace que, entre que la tasa de homicidio incrementa, los adultos mayores decrementa), indica que de las cuatro variables modeladas, es la más relevante para determinar la cantidad de personas trans que llegan a la vejez.