Funcion que genera una imagen con la diferencia mayor entre dos curvas de supervivencia

Cargamos parqueterias necesarias

require(survival)
## Loading required package: survival
require(ggplot2)
## Loading required package: ggplot2
require(dplyr)
## Loading required package: dplyr
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
require(survminer)
## Loading required package: survminer
## Loading required package: ggpubr
## Loading required package: magrittr

La función construida es:

distancia <- function(datos, v1, v2, n, m){
km_model_trt <- surv_fit(Surv(v1,v2)~trt, 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("Distancia máxima entre las curvas es:", t_max)+
  labs(x = "Tiempo", y = "Probabilidad de supervivencia")
}

Probando la funcion en la base de datos veteran, con las variables vistas en clase.

q<- distancia(veteran, time, status, 61, 53)
q

Segundo ejemplo

Utilizando ota base de datos

Tercer ejemplo

##Listo! ##Bye David!