Función para gráficas de diagnóstico

La función que se presenta a continuación hace gráficos que permiten determinar si la función de supervivencia estimada sigue alguna distribución paramétrica exponencial, weibull, lognormal, log logistica o gompertz. La función de supervivencia se estima a través del método Kaplan-Meier y si es que algún grafico es una linea recta, significa que muy probablemente la función de supervivencia sigue la distribución del grafico asociado. La función recibe tres parametros, t que es un vector de tiempos de falla, c que es el vector de datos censurados y data que es el conjunto de datos sobre el que trabajamos.

fun<-function(t, c, data){
  
  km_model<-surv_fit(Surv(t,c)~1, data)
  
   exponencial<-ggplot()+
    geom_point(aes(x=log(km_model$surv), y=km_model$time), colour="#F52121")+
    labs(x = "ln(S(t))",y = "t",title ="Diagnostico exponencial")
  exponencial
  
  weib<-ggplot()+
    geom_point(aes(log(-log(km_model$surv)), log(km_model$time)), color = "#EFDA07")+
    labs(x="S(t)", y="t", title = "Diagnostico Weibull")
  weib
  
  lognorm<-ggplot()+ 
    geom_point(aes(qnorm(1-km_model$surv), log(km_model$time)), color="#00AFBB")+
    labs(x="S(t)", y="t", title = "Diagnostico Lognormal")
  lognorm
  
  loglogis<-ggplot()+ 
    geom_point(aes(log((1/km_model$surv)-1), log(km_model$time)), color="#2EE120")+
    labs(x="S(t)", y="t", title = "Diagnostico Log-logistico")
  loglogis

  gompert<-ggplot()+ 
    geom_point(aes(log(-log(km_model$surv)+1), km_model$time), color="#E1209E")+
    labs(x="S(t)", y="t", title = "Diagnostico Gompertz")
  gompert
  grid.arrange(exponencial,weib,lognorm,loglogis,gompert, ncol=3)  
}

Ejemplos

Ahora mostraremos tres ejemplos de su uso con tres conjuntos de datos distintos que sacamos de R, del paquete ‘survival’.

1. Retinopatía diabética

El primero es con el data set llamado “diabetic”, que trata una retinopatía diabética de “alto riesgo”, a través de una prueba de coagulación con láser, por lo tanto el evento de interés fue el tiempo desde el inicio del tratamiento hasta el momento en que la agudeza visual cayó por debajo de 5/200 dos visitas seguidas.

 fun(diabetic$time,diabetic$status,diabetic)

2. Cáncer de pulmón

Este ejercicio lo haremos con el data set llamado “cancer”, que estudia la supervivencia en días de pacientes con cáncer de pulmón avanzado.

 fun(cancer$time,cancer$status,cancer)

3. Tratamiento de ratas

Por último trabajaremos con el data set llamado “rats”, en el cual se eligieron tres ratas de cada una de las 100 camadas, una de las cuales se trató con un medicamento, y luego se siguió a todos para determinar la incidencia de tumores.

 fun(rats$time,rats$status,rats)