Estoy utilizando un conjunto de datos retrospectivo que analiza la supervivencia libre de progresión de pacientes con cáncer, y tratando de determinar si hay una diferencia entre el grupo de tratamiento y el grupo de control. La clasificación del cáncer, sin embargo, es una variable de confusión, por la cual los pacientes con enfermedades de alto grado recibieron tratamiento el 80% del tiempo, y los pacientes con enfermedades de bajo grado recibieron tratamiento el 20% del tiempo.
Estoy tratando de comparar las tasas de supervivencia libre de progresión utilizando un modelo de riesgos proporcionales de Cox entre el grupo de tratamiento y el grupo de control controlando la confusión de la clasificación de la enfermedad (bajo vs. alto).
Actualmente estoy utilizando ponderación de probabilidad inversa para crear pesos de ATE, y usando estos pesos en el modelo de riesgos proporcionales de Cox (usando R). Me preguntaba si sería igual de efectivo crear un modelo CPH con dos covariables: grupo de tratamiento y clasificación de la enfermedad, que creo que también debería ayudar a controlar la confusión por la clasificación de la enfermedad. ¿Ambos métodos lograrán lo mismo, y hay un método más aceptado que el otro?
He publicado a continuación un código de ejemplo.
library('survival')
# Establecer la semilla para garantizar la reproducibilidad
set.seed(1234)
# Crear un vector de tiempo que oscile entre 1 mes y 5 años
tiempo <- sort(c(runif(100, 1, 12), runif(100, 12, 60)))
# Crear un vector de grupo de tratamiento
tx <- rbinom(length(tiempo), 1, 0.5)
# Crear un vector de grupo de clasificación
clasificación <- factor(ifelse(tx == 1, sample(c(rep("alto", 80), rep("bajo", 20)), length(tiempo), replace = TRUE),
sample(c("alto", "bajo"), length(tiempo), replace = TRUE)))
# Crear un vector de evento binario que representa la progresión de la enfermedad
evento <- rep(0, length(tiempo))
evento[clasificación == "alto"] <- rbinom(sum(clasificación == "alto"), 1, 0.8)
evento[clasificación == "bajo"] <- rbinom(sum(clasificación == "bajo"), 1, 0.2)
# Crear el conjunto de datos combinando los vectores
datos <- data.frame(tiempo, evento, tx, clasificación)
#Generar pesos de puntaje de propensión
mod.glm <- glm(tx ~ clasificación, data = datos, family = binomial);
datos$ps <- predict(mod.glm, type = "response");
datos$peso <- ifelse(datos$tx ==1, 1/datos$ps, 1/(1-datos$ps) );
#Modelo CPH no ajustado
mod.cph <- coxph(Surv(tiempo,evento)~ tx, data = datos);
#Modelo CPH usando IPW
mod.cph.ipw <- coxph(Surv(tiempo,evento)~ tx, data = datos, weights = peso);
#Modelo CPH multivariable
mod.cph.multi <- coxph(Surv(tiempo,evento)~ tx + clasificación, data=datos);
```