es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo calcular la supervivencia mediana ajustada por covariables (edad, género y otras covariables)?

Estoy realizando un estudio sobre una enfermedad. He realizado un KM-plot y un análisis de Cox. Sin embargo, no puedo averiguar cómo puedo calcular la supervivencia mediana ajustada por edad, género y otras covariables. Esto es interesante porque tengo cuatro períodos de tiempo diferentes que me gustaría comparar. ¿Alguien sabe cómo y si se puede hacer en R?

Las variables que tengo son:

  • Tiempo de aparición de los síntomas hasta la muerte (time-onset-death). Si el paciente no ha fallecido, se establece el final del estudio.
  • ¿Está el paciente muerto? (Dead)
  • Grupo (1, 2, 3 o 4) según el período de tiempo.

Lo que quiero hacer hoy es calcular la supervivencia mediana para los cuatro grupos ajustada por las covariables (edad y género).

No estoy seguro/a qué función usar. Estoy pensando en una función de Cox, pero solo puedo obtener los riesgos (hazards).

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes calcular el tiempo de supervivencia mediano ajustado para cada grupo utilizando la función coxph del paquete survival en R. Aquí tienes un código de ejemplo para que puedas empezar:

    library(survival)
    
    # Crear datos de ejemplo
    set.seed(123)
    n <- 1000
    time_onset_death <- rexp(n, rate = 0.1)  # tiempos simulados de supervivencia
    Dead <- rbinom(n, 1, prob = pmax(0, pmin(1, time_onset_death/365*0.3 + rnorm(n, sd = 0.1))))  # simulación de censura
    age <- rnorm(n, mean = 50, sd = 10)
    gender <- factor(rbinom(n, 1, prob = 0.5), labels = c("Hombre", "Mujer"))
    group <- as.factor(sample(1:4, size = n, replace = TRUE))
    
    # Ajustar un modelo de riesgos proporcionales de Cox con covariables
    cox_mod <- coxph(Surv(time_onset_death, Dead) ~ age + gender + group)
    
    # Calcular los tiempos de supervivencia mediano ajustados para cada grupo
    med_times <- data.frame(Grupo = levels(group), Tiempo_Mediano_Supervivencia = rep(NA, length(levels(group))))
    for (i in 1:length(levels(group))) {
      group_i <- levels(group)[i]
      nuevos_datos <- data.frame(age = mean(age), gender = "Hombre", group = group_i)
      if (!is.null(match.call(cox_mod$call)$strata)) {
        nuevos_datos[strsplit(match.call(cox_mod$call)$strata, " +")[[1]]] <- 1
      }  
      med_times[i, "Tiempo_Mediano_Supervivencia"] <- summary(survfit(cox_mod, newdata = nuevos_datos), times = 0.5)$median
    }
    
    # Imprimir resultados
    med_times
    

    El código genera datos de ejemplo para time_onset_death, Dead, age, gender y group. Luego, ajusta un modelo de riesgos proporcionales de Cox para time_onset_death con Dead como resultado, y age, gender y group como covariables. Finalmente, calcula los tiempos de supervivencia mediano ajustados para cada grupo mediante la creación de un nuevo marco de datos con la edad media, el primer nivel de gender y cada nivel de group por turno, y utilizando la función survfit para calcular la función de supervivencia para cada nuevo conjunto de datos.

    Ten en cuenta que el código asume que las variables age y gender son variables numéricas y de factor, respectivamente, y que la variable group es una variable de factor con niveles del 1 al 4. Es posible que necesites modificar el código para que coincida con las variables de tu conjunto de datos.

Comments are closed.