Para encontrar si existe una función paramétrica que se parezca a la distribución de supervivencia de nuestros datos vamos a graficarlos y evaluar la similitud gráficamente.

Usamos los datos que ya teníamos desde antes, los datos de “churn”:

datos <- read.csv("C:/Users/danil/OneDrive/Documents/churn.csv")
knitr::kable(summary(datos))
churn accountlength internationalplan voicemailplan numbervmailmessages totaldayminutes totaldaycalls totaldaycharge totaleveminutes totalevecalls totalevecharge totalnightminutes totalnightcalls totalnightcharge totalintlminutes totalintlcalls totalintlcharge numbercustomerservicecalls
No :4293 Min. : 1.0 no :4527 no :3677 Min. : 0.000 Min. : 0.0 Min. : 0 Min. : 0.00 Min. : 0.0 Min. : 0.0 Min. : 0.00 Min. : 0.0 Min. : 0.00 Min. : 0.000 Min. : 0.00 Min. : 0.000 Min. :0.000 Min. :0.00
Yes: 707 1st Qu.: 73.0 yes: 473 yes:1323 1st Qu.: 0.000 1st Qu.:143.7 1st Qu.: 87 1st Qu.:24.43 1st Qu.:166.4 1st Qu.: 87.0 1st Qu.:14.14 1st Qu.:166.9 1st Qu.: 87.00 1st Qu.: 7.510 1st Qu.: 8.50 1st Qu.: 3.000 1st Qu.:2.300 1st Qu.:1.00
NA Median :100.0 NA NA Median : 0.000 Median :180.1 Median :100 Median :30.62 Median :201.0 Median :100.0 Median :17.09 Median :200.4 Median :100.00 Median : 9.020 Median :10.30 Median : 4.000 Median :2.780 Median :1.00
NA Mean :100.3 NA NA Mean : 7.755 Mean :180.3 Mean :100 Mean :30.65 Mean :200.6 Mean :100.2 Mean :17.05 Mean :200.4 Mean : 99.92 Mean : 9.018 Mean :10.26 Mean : 4.435 Mean :2.771 Mean :1.57
NA 3rd Qu.:127.0 NA NA 3rd Qu.:17.000 3rd Qu.:216.2 3rd Qu.:113 3rd Qu.:36.75 3rd Qu.:234.1 3rd Qu.:114.0 3rd Qu.:19.90 3rd Qu.:234.7 3rd Qu.:113.00 3rd Qu.:10.560 3rd Qu.:12.00 3rd Qu.: 6.000 3rd Qu.:3.240 3rd Qu.:2.00
NA Max. :243.0 NA NA Max. :52.000 Max. :351.5 Max. :165 Max. :59.76 Max. :363.7 Max. :170.0 Max. :30.91 Max. :395.0 Max. :175.00 Max. :17.770 Max. :20.00 Max. :20.000 Max. :5.400 Max. :9.00
datos$churn <- ifelse(datos$churn == "Yes", 1, 0)

Y los paquetes que habiamos usando previamente.

require(ggplot2)
## Loading required package: ggplot2
require(survival)
## Loading required package: survival
require(survminer)
## Loading required package: survminer
## Loading required package: ggpubr
## Loading required package: magrittr
require(plotly)
## Loading required package: plotly
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout

Vamos a definir una función de supervivencia de los clientes como:

ajuste6 <- surv_fit(Surv(accountlength, churn) ~ 1, data = datos)

Y vamos a definir ciertos criterios que son los que vamos a graficar:

B <- ajuste6$surv
Tiempo <- ajuste6$time

Estos son los datos que vamos a necesitar para hacer nuestra evaluación.

Primero queremos ver si los datos se parecen a una exponencial. Si aplicamos el logaritmo a la función de supervivencia y lo graficamos con respecto al tiempo y nos sale una recta con pendiente negativa sabemos que la función de supervivencia se distribuye como una exponencial.

plot(Tiempo,B,xlab = "Tiempo",ylab = "Log de la supervivencia",main = "Modelo experimental exponencial")

Podemos ver que en realidad no parece ser una recta con pendiente negativa. No podemos concluir que nuestra distribución de la supervivencia se parece a una exponencial.

Tratemos ahora con una Weibull. Para probar si nuestros datos se distribuyen como una Weibull le sacamos el logaritmo al menos logaritmo de B y lo graficamos con respecto al logaritmo del tiempo. Si nos sale una recta con pendiente positiva podemos decir que la distribución se parece a una Weibull.

plot(log(Tiempo),log(-log(B)), xlab = "Logaritmo del Tiempo", ylab = "Logaritmo de -Log de la supervivencia", main = "Modelo experimental Weibull")

Este modelo si se parece más a los datos aunque no es muy convincente el primer cuarto de la gráfica. Verifiquemos la última prueba antes de llegar a conclusiones. La prueba Log Normal consiste en graficar la normal de 1 - la función de supervivencia con respecto al logaritmo del tiempo. Si nos da una recta con pendiente positiva entonces decimos que la distribución se parece a una Log Normal

plot(log(Tiempo),qnorm(1-B), xlab = "Logaritmo del Tiempo", ylab = "Normal de 1 - Supervivencia", main = "Modelo experimental Log Normal")

Después de analizar estos 3 casos podemos decir que ningúno es ideal pero que el modelo paramétrico de Weibll es el que más se acerca a la distribución de nuestros datos.