Función para gráficas de tiempos de falla y censura

La función que se presenta a continuación hace el gráfico adjunto para conjuntos de datos de supervivencia. Recibe cuatro parametros, el primero es un data fame donde esta contenida la información de supervivencia, la función jalara los datos directo de archivos .csv de la computadora por lo que se tiene que escribir el nombre del data frame con comillas y extención, por ejemplo “Supervivencia.csv”. El segundo parámetro (n_m) es el número de la muestra y debe ser un número entero, el tercer parámetro (n_vt) es la variable de tiempo, es decir aquí hay que poner el número de la columna que contiene esta variable, pedimos el número ya que a veces los nombres son largos y podriamos equivocarnos en la escritura, y por último el cuarto parametro (n_vf) hace referencia a la variable de falla, es similar a la anterior ya que pide el número de la columna que contenga a esta variable.

Con estos parametros la función la construimos de la siguiente manera:

fun<-function(df,n_m,n_vt, n_vf){
  
  datos<- read.csv(df)
  x=colnames(datos)[n_vt]
  y=colnames(datos)[n_vf]
  Surv(datos[[x]],datos[[y]])
  
set.seed(123)
m <- datos %>% select(x, y) %>% sample_n(n_m)
Ocurrencia=as.factor(m[[y]])

return(
  
ggplot(m, aes(x=1:n_m, y = m[[x]],shape = Ocurrencia))+
  geom_point(aes(colour = Ocurrencia), size = 4) +
  geom_point(colour = "grey90", size = .9)+
  scale_shape_manual(values=c(16, 8))+
  scale_color_manual(values=c('#FACC2E','#B40404'))+
  geom_linerange(aes(x = 1:n_m, 
                     ymin = 0,
                     ymax = m[[x]]),
                     linetype="twodash",
                     size = 1)+
  
  labs(title="Falla o censura",y="Tiempo",x="Observaciones")+
  coord_cartesian(ylim = c(0,max(m[[x]])+5))+
  coord_flip()+
  theme_light()
)
}

Lo primero que hace la función es leer los datos del archivo que se de, después con los números de las columnas (n_vt y n_vf) saca sus nombres y los guarda en las variables x y y, para después crear el objeto de supervivencia y posteriormente sacar la muestra del tamaño que se le indique, para trabajar sobre ella. Luego con esas muestra solo se grafica el tiempo contra las observaciones, considerando diferente color y forma dependiendo de la ocurrencia del evento de interes

Por ejemplo para el ejemplo visto en clase con los datos de “HR_comma_sep”, al usar la función para una muestra de 20 tenemos la siguiente gráfica:

fun("HR_comma_sep.csv",20,5,7)

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 (las visitas fueron cada 3 meses). La varaible de falla llamada “status” toma valores de 1 para la pérdida visual y de 0 para alguna censura causada por la muerte, el abandono o el final del estudio.

Para aplicar nuestra función guardamos los datos en un csv llamado “Retinopatiadiabetica”, después consideramos una muestra de 20 y las columnas “time” y “status” correspondientes al número 8 y 9 de nuestro archivo, por lo que obtenemos el siguiente gráfico.

 fun("Retinopatiadiabetica.csv",20,8,9)

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. En este caso la varaible de falla llamada “status” toma valores de 1 para datos censurados y 2 para la muerte, el hecho de tomay 1/2 en vez de 0/1 es solo por una costumbre no cambia en nada los datos.

Para aplicar nuestra función guardamos los datos en un csv llamado “Cancer”, después consideramos una muestra de 15 y las columnas “time” y “status” correspondientes al número 3 y 4 de nuestro archivo, por lo que obtenemos la siguiente gráfica.

  fun("Cancer.csv",15,3,4)

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. La varaible de falla llamada “status” toma valores de 0 para datos censurados y 1 para los tumores detectados.

Para aplicar nuestra función guardamos los datos en un csv llamado “Cancer”, después consideramos una muestra de 25 y las columnas “time” y “status” correspondientes al número 4 y 5 de nuestro archivo, por lo que obtenemos el siguiente gráfico.

  fun("TumorRatas.csv",25,4,5)