El objetivo de esta práctica es crear una función que nos haga gráficos diagnóstico para determinar si a una curva de supervivencia estimada con KM le subyace algún modelo paramétrico.
El objetivo de esta práctica es crear una función que nos haga gráficos diagnóstico para determinar si a una curva de supervivencia estimada con KM le subyace algún modelo paramétrico.
Esta función recibe un conjunto de datos que previamente hay que ajustarlos.
diagnosis_par<- function(km_model){
par(mfrow=c(2,3))
plot(log(km_model$surv), km_model$time , main="Diagnóstico exponencial" , xlab="S(t)", ylab="t", col="red", type = "overplotted")
plot(-log(km_model$surv), km_model$time , main="Diagnóstico Weibull" , xlab="S(t)", ylab="t", col="blue", type = "overplotted")
plot(1/(km_model$surv) -1 , km_model$time , main="Diagnóstico Log-logistic" , xlab="S(t)", ylab="t", col="green",type = "overplotted")
plot(qnorm(1-km_model$surv), km_model$time , main="Diagnóstico Log-normal" , xlab="S(t)", ylab="t", col="purple",type = "overplotted")
plot(log(1-log(km_model$surv)), km_model$time , main="Diagnóstico Gompertz" , xlab="S(t)", ylab="t", col="red",type = "overplotted")
}
Paso 1. Se cargan los datos que se desean utilizar.
data_frame_original <- read.csv("Nombre_del_archivo_donde_estan_los_datos.csv")
Paso 2. Damos formato de supervivencia a nuestros datos con la función:
Surv(data_frame_original$vector_de_tiempos , data_frame_original$vector_de_fallo)
Paso 3. Ajustamos nuestros datos con KM
Km_Nombre_del_modelo <- surv_fit(Agregamos_el_paso_2 ~ 1, data=data_frame_original)
Es decir
Km_Nombre_del_modelo <- surv_fit( Surv(vector_de_tiempos , vector_de_fallo) ~ 1, data=data_frame_original)
y finalmente “Km_Nombre_del_modelo” será lo que recibe la función
data(genfan)
names(genfan)
## [1] "hours" "status"
km_model1 <- surv_fit(Surv(hours, status)~1, data = genfan)
diagnosis_par(km_model1)
Al no observar una linea lo mas parecido a una linea completamente recta no podemos concluir que nuestros datos tienen un comportamiento parecido a una distribución paramétrica.
data(veteran)
names(veteran)
## [1] "trt" "celltype" "time" "status" "karno" "diagtime"
## [7] "age" "prior"
km_model2 <- surv_fit(Surv(time, status)~1, data = veteran)
diagnosis_par(km_model2)
Para estos datos observamos que tienen una tendencia parecida a una distribución Weibull y a su vez un parecido a una distribución Exponencial ya que en ambos diagnosticos observamos una linea lo mas parecido a una linea recta. Por lo que podemos concluir que los datos de la BD veteram tienen un comportamiento parecido a una distribución Exponencial.
data(psych)
names(psych)
## [1] "sex" "age" "time" "death"
km_model3 <- surv_fit(Surv(time, death)~1, data = psych)
diagnosis_par(km_model3)
Observamos que para esta BD psych, se encuentra una tendencia por una linea recta en la mayoría de los modelos paramétricos, por lo que no sería posible concluir si nuestros datos tienen la tendencia hacia un comportamiento determinado, por lo que necesitariamos otros métodos estadísticos para poder determinar como se comportan .