La finalidad de la siguiente funcion es que genere un grafico adjunto para conjuntos de datos de supervivencia. Esta hecha para recibir un data frame y generar el grafico.

grafica<-function(datos,n){
  
  datos<-sample_n(datos,n)
  
  ggplot(datos)+
    geom_point(aes(x = 1:n, 
                   y = datos[,1], 
                   shape = datos[,2] %>% as.factor(),
                   colour = datos[,2] %>% as.factor(),
                   stroke = 1.3),
               size = 3)+
    scale_shape_manual(values = c(4,1))+
    scale_color_manual(values = c("red","blue"))+
    labs(title = "Datos de supervivencia", x="Tiempo", y="Observaciones", shape="Ocurrencia del evento", colour="Ocurrencia del evento")+
    geom_linerange(aes(x = 1:n,
                       ymin = 0,
                       ymax = datos[,1]), 
                   linetype = "dashed")+coord_flip()
}

La funcion pide dos parametros: el primero, un data frame de dos columnas, y el segundo, un entero que sera el tamanio de la muestra que se va a graficar. El data frame tiene que tener en su primera columna los tiempos de ocurrencia, y en su segunca columna, la ocurrencia del evento. No importa el numero de renglones que tenga el data frame, ya que vamos a tomar una muestra de tamanio n, lo unico que hay que tener en cuenta es que esta n no puede ser mayor al numero de registros.

Lo primero que hace la funcion es generar la muestra de los datos, ya con esto podemos hacer el grafico. Naturalmente, vamos a usar library(ggplot2). Con geom_point graficamos las observaciones con respecto al tiempo, que seran los numeros que van 1:n. Le asignamos un shape y colour con respecto a la ocurrencia del evento. Las funciones scale_shape_manual y scale_color_manual son para escoger la forma y el color de los puntos en la grafica. Con labs ponemos los nombres a los ejes, a la leyenda y el titulo del grafico. Con geom_linerange hacemos las lineas punteadas que van del eje X al punto, y por ultimo, usamos coord_flip para rotar el grafico y este bien acomodado.

Ahora, solo falta probar la funcion. Primero lo haremos con el data frame proporcionado para la practica. Definimos hr como un data frame con las columnas time_spend_company y left, en ese orden, con los 14999 registros. Vamos a usar un tamanio de muestra de 20. Cada vez que corramos esta funcion va a dar una grafica diferente, ya que saca una muestra.

grafica(hr,20)

Ahora, vamos a generar una muestra de valores de tamanio 20 para probar en la grafica. Para las observaciones, vamos a usar numeros del 1 al 10 y asignar de manera aleatoria la ocurrencia del evento. Con estos valores vamos a crear un data frame que usaremos en la funcion.

var1 <- sample(1:10,m,replace = T)
var2 <- sample(c(0,1),10,replace = T)
muestra2 <- data.frame(x=var1,y=var2)

Ahora, tenemos 20 registros en nuestro data frame, podemos usar una n del mismo tamanio o menor. Si n = m, usaremos el data frame completo, ya que nuestra muestra dentro de la funcion es sin reemplazo. A continuacion la grafica con esta informacion:

grafica(muestra2,m)

Por ultimo, vamos a usar library(survival) para obtener un data frame que podamos utilizar en la funcion. Se usara veteran en este caso. Hay que cargar el data frame y arreglarlo para que podamos utilizarlo.

veteranos <- data.frame(x=veteran$time,y=veteran$status)

Y para terminar, probamos nuestra funcion con esta informacion

grafica(veteranos,20)