Quiero encontrar un nombre adecuado para el problema analítico que he identificado a continuación.
Una de las medidas más precisas de la disponibilidad de armas de fuego es la proporción de suicidios cometidos con armas de fuego, o FS/S (suicidios con armas de fuego / suicidios). La literatura está dividida en cuanto a si este proxy es apropiado cuando el resultado son suicidios: algunos piensan que está bien, aunque otros, incluyéndome a mí, creen que es malo porque los mismos datos aparecen tanto en las variables dependientes como independientes.
He elaborado un código R para mostrar que esto lleva a asociaciones espurias. Simulé suicidios con armas de fuego y sin armas de fuego utilizando la media y la desviación estándar de datos reales de la Carga Global de Enfermedades, luego utilicé una regresión de mínimos cuadrados ordinarios para probar si el FS/S simulado está asociado con suicidios con armas de fuego, sin armas de fuego y totales. Aunque los suicidios con armas de fuego y sin armas de fuego fueron generados independientemente, la proporción del total que es un suicidio con arma de fuego (FS/S) tiene una asociación altamente significativa (p < .001) tanto con los suicidios con armmas de fuego como con los totales. Estas asociaciones son obviamente el resultado de tener los mismos datos tanto en la variable independiente como en la dependiente.
Creo que esto podría ser un sesgo de collider, aunque algunos lo llaman "contaminaciones" o una "asociación mecánica", pero ninguno de estos términos me parece correcto. ¿Alguien puede ayudar?
library(tidyverse)
# generar datos simulados, analizar, poner en tabla; fuente de información: https://msalganik.wordpress.com/2017/01/21/making-sense-of-the-rlnorm-function-in-r/
firearm_mean <-
log(0.8 ^ 2 / sqrt(1.4 ^ 2 + 0.8 ^ 2))
firearm_sd <-
sqrt(log(1 + (1.4 ^ 2 / 0.8 ^ 2)))
nonfirearm_mean <-
log(9.6 ^ 2 / sqrt(6.9 ^ 2 + 9.6 ^ 2))
nonfirearm_sd <-
sqrt(log(1 + (6.9 ^ 2 / 9.6 ^ 2)))
sim <-
tibble(
firearm_sim =
rlnorm(n = 200,
meanlog = firearm_mean,
sdlog = firearm_sd),
nonfirearm_sim =
plnorm(200, meanlog = nonfirearm_mean,
sdlog = nonfirearm_sd),
total_sim = firearm_sim + nonfirearm_sim,
fs_s = (firearm_sim / total_sim) * 100) %>%
pivot_longer(cols = contains("sim"),
names_to = "método",
values_to = "tasa") %>%
group_by(método) %>%
do(lm(log(tasa) ~ fs_s,
data = .) %>%
clean() %>%
filter(term != "(Intercept)")) %>%
transmute(método =
recode(método,
"firearm_sim" = "Suicidio con armas de fuego",
"nonfirearm_sim" =
"Suicidio sin armas de fuego",
"total_sim" = "Suicidio total"),
est = format(round(estimate, 3), nsmall = 3),
p = format(round(p_value, 3), nsmall = 3)) %>%
print()