Paquetería
require(survival)
## Loading required package: survival
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: ggplot2
## Loading required package: ggpubr
## Loading required package: magrittr
data("veteran")
data("heart")
data("diabetic")
Función
dist <- function(datos,time,status,trat){
km_model_trt<-survfit(Surv(time, status)~trat, data=datos)
time1 <- km_model_trt$time[1:km_model_trt$strata[1]]
surv1 <- km_model_trt$surv[1:km_model_trt$strata[1]]
time2 <- km_model_trt$time[(km_model_trt$strata[1]+1):(km_model_trt$strata[1]+km_model_trt$strata[2])]
surv2 <- km_model_trt$surv[(km_model_trt$strata[1]+1):(km_model_trt$strata[1]+km_model_trt$strata[2])]
a <- approxfun(surv1,time1)
b <- approxfun(surv2,time2)
df <- data.frame(surv = surv1,time1 = a(surv1), time2 = b(surv1),distanc=abs(a(surv1)-b(surv1)))
df <- df[!is.na(df$distanc),]
disM <- max(df$distanc)
d <- df[df$distanc==disM,]
grafica <- ggplot(df) +
geom_line(aes(surv,time1, color="1"), size=1) +
geom_line(aes(surv,time2, color="2"), size=1) +
ggtitle(paste("Distancia máxima: \n" ,as.character(round(disM,2)))) +
scale_color_manual(name="Tratamiento",values=c('#4E85DE','#EDA023')) +
geom_hline(yintercept = d$time1, linetype="dashed") +
geom_hline(yintercept = d$time2, linetype="dashed") +
geom_vline(xintercept = d$surv, linetype="dashed") +
labs(x="Supervivencia", y="Tiempo") +
coord_flip()
grafica
}
Ejemplos
dist(veteran,veteran$time,veteran$status,veteran$trt)

dist(heart,heart$year,heart$event,heart$transplant)

dist(diabetic,diabetic$time,diabetic$status,diabetic$trt)
