Punto 1: Importar Datos y librerias

library(ggplot2)
library(gridExtra)
library(corrplot)
## corrplot 0.95 loaded

Punto 2: Realizar las estadĂ­sticas descriptivas

Telco_Cusomer_Churn = read.table("Telco_Cusomer_Churn.csv",
                      header=TRUE, sep=",", dec=".", row.names = 1,
                      stringsAsFactors=TRUE)

Vista general de los datos

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:

Los clientes permanecen en promedio 32 meses y pagan cargos mensuales cercanos a 65 dólares. La mayoría no son adultos mayores ni tienen pareja o dependientes. Predominan los contratos mes a mes, lo que incrementa el riesgo de rotación. El churn alcanza aproximadamente el 27%, un nivel relevante a considerar.”

Punto 3: Matriz de correlaciĂłn

attach(Telco_Cusomer_Churn)
nuevosDatos = data.frame(tenure, MonthlyCharges, TotalCharges)

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

InterpretaciĂłn:

Se observa que TotalCharges está fuertemente correlacionada con tenure y MonthlyCharges, lo cual tiene sentido ya que los cargos totales son producto del tiempo en la empresa y lo que paga cada mes. Y la relación entre tenure y MonthlyCharges es baja, lo que refleja que la antigüedad no está directamente ligada al costo mensual, sino al total como ya lo dijimos.

Punto 4: Cargos mensuales vs RotaciĂłn

ggplot(Telco_Cusomer_Churn, aes(x=Churn, y=MonthlyCharges, fill=Churn)) +
  geom_boxplot()

InterpretaciĂłn:

Los clientes que se dieron de baja (Yes) presentan en promedio mayores cargos mensuales, lo cual sugiere que tarifas más altas pueden estar asociadas a la fuga.

Punto 5: Cargos totales vs RotaciĂłn

ggplot(Telco_Cusomer_Churn, aes(x=Churn, y=TotalCharges, fill=Churn)) +
  geom_boxplot()
## Warning: Removed 11 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

InterpretaciĂłn:

Aunque los clientes con fuga tienen altos cargos mensuales, sus cargos totales suelen ser menores, porque abandonaron antes de acumular montos grandes.

Punto 6: Diagrama de barras apiladas (Rotación vs Género)

ggplot(Telco_Cusomer_Churn, aes(x=Churn, fill=gender)) +
  geom_bar()

InterpretaciĂłn:

La proporción de fuga entre hombres y mujeres es muy parecida. Esto indica que el género no es un factor determinante en la rotación.

Punto 7: RelaciĂłn lineal AntigĂĽedad vs Cargos Mensuales

ggplot(Telco_Cusomer_Churn, aes(x=tenure, y=MonthlyCharges)) +
  geom_jitter() +
  geom_smooth(method="lm", colour="red")
## `geom_smooth()` using formula = 'y ~ x'

Cálculo correlación

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

Ajuste un modelo lineal simple

modelo = lm(MonthlyCharges ~ tenure)
summary(modelo)
## 
## Call:
## lm(formula = MonthlyCharges ~ tenure)
## 
## 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

InterpretaciĂłn:

La correlación entre tenure y MonthlyCharges es baja, lo que indica que relación lineal es débil.

El modelo lineal muestra pendiente pequeña, lo que significa que la antigüedad casi no influye en los cargos mensuales.

El intercepto corresponde al costo base aproximado de un cliente al inicio.

Punto 8: Panel Gráfico

g4 = ggplot(Telco_Cusomer_Churn, aes(x=Churn, y=MonthlyCharges, fill=Churn)) +
  geom_boxplot()

g5 = ggplot(Telco_Cusomer_Churn, aes(x=Churn, y=TotalCharges, fill=Churn)) +
  geom_boxplot()

g6 = ggplot(Telco_Cusomer_Churn, aes(x=Churn, fill=gender)) +
  geom_bar()

g7= ggplot(Telco_Cusomer_Churn, aes(x=tenure, y=MonthlyCharges)) +
  geom_jitter() +
  geom_smooth(method="lm", colour="red")

grid.arrange(g4, g5, g6, g7)
## Warning: Removed 11 rows containing non-finite outside the scale range
## (`stat_boxplot()`).
## `geom_smooth()` using formula = 'y ~ x'