Para el análisis de supervivencia, la funcion graf_censuraD
grafica datos censurados por la derecha del tipo I y II. El código es el siguiente:
graf_censuraD(ve,vt1,tm,titulo,etiqx,etiqy,vt2){
if(missing(vt2)){
Surv(vt1,ve)
set.seed(1)
m <- data.frame(vt1,ve) %>% sample_n(tm)
status <- as.factor(m$ve)
ggplot(m)+
geom_point(aes(x = 1:tm, y = m$vt1, shape = status,
colour = status), size = 2, stroke = 1.1)+
geom_point(x = 1:tm, y = rep(0,tm), shape = 16, colour = 'springgreen', size = 2)+
scale_shape_manual(values=c(0,4,16),name = "Escala",
labels= c(quote(0 == censurado), quote(1 == finado)))+
scale_color_manual(values=c('deeppink','darkorchid'),name = "Escala",
labels= c(quote(0 == censurado), quote(1 == finado)))+
geom_linerange(aes(x = 1:tm, ymin = 0, ymax= m$vt1))+
coord_cartesian(ylim = c(0,max(m$vt1)+5))+
coord_flip()+
labs(x= etiqx, y= etiqy, title = titulo)
}else{
Surv(vt1,vt2,ve)
set.seed(2)
m <- data.frame(vt1,vt2,ve) %>% sample_n(tm)
ggplot(m)+
geom_point(aes(x = 1:tm, y = m$vt2, shape = m$ve %>% as.factor(),
colour = m$ve %>% as.factor()), size = 2, stroke = 1.1)+
scale_shape_manual(values=c(0,4),name = "Escala",
labels= c(quote(0 == censurado), quote(1 == finado)))+
scale_color_manual(values=c('deeppink','darkorchid'),name = "Escala",
labels= c(quote(0 == censurado), quote(1 == finado)))+
geom_point(x = 1:tm, y = m$vt1, shape = 16, colour = 'springgreen', size = 2)+
geom_linerange(aes(x = 1:tm, ymin = m$vt1, ymax= m$vt2))+
coord_cartesian(ylim = c(0,max(m$vt1)+5))+
coord_flip()+
labs(x= etiqx, y= etiqy, title = titulo)
}
}
Los argumentos son:
ve
es el vector de estatus del data frame. Las entradas de este vetor tienen que ser 1 si hay fallo y 0 si no lo hay/hubo.vt1
es el vector de tiempo en caso de que todos los datos hayan iniciado en cero, o es el primer tiempo en caso de que se trate de observaciones en diferentes intervalos de tiempo.tm
tamaño de la muestra del data frame (entero).titulo
Titulo de la grafica (caracter).etiqx
Etiqueta de las x (caracter).etiqy
Etiqueta de las y (caracter).vt2
Vector del segundo tiempo en el cual se termina el tiempo de observacion del sujeto i. Si no se especifica se toma como un vector nulo y vt1 es el unico tiempo.Para su funcionamiento se requieren las siguientes paqueterÃas.
require(survival)
require(KMsurv)
require(dplyr)
require(ggplot2)
Se tiene una base de datos proveniente de recursos humanos donde se ve la informacion de los trabajadores como nivel de satisfaccin, horas promedio mensuales, etcetera. Por el momento nos enfocaremos en tiempo trabajado en la compañia (time_spend_company) y se fue (left) que es una variable de tiempo y la de estatus respectivamente. Sea empleados
el data frame.
empleados <- read.csv("HR_comma_sep.cvs")
graf_censuraD(empleados$left,empleados$time_spend_company,20,"Empleados","Observaciones","Tiempo (en años")
Lo que da por resultado la siguiente grafica
Observese que los puntos verdes son el punto de partida de los tiempos, es decir el tiempo inicial de todas las observaciones es cero.
Se tiene la base de datos kidney
incluida en la paqueteria survival
. Esta base de datos representa el tiempo de reaparición de una infección al ponerle un cateter a los pacientes con problemas de riñones que usan equipo de diálisis. El cateter puede ser removido por causas ajenas a la infección, en tal caso se censuran los datos. Tiene 3 variables de los cuales nos fijamos en dos: el tiempo antes de remover el cateter (time) y si fue removido por la infección o por otras causas (delta cuyos valores son 1 y 0 respectivamente).
data("kidney")
graf_censuraD(kidney$delta,kidney$time,15,"Kidney Sample","Observaciones","Tiempo")
Se tiene una sola variable de tiempo y se quiere una muestra de 15 individuos.
Se tiene la base de datos heart
incluida en la paqueteria survival
que representa la supervivencia de pacientes en la lista de espera para el programa de transplante de corazon de Stanford. Se trabaja con la sub-base de datos jasa1
.
data("heart")
str(jasa1)
Tiene 8 variables, para la gráfica nos fijamos en el tiempo de inicio (start), tiempo en que acaba (stop) y el estatus (event). Esta base de datos nos da la información también si salió del estudio debido a que recibió el transplante o si fue por otra causa al comparar event
y transplant
lo que serÃa para observar datos censurados por la derecha del tipo aleatorios, sin embargo la función no grafica este tipo de observaciones. Pero si tomamos como el status el evento si salió o no de la lista entonces se escribe la funcion con las entradas siguientes.
graf_censuraD(jasa1$event,jasa1$start,20,"Tiempo en lista de espera para transplante de corazon","Observaciones","Tiempo",jasa1$stop)
Y queda la gráfica
Se puede observar que los tiempos de inicio son diferentes.