Introducción

El AC es un método que permite resumir la información presente en las filas y columnas, de manera que pueda proyectarse sobre un subespacio reducido y representarse simultáneamente los puntos fila y los puntos columna, pudiéndose obtener conclusiones acerca de las relaciones entre ellos.

Conocimientos previos

  • Tablas de contingencias
  • Test de hipótesis

Dataset

El dataset que vamos a trabajar contiene datos de clientes de una empresa de telecomunicaciones. En él veremos información básica sobre el tipo de contrato y las características del servicio que tiene cada cliente y por último una de las variables de mayor interes Churn, es decir, si el cliente se fue de la compañía o no.

dim(clientes)
## [1] 7043   21

Variable Churn


Análisis previo

Es necesario convertir las variables que son de tipo character a factor, este paso es necesario para que el analisis de correspondencia pueda analizar cada una de las categorías de las variables categóricas.


Antes:

## # A tibble: 3 × 2
## # Groups:   V1 [3]
##   V1            n
##   <chr>     <int>
## 1 character    17
## 2 integer       2
## 3 numeric       2


Despues:

## # A tibble: 3 × 2
## # Groups:   V1 [3]
##   V1          n
##   <chr>   <int>
## 1 factor     17
## 2 integer     2
## 3 numeric     2

Chequeo de valores faltantes

##                  missing %
## TotalCharges          11 0
## customerID             0 0
## gender                 0 0
## SeniorCitizen          0 0
## Partner                0 0
## Dependents             0 0
## tenure                 0 0
## PhoneService           0 0
## MultipleLines          0 0
## InternetService        0 0
## OnlineSecurity         0 0
## OnlineBackup           0 0
## DeviceProtection       0 0
## TechSupport            0 0
## StreamingTV            0 0
## StreamingMovies        0 0
## Contract               0 0
## PaperlessBilling       0 0
## PaymentMethod          0 0
## MonthlyCharges         0 0
## Churn                  0 0

Independencia entre variables

Una vez que se convirtieron las variables a tipo factor, tenemos que chequear si las variables son independientes o no, para ello creamos las tablas de contigencias de las variables a analizar. En este caso se seleccionaron 2 variables: contract y churn.

tabla <- with(clientes, table(Contract,Churn))
No Posible Yes
Month-to-month 2211 19 1645
One year 1301 6 166
Two year 1641 6 48
Sum 5153 31 1859

Tablas de contingencias (perfiles de filas)

A cotinuación veremos tablas cruzadas con las proporciones por fila y columnas:

Contract No Posible Yes
Month-to-month 0.57 0 0.42
One year 0.88 0 0.11
Two year 0.97 0 0.03
Perfil_Fila 0.73 0 0.26

Cada fila corresponde a un perfil y estos perfiles pueden compararse entre sí. Por ejemplo se ve que Two Year y One Year son parecidos y tienen valores más próximos que Month to Month.

Gráfico perfiles de filas

Tablas de contingencias (perfiles de columnas)

Contract No Posible Yes Perfil_Col
Month-to-month 0.43 0.61 0.88 0.55
One year 0.25 0.19 0.09 0.21
Two year 0.32 0.19 0.03 0.24

Test Chi-Cuadrado

Para asociación de variables cualitativas contamos con el test chi cuadrado de Pearson que nos permite evaluar la independencia entre variables.
El test chi cuadrado compara las proporciones observadas en la tabla contra valores esperados que calcula internamente.

Por medio de la función sjt.xtab() obtenemos la tabla final de contingencias con los valores observados en (negro), los valores en rojo representan los valores esperados que se deben calcular para realizar el test, los porcentajes azules son porcentajes de fila y los valores en verde son porcentajes de columna.


1° Método:

Contract Churn Total
No Posible Yes
Month-to-month 2211
2835
57.1 %
42.9 %
19
17
0.5 %
61.3 %
1645
1023
42.5 %
88.5 %
3875
3875
100 %
55 %
One year 1301
1078
88.3 %
25.2 %
6
6
0.4 %
19.4 %
166
389
11.3 %
8.9 %
1473
1473
100 %
20.9 %
Two year 1641
1240
96.8 %
31.8 %
6
7
0.4 %
19.4 %
48
447
2.8 %
2.6 %
1695
1695
100 %
24.1 %
Total 5153
5153
73.2 %
100 %
31
31
0.4 %
100 %
1859
1859
26.4 %
100 %
7043
7043
100 %
100 %
χ2=1176.484 · df=4 · Cramer’s V=0.289 · p=0.000

Cálculos del test

El test chi cuadrado calcula los valores esperados de la siguiente forma:

\[V.Esperados=\frac{(Total_{columna} * Total_{fila})}{Total_{tabla}}\]

Una vez que contamos con todos los valores requeridos (observados y esperados) el test chi cuadrado realiza el siguiente procedimiento:

\[{\chi}^2=\frac{1}{d}\sum_{k=1}^{n} \frac{(O_k - E_k)^2}{E_k}\]
Donde:
O = valores observados
E = valores esperados

Análisis de resultados


Si observamos al final de la tabla que vimos previamente, podemos ver el resultado de la prueba y el p-valor fisher.

Las hipótesis que se plantean son las siguientes:
La hipótesis nula en este caso es que las variables son independientes.
La hipotesis alternativa es que hay dependencia entre las proporciones de las variables.


Si el p-valor es > 0.05 entonces las variables son independientes.
Si el p-valor es <= 0.05 rechazamos la hipótesis nula entonces significa que existe dependencia entre las proporciones de ambas variables.


2° Método:


Otra forma de calcular el test chi cuadrado es utilizando sólo el test, como se muestra a continuación.

test <- chisq.test(x = clientes$Contract,y = clientes$Churn)
test
## 
##  Pearson's Chi-squared test
## 
## data:  clientes$Contract and clientes$Churn
## X-squared = 1176.5, df = 4, p-value < 0.00000000000000022


Conclusiones:

Podemos afirmar que existe dependencia entre las proporciones de las variables ya que el p-value es menor a 0.05.

Comparación gráfica

Grafico ballon

El gráfico de ballon nos muestra la tabla de contingencias y en cada celda de la tabla grafica un circulo, cuanto más grande es el círculo mayor proporción tiene el cruce.


Análisis de Correspondencias Simple (CA)


Análisis de correspondencias, su objetivo es resumir una gran cantidad de datos en un número reducido de dimensiones con la menor pérdida de información posible. No requiere del cumplimiento de ningún supuesto para poder aplicarla.
Si bien el objetivo de esta técnica es similar al de otros métodos factoriales, como componentes principales, en el caso del análisis de correspondencias, el método se aplica sobre variables categóricas u ordinales. Más específicamente, se busca una representación en coordenadas de las filas y columnas de una tabla de contingencia, de modo tal que los patrones de asociación presentes en la tabla se reflejen en estas nuevas coordenadas.
Con este análisis se busca representar las variables con sus categorías en un espacio de menor dimensión que preserve en la medida de lo posible las distancias relativas entre los perfiles.

ana_corresp <- CA(tabla, graph = FALSE)
ana_corresp
## **Results of the Correspondence Analysis (CA)**
## The row variable has  3  categories; the column variable has 3 categories
## The chi square of independence between the two variables is equal to 1176.484 (p-value =  0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001995139 ).
## *The results are available in the following objects:
## 
##    name              description                   
## 1  "$eig"            "eigenvalues"                 
## 2  "$col"            "results for the columns"     
## 3  "$col$coord"      "coord. for the columns"      
## 4  "$col$cos2"       "cos2 for the columns"        
## 5  "$col$contrib"    "contributions of the columns"
## 6  "$row"            "results for the rows"        
## 7  "$row$coord"      "coord. for the rows"         
## 8  "$row$cos2"       "cos2 for the rows"           
## 9  "$row$contrib"    "contributions of the rows"   
## 10 "$call"           "summary called parameters"   
## 11 "$call$marge.col" "weights of the columns"      
## 12 "$call$marge.row" "weights of the rows"


Autovalores

Por medio del calculo de los autovalores vemos que entre las 2 dimensiones creadas logramos explicar la totalidad de las variables involucradas.

get_eigenvalue(ana_corresp)
##           eigenvalue variance.percent cumulative.variance.percent
## Dim.1 0.167041254687     99.998916519                    99.99892
## Dim.2 0.000001809879      0.001083481                   100.00000


Screeplot

Chequeo de manera gráfica de los autovalores.

contribuciones de columnas

Contribución de columnas para dimensión 1

fviz_contrib(ana_corresp, choice ="col", axes = 1)

contribuciones de filas

fviz_contrib(ana_corresp, choice ="row", axes = 1)

Contribución en las dimensiones

Contribuciones de filas:

##                   Dim 1     Dim 2
## Month-to-month 43.86968  1.111147
## One year       14.78664 64.298979
## Two year       41.34368 34.589873

Contribuciones de columnas:

##               Dim 1      Dim 2
## No      26.62448646  0.2106690
## Posible  0.04512651 99.5147201
## Yes     73.33038703  0.2746108

Correlaciones de Filas

Las siguientes correlaciones se basan en las contribuciones de filas con cada una de las dimensiones creadas.

Correlaciones de columnas

Las siguientes correlaciones se basan en las contribuciones de columnas con cada una de las dimensiones creadas.

Biplot

fviz_ca_biplot(ana_corresp, map ="colgreen", arrow = c(TRUE, FALSE),
               repel = TRUE)


Análisis de Correspondencias Múltiple (MCA)

El análisis de correspondencia multiple permite involucrar una mayor cantidad de variables al análisis, lo cual permite una mejor aplicación práctica.

cols <- c(16:18,21) 

clientes.activo <- clientes[,cols]
summary(clientes.activo)
##            Contract    PaperlessBilling                   PaymentMethod 
##  Month-to-month:3875   No :2872         Bank transfer (automatic):1544  
##  One year      :1473   Yes:4171         Credit card (automatic)  :1522  
##  Two year      :1695                    Electronic check         :2365  
##                                         Mailed check             :1612  
##      Churn     
##  No     :5153  
##  Posible:  31  
##  Yes    :1859  
## 
clientes.mca <- MCA(clientes.activo,  graph = F)
print(clientes.mca)
## **Results of the Multiple Correspondence Analysis (MCA)**
## The analysis was performed on 7043 individuals, described by 4 variables
## *The results are available in the following objects:
## 
##    name              description                       
## 1  "$eig"            "eigenvalues"                     
## 2  "$var"            "results for the variables"       
## 3  "$var$coord"      "coord. of the categories"        
## 4  "$var$cos2"       "cos2 for the categories"         
## 5  "$var$contrib"    "contributions of the categories" 
## 6  "$var$v.test"     "v-test for the categories"       
## 7  "$ind"            "results for the individuals"     
## 8  "$ind$coord"      "coord. for the individuals"      
## 9  "$ind$cos2"       "cos2 for the individuals"        
## 10 "$ind$contrib"    "contributions of the individuals"
## 11 "$call"           "intermediate results"            
## 12 "$call$marge.col" "weights of columns"              
## 13 "$call$marge.li"  "weights of rows"

Autovalores

get_eigenvalue(clientes.mca)
##       eigenvalue variance.percent cumulative.variance.percent
## Dim.1  0.4598631        22.993156                    22.99316
## Dim.2  0.2839921        14.199607                    37.19276
## Dim.3  0.2546377        12.731885                    49.92465
## Dim.4  0.2512267        12.561336                    62.48598
## Dim.5  0.2450916        12.254582                    74.74057
## Dim.6  0.1900630         9.503148                    84.24371
## Dim.7  0.1746395         8.731973                    92.97569
## Dim.8  0.1404862         7.024312                   100.00000

Gráfico Autovalores

fviz_eig(clientes.mca)

Contribuciones de variables en dim 1

fviz_contrib(clientes.mca, choice ="var", axes = 1)

Contribuciones de variables en dim 2

fviz_contrib(clientes.mca, choice ="var", axes = 2)

Biplots

Biplot de individuos:

Biplot de variables:

Biplot Final:


Recomendaciones finales


Una vez realizado el analisis de correspondencias, por medio de las funciones fviz_mca_var() , fviz_mca_ind() puede accederse a los resultados a nivel observaciones y a nivel variables. Estos datos podemos agregarlos al dataset para continuar realizando otros análisis posteriores.


Gracias!


Recursos:
-Libro en Español de Análisis de Correspondencias (Abrir en otra pestaña)