La función que se creó para calcular la distancia máxima entre las dos curvas de supervivencia fue la siguiente:

distancia <- function(datos, time, stat,dep, n, m){
  km_model_trt <- surv_fit(Surv(time,stat)~dep, datos)
  ggsurvplot(km_model_trt)
  
  times1 <- km_model_trt$time[1:n]
  surv1 <- km_model_trt$surv[1:n]
  times2 <- km_model_trt$time[(n+1):(n+m)]
  surv2 <- km_model_trt$surv[(n+1):(n+m)]
  v <- data.frame(Tiempo=times1)
  
  a <- approxfun(times1, surv1)
  b <- approxfun(times2, surv2)
  e <- approxfun(surv1, times1)
  d <- approxfun(surv2, times2)
  
  p <- seq(0.1,0.95, length=1000)
  p1 <- e(p)
  p2 <- d(p)
  dif <- abs(p1-p2)
  t_max= max(dif)
  
  for (j in 1:1000){
    if (dif[j] == t_max){
      t <- j
      break
    }else{
      t<- 0
    }
  }
  y1 <- p[t]
  x1 <- e(y1)
  x2 <- d(y1)
  
  ggplot(data=v,aes(x = times1, y= a(times1), color="red")) + geom_step() + 
    geom_step(data=v,aes(x=times1, y=b(times1), color="blue")) +
    geom_hline(yintercept = p[t],linetype="dashed")+ geom_vline(xintercept = x1,linetype="dashed")+
    geom_vline(xintercept = x2,linetype="dashed")+
    ggtitle("La distancia máxima entre las curvas de supervivencia es: ", t_max)+
    labs(x = "Tiempo", y = "Supervivencia")
}

Los parámetros que toman son los siguientes:

##1. Data “veteran” Esta data consiste en un ensayo aleatorio de dos regímenes de tratamiento para el cáncer de pulmón. Este es un conjunto de datos estándar de análisis de supervivencia.

Primero se buscan los valores de n y m. Para eso se usará el siguiente código:

km_model_trt <- surv_fit(Surv(time,status)~trt, veteran)
km_model_trt$strata
## trt=1 trt=2 
##    61    53

Ya que se tiene los valores, es decir, n=61 y m=53 sacamos la distancia máxima entre las curvas de supervivencia para “veteran”.

distancia(veteran, veteran$time, veteran$status,veteran$trt, 61, 53)

##2. Data “cancer” Esta data consiste en la supervivencia en pacientes con cáncer pulmonar avanzado del Grupo de Tratamiento del Cáncer del Norte Central. Los puntajes de rendimiento evalúan qué tan bien el paciente puede realizar las actividades diarias habituales.

Se repite el proceso de la data “veteran” para encontrar los valores de n y m.

km_model_trt <- surv_fit(Surv(time,status)~sex, cancer)
km_model_trt$strata
## sex=1 sex=2 
##   119    87

Ya que se tiene los valores, es decir, n=119 y m=87 sacamos la distancia máxima entre las curvas de supervivencia para “cancer”.

distancia(cancer,cancer$time,cancer$status,cancer$sex,119,87)

##3. Data “pbc” Estos datos proceden del ensayo Mayo Clinic en cirrosis biliar primaria (PBC) del hígado realizado entre 1974 y 1984. Un total de 424 pacientes PBC, remitidos a la Clínica Mayo durante ese intervalo de diez años, cumplieron los criterios de elegibilidad para el ensayo controlado con placebo aleatorizado del medicamento D-penicillamina.

Los primeros 312 casos del conjunto de datos participaron en el ensayo aleatorizado y contienen datos ampliamente completos. Los 112 casos adicionales no participaron en el ensayo clínico, pero consintieron en que se registraran las mediciones básicas y que debían seguirse para la supervivencia. Seis de esos casos se perdieron para el seguimiento poco después del diagnóstico, por lo que los datos aquí son de 106 casos adicionales, así como los 312 participantes aleatorizados.

Se repite el proceso de la data “veteran” para encontrar los valores de n y m.

km_model_trt <- surv_fit(Surv(time,status)~trt, pbc)
km_model_trt$strata
## trt=1 trt=2 
##    73    68

Ya que se tiene los valores, es decir, n=73 y m=68 sacamos la distancia máxima entre las curvas de supervivencia para “cancer”.

distancia(pbc,pbc$time,pbc$status,pbc$trt,73,68)