Este análisis de supervivencia se basa en el estudio del tiempo, dada o no la ocurrencia de un evento.

El tiempo de superviviencia o fallo se define como el tiempo que transurre desde el estado inicial o inicio hasta la ocurrencia de un evento escpecifico dado o fallo.

Para determinar el tiempo de falla de manera precisa, hay tres puntos requeridos: - Un tiempo de origen que debe ser definido, - Una escala para medir el paso del tiempo congruente al problema y - NUestra definicion defallo debera ser completamente claro.

Frecuentemente la escala para medir el paso de tiempo es el reloj (en tiempo real, segundos, minutos, etc), sin embargo hay otras posibilidades, el tamaño de un árbol o la cantidad de agua que hay en un tambo.

La función que se creó para el análisis de supervivencia toma los parámetros del data frame seleccionado, donde se selecciona la columna de escala de tiempo a evaluar y la colummna donde nos de un indicador si no se presentó censura y si se presentó la falla del evento estudiado. También la función toma como parámetro el tamaño de la poblacion a evaluar para después hacer su gráfica para el análisis de supervivencia.

require(survival)
require(KMsurv)
require(dplyr)
require(ggplot2)
grafico<- function(n,m){
  ggplot(m)+
  geom_point(aes(x = 1:n, 
                 y = m[,1], 
                 shape = m[,2] %>% as.factor(),
                 colour = m[,2] %>% as.factor()),
                 size = 3)+
  geom_linerange(aes(x = 1:n,
                     ymin = 0,
                     ymax = m[,1]),
                    linetype = "dashed")+
  coord_cartesian(ylim = c(0, max(m[1,])+5))+
  coord_flip()+theme_light()+labs(y="tiempo",x="tamaño de la muestra")+
    scale_color_discrete(name="variables",labels=c(paste("censura"),
                                                       paste("falla")))+
    ggtitle("gráfica de supervivencia")
  }

Ahora veamos cómo funciona el código con 3 bases de datos distintas

1 Data.frame “HR_comma_sep.csv”

Este data.frame nos muestra el comportamiento de los trabajadores con respecto a la empresa donde laboran.

El data frame tiene un total de 14,999 observacioness junto con 10 variables, pero en este estudio se tomaron 20, 30 y 40 trabajadores de manera aleatoria, el cual solo nos interesó estudiar la variable de tiempo “time_spend_company” y el evento “left”.

Como el data frame es muy amplio, se creó un subconjunto de los datos tomando solamente en cuenta las variables mencionadas anteriormente para poder manejarlo mucho más sencillo y poder hacer los gráficos correspondientes para el estudio en cuestión.

hr<- read.csv("HR_comma_sep.csv")
Surv(hr$time_spend_company, hr$left)
n1<-20
set.seed(10)
m1 <- hr %>% 
  select(time_spend_company, left) %>% 
  sample_n(n1)

grafico(n1,m1)

n1<-30
set.seed(20)
m1 <- hr %>% 
  select(time_spend_company, left) %>% 
  sample_n(n1)

grafico(n1,m1)

n1<-40
set.seed(30)
m1 <- hr %>% 
  select(time_spend_company, left) %>% 
  sample_n(n1)

grafico(n1,m1)

2 Data.frame “genfan”

En este data frame los datos provienen de un estudio de ingeniería del tiempo de falla de los ventiladores del generador de diésel. El objetivo de esta base de datos es decidir si sustituir o no los ventiladores con uno de mejor calidad para evitar futuros fallos.

Se estudiaron un total de 70 generadores. Para cada uno de ellos se registró el número de horas desde que lo pusieron en servicio hasta el fallo del ventilador o hasta el final del estudio (lo que pasara primero).

Para este estudio se tomaron 15, 20 y 30 generadores elegidos de forma aleatoria. La variable tiempo es “hours” y la variable estudiada es “status”. Se crearon distintos subconjuntos de data frames para poder tomar los valores tomados en forma aleatoria y hacer su análisis de supervivencia.

data("genfan")
gf<-data.frame(genfan)
Surv(gf$hours, gf$status)
n2<-15
set.seed(40)
m2<-gf %>%
  select(hours,status) %>%
  sample_n(n2)

grafico(n2,m2)

n2<-20
set.seed(50)
m2<-gf %>%
  select(hours,status) %>%
  sample_n(n2)

grafico(n2,m2)

n2<-30
set.seed(60)
m2<-gf %>%
  select(hours,status) %>%
  sample_n(n2)

grafico(n2,m2)

3 Data.frame “psych”

En este data. frame se cuenta con 26 individuos, en el cual se tiene las variables “sex”, “age”, “time” y “death”.

Es de interés estudiar la relación del tiempo en el que se estudió el paciente y, si llegara a suceder, el fallecimiento.

Para el análisis de superviviencia se tomaron 10, 20 y 24 pacientes de manera aleatoria y, a continuación se mostrarán las gráficas correspondientes.

data("psych")
ps<-data.frame(psych)
Surv(psych$time,psych$death)
n3<-10
set.seed(70)
m3<-ps %>%
  select(time,death) %>%
  sample_n(n3)

grafico(n3,m3)

n3<-20
set.seed(80)
m3<-ps %>%
  select(time,death) %>%
  sample_n(n3)

grafico(n3,m3)

n3<-24
set.seed(80)
m3<-ps %>%
  select(time,death) %>%
  sample_n(n3)

grafico(n3,m3)