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
Utilizando ota base de datos
##Listo! ##Bye David!