Definimos la función que nos mostrará las gráficas que comparan la función de supervivencia estimada con algunos modelos paramétricos para elegir la mejor aproximación. Esta función recibe un objeto survfit, que estima la función de supervivencia por el método K-M.

supervivencia<-function(ajuste){
 grafica_Weibull<-plot(log(-log(ajuste$surv)),log(ajuste$time), main = "Weibull", xlab = "g1(surv)", ylab = "g2(tiempo)")
grafica_Exp<-plot(log(ajuste$surv), ajuste$time, main = "Exponencial", xlab = "g1(surv)", ylab = "g2(tiempo)")
grafica_Log_norm<-plot((1-ajuste$surv),log(ajuste$time), log="y", main = "Log-normal", xlab = "g1(surv)", ylab = "g2(time)")
return(list(Comparacion_Exp=grafica_Exp, Comparacion_Weibull=grafica_Weibull, Comparacion_Log_norm=grafica_Log_norm))
}

Probaremos la función con los datos de la base que estamos utilizando. Estimando la función de supervivencia con las variables churn y accountlength Cargamos la base y convertimos los datos de la variable churn a datos numéricos binarios.

datos<- read.csv("churn.csv", header = TRUE)
datos$churn <- ifelse(datos$churn == "Yes", 1, 0)

Cargamos las librerías para crear el objeto survfit.

require(survival)
## Loading required package: survival
require(survminer)
## Loading required package: survminer
## Loading required package: ggplot2
## Loading required package: ggpubr
## Loading required package: magrittr
ajuste_d<- surv_fit(Surv(datos$accountlength,datos$churn) ~ 1, data = datos)
supervivencia(ajuste_d)

## Warning in xy.coords(x, y, xlabel, ylabel, log): 1 y value <= 0 omitted
## from logarithmic plot

## $Comparacion_Exp
## NULL
## 
## $Comparacion_Weibull
## NULL
## 
## $Comparacion_Log_norm
## NULL

Notamos que ninguna de la gráficas se aparece por completo a una recta, sin embargo estas son aproximaciones. La weibull podemos ver que en una parte se asemeja a una recta aunque no para todos los datos.

Tomando en cuenta las tres distribuciones que comparamos, esta es la más probable. Por otra parte podemos graficar la densidad de nuestros datos para darnos una idea de qué distribución se ajusta. Un estimador gráfico de la densidad que podemos utilizar es el histograma.

hist(datos$accountlength)

Notamos que esta densidad es muy parecida a una Normal, por lo que tiene sentido que ninguno de los modelos paramétricos que comparamos anteriormente hayan ajustado adecuadamente.