Punto 2.

Telco_Cusomer_Churn = read.table("Telco_Cusomer_Churn.csv",
                                 header = TRUE, sep=",", dec = ".", row.names = 1,
                                 stringsAsFactors = TRUE)
summary(Telco_Cusomer_Churn)
##     gender     SeniorCitizen    Partner    Dependents     tenure     
##  Female:3488   Min.   :0.0000   No :3641   No :4933   Min.   : 0.00  
##  Male  :3555   1st Qu.:0.0000   Yes:3402   Yes:2110   1st Qu.: 9.00  
##                Median :0.0000                         Median :29.00  
##                Mean   :0.1621                         Mean   :32.37  
##                3rd Qu.:0.0000                         3rd Qu.:55.00  
##                Max.   :1.0000                         Max.   :72.00  
##                                                                      
##  PhoneService          MultipleLines     InternetService
##  No : 682     No              :3390   DSL        :2421  
##  Yes:6361     No phone service: 682   Fiber optic:3096  
##               Yes             :2971   No         :1526  
##                                                         
##                                                         
##                                                         
##                                                         
##              OnlineSecurity              OnlineBackup 
##  No                 :3498   No                 :3088  
##  No internet service:1526   No internet service:1526  
##  Yes                :2019   Yes                :2429  
##                                                       
##                                                       
##                                                       
##                                                       
##             DeviceProtection              TechSupport  
##  No                 :3095    No                 :3473  
##  No internet service:1526    No internet service:1526  
##  Yes                :2422    Yes                :2044  
##                                                        
##                                                        
##                                                        
##                                                        
##               StreamingTV              StreamingMovies           Contract   
##  No                 :2810   No                 :2785   Month-to-month:3875  
##  No internet service:1526   No internet service:1526   One year      :1473  
##  Yes                :2707   Yes                :2732   Two year      :1695  
##                                                                             
##                                                                             
##                                                                             
##                                                                             
##  PaperlessBilling                   PaymentMethod  MonthlyCharges  
##  No :2872         Bank transfer (automatic):1544   Min.   : 18.25  
##  Yes:4171         Credit card (automatic)  :1522   1st Qu.: 35.50  
##                   Electronic check         :2365   Median : 70.35  
##                   Mailed check             :1612   Mean   : 64.76  
##                                                    3rd Qu.: 89.85  
##                                                    Max.   :118.75  
##                                                                    
##   TotalCharges    Churn     
##  Min.   :  18.8   No :5174  
##  1st Qu.: 401.4   Yes:1869  
##  Median :1397.5             
##  Mean   :2283.3             
##  3rd Qu.:3794.7             
##  Max.   :8684.8             
##  NA's   :11

Interpretación de la estadistica descriptiva

En cuanto a los servicios adquiridos por los clientes se puede concluir lo siguiente:

Los datos de la suscripción y el pago son importantes, sobre esto, se puede concluir lo siguiente:

Punto 3.

library(corrplot)
## corrplot 0.95 loaded
attach(Telco_Cusomer_Churn)
nuevosDatos = data.frame(tenure, MonthlyCharges, TotalCharges)

r = cor(na.omit(nuevosDatos))
corrplot(r, method="number")

Correlaciónes

  1. Correlación entre tenure y MonthlyCharges = 0.25 (correlación positiva baja)
  1. Correlación entre tenure y TotalCharges = 0.83 (correlación positiva fuerte)
  1. Correlación entre MonthlyCharges y TotalCharges = 0.65 (correlación positiva moderada)

Punto 4.

library(ggplot2)
ggplot(Telco_Cusomer_Churn, aes(x = Churn, y = MonthlyCharges)) +
  geom_boxplot(fill = "lightblue") +
  labs(title = "Diagrama de cajas: Fuga vs Cargos Mensuales", 
       x = "Fuga", 
       y = "Cargos Mensuales") +
  theme(plot.title = element_text(hjust = 0.5))

Interpretación

En el diagrama de cajas presente se puede observar que aquellos que abandonan la empresa, tienden a pagar montos mas altos en comparación a quienen permanecen en esta. La mediana de cargos mensuales de los que abandonaron la empresa es mayor y su distribución se concentra entre valores mas elevados y con una diferencia no tan variada, mientras que los que permanecen en la empresa, presentan una mediana menor y una mayor variabilidad entre los montos mensuales, incluyendo montos considerablemente bajos. Esta diferencia sugiere que los montos mensuales altos probablemente estan muy relacionados con la fuga de la empresa.

Punto 5.

ggplot(Telco_Cusomer_Churn, aes(x = Churn, y = TotalCharges)) +
  geom_boxplot(fill = "purple") +
  labs(title = "Diagrama de cajas: Fuga vs Cargos Totales", 
       x = "Fuga", 
       y = "Cargos Totales") +
  theme(plot.title = element_text(hjust = 0.5))
## Warning: Removed 11 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

Interpretación

En el diagrama se puede observar que los clientes que permanecen en la empresa tienden a acumular cargas totales significativamente mayores que aquellos que la han abandonado. La mediana para los clientes que no han abandonado la empresa es mas alta, y la dispersión también es mayor dado a que han estado activos por un mayor tiempo. En contraste, los clientes que se han fugado presentan en su mayoría cargos totales bajos, con algunas excepciones donde se presentan datos atipicos muy altos. Este comportamiento sugiere que la mayor parte de los clientes que abandonan la empresa, lo hacen en las primeras etapas de relación con esta ya que no llegan a acumular grandes montos totales.

Punto 6.

library(ggplot2)
ggplot(Telco_Cusomer_Churn, aes(x = Churn, fill = gender)) +
  geom_bar(position = "stack") + 
  labs(title = "Distribución de género según rotación",
       x = "Rotación (Churn)",
       y = "Cantidad de clientes",
       fill = "Género") +
  theme_minimal()

Interpretación

La mayoría de los clientes no han rotado, lo cual indica una retención relativamente alta. En este grupo, la distribución entre hombres y mujeres es bastante equilibrada, aunque con una leve mayoría de hombres.

En el grupo de clientes que sí han rotado, la diferencia entre géneros también es pequeña, con una ligera predominancia de mujeres. Sin embargo, estas diferencias no son significativas visualmente, lo cual sugiere que el género no es un factor determinante en la decisión de abandonar el servicio.

Aunque se pueden observar pequeñas variaciones entre géneros dentro de cada categoría de rotación, la rotación de clientes parece ser un fenómeno que afecta de manera similar tanto a hombres como a mujeres en este conjunto de datos.

Punto 7.

library(ggplot2)
ggplot(Telco_Cusomer_Churn, aes(x = tenure , y = MonthlyCharges)) + 
  geom_jitter() +
  geom_smooth(method = "lm", color = "red") +
  labs(title = "Diagrama de dispersión Antigüedad vs Cargos Mensuales",
       x = "Meses como cliente", 
       y = "Cargo mensual (USD)")
## `geom_smooth()` using formula = 'y ~ x'

Cálculo de los coeficientes de correlación:

cor(Telco_Cusomer_Churn$tenure, Telco_Cusomer_Churn$MonthlyCharges)
## [1] 0.2478999

Como se puede observar, el coeficiente de correlación indica que estas variables no se encuentran completamente relacionadas. Se cuenta con un coeficiente bastante bajo.

Construcción del modelo de regresión lineal:

modelo = lm(MonthlyCharges ~ tenure, data = Telco_Cusomer_Churn)
summary(modelo)
## 
## Call:
## lm(formula = MonthlyCharges ~ tenure, data = Telco_Cusomer_Churn)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -57.498 -27.251   6.245  24.943  54.376 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 54.92978    0.57476   95.57   <2e-16 ***
## tenure       0.30372    0.01415   21.47   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 29.15 on 7041 degrees of freedom
## Multiple R-squared:  0.06145,    Adjusted R-squared:  0.06132 
## F-statistic:   461 on 1 and 7041 DF,  p-value: < 2.2e-16
# Cargos mensuales = 0.30372 * antigüedad + 54.92978
# R cuadrado = 0.06145

Interpretación

El intercepto nos dice que un cliente con 0 meses de antigüedad en la compañía tendría un cargo mensual de aproximadamente 55 dólares y a medida que avanza su tiempo en la empresa, este cargo aumenta en 0.30372 dólares al mes.

Lo anterior sería una explicación del modelo pero el R cuadrado expresado demuestra que este carece de fidelidad con el comportamiento de estas dos variables debido a su baja correlación.

Así mismo puede observarse esta característica en el diagrama de dispersión, donde se observan datos bastante “dispersos” y que no siguen un patrón facilmente descriptible.

Punto 8.

library(ggplot2)
library(gridExtra)
# ---- 1
p1 = ggplot(Telco_Cusomer_Churn, aes(x = Churn, y = MonthlyCharges)) +
  geom_boxplot(fill = "lightblue") +
  labs(title = "Diagrama de cajas: Fuga vs Cargos Mensuales", 
       x = "Fuga", 
       y = "Cargos Mensuales") +
  theme(plot.title = element_text(hjust = 0.5))

# ---- 2
p2 = ggplot(Telco_Cusomer_Churn, aes(x = Churn, y = TotalCharges)) +
  geom_boxplot(fill = "purple") +
  labs(title = "Diagrama de cajas: Fuga vs Cargos Totales", 
       x = "Fuga", 
       y = "Cargos Totales") +
  theme(plot.title = element_text(hjust = 0.5))

# ---- 3
p3 = ggplot(Telco_Cusomer_Churn, aes(x = Churn, fill = gender)) +
  geom_bar(position = "stack") + 
  labs(title = "Distribución de género según rotación",
       x = "Rotación (Churn)",
       y = "Cantidad de clientes",
       fill = "Género") +
  theme_minimal()

# ---- 4
p4 = ggplot(Telco_Cusomer_Churn, aes(x = tenure , y = MonthlyCharges)) + 
  geom_jitter() +
  geom_smooth(method = "lm", color = "red") +
  labs(title = "Diagrama de dispersión Antigüedad vs Cargos Mensuales",
       x = "Meses como cliente", 
       y = "Cargo mensual (USD)")

library(gridExtra)

grid.arrange(p1, p2, p3, p4, ncol = 2, widths = c(3, 3))
## Warning: Removed 11 rows containing non-finite outside the scale range
## (`stat_boxplot()`).
## `geom_smooth()` using formula = 'y ~ x'