CAPITULO 5

MCA - Multiple Correspondence Analysis in R: Essentials

5.1 Introducción

El análisis de correspondencia múltiple es una extensión del análisis de correspondencia simple para resumir y visualizar una tabla de datos que contiene más de dos variables categóricas. También puede verse como una generalización del análisis de componentes principales cuando las variables a analizar son categóricas en lugar de cuantitativas.

MCA se usa generalmente para analizar un conjunto de datos de una encuesta. El objetivo es identificar:

-Un grupo de individuos con perfil similar en sus respuestas a las preguntas

-Las asociaciones entre categorías de variables

En el capítulo actual, se demustra cómo calcular y visualizar el análisis de correspondencias múltiples utilizando FactoMineR (para el análisis) y factoextra (para la visualización de datos). Además, se muestra cómo revelar las variables más importantes que más contribuyen a explicar las variaciones en el conjunto de datos. Tambien se explica cómo predecir los resultados para individuos y variables suplementarios; y al final, se demuestra cómo filtrar los resultados de MCA para mantener solo las variables más contribuyentes.

5.2 Computación

5.2.1 Paquetes

los paquetes a usar son FactoMineR y factoextra

library("FactoMineR")
library("factoextra")
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(ggplot2)

** 5.2.2 Formato de datos**

se usa la función/ formato de poison que esta disponible en el paquete FactoMineR:

data(poison)
head(poison[, 1:7], 3)
##   Age Time   Sick Sex   Nausea Vomiting Abdominals
## 1   9   22 Sick_y   F Nausea_y  Vomit_n     Abdo_y
## 2   5    0 Sick_n   F Nausea_n  Vomit_n     Abdo_n
## 3   6   16 Sick_y   F Nausea_n  Vomit_y     Abdo_y

Datos sobre los sintomas de unos niños que sufrieron de envenenamiento por comida en una primaria.

En terminología MCA, nuestros datos contienen:

-Individuos activos (filas 1:55): Individuos que se utilizan en el análisis de correspondencia múltiple.

-Variables activas (columnas 5:15): Variables que se utilizan en el MCA.

-Variables suplementarias: No participan del MCA. Las coordenadas de estas variables serán predichas.

-Variables cuantitativas suplementarias (quanti.sup): Columnas 1 y 2 correspondientes a las columnas edad y tiempo, respectivamente.

-Variables cualitativas complementarias (quali.sup: Columnas 3 y 4 correspondientes a las columnas Enfermo y Sexo, respectivamente. Estas variables factoriales se utilizarán para colorear los individuos por grupos.

solo los individuos y variables activos son los usados para el analisis de multiple correspondencia:

poison.active <- poison[1:55, 5:15]
head(poison.active[, 1:6], 3)
##     Nausea Vomiting Abdominals   Fever   Diarrhae   Potato
## 1 Nausea_y  Vomit_n     Abdo_y Fever_y Diarrhea_y Potato_y
## 2 Nausea_n  Vomit_n     Abdo_n Fever_n Diarrhea_n Potato_y
## 3 Nausea_n  Vomit_y     Abdo_y Fever_y Diarrhea_y Potato_y

5.2.3 Resumen de datos

Con la función summary() se puede computar la frecuencia de las variables categoricas.En este caso como la base datos tiene tantos datos, solo se estan usando las primeras 4 categorias.

summary(poison.active)[, 1:4]
##       Nausea      Vomiting   Abdominals     Fever   
##  Nausea_n:43   Vomit_n:33   Abdo_n:18   Fever_n:20  
##  Nausea_y:12   Vomit_y:22   Abdo_y:37   Fever_y:35

La funcion nos muestra el tamaño de las categorias

Estos datos se pueden graficar

for (i in 1:4) {
  plot(poison.active[,i], main=colnames(poison.active)[i],
       ylab = "Count", col="steelblue", las = 2)
  }

Las graficas son de ayuda para visualizar categorias de frecuencias bajas que deben ser removidas

5.2.4 Codigo R

La funcion MCA() se usa de esta forma:

#MCA(X, ncp = 5, graph = TRUE)

Donde:

X: un marco de datos con n filas (individuos) y p columnas (variables categóricas)

ncp: número de dimensiones mantenidas en los resultados finales.

gráfico: un valor lógico. Si es VERDADERO, se muestra un gráfico.

res.mca <- MCA(poison.active, graph = FALSE)

La salida de la función MCA() es una lista:

print(res.mca)
## **Results of the Multiple Correspondence Analysis (MCA)**
## The analysis was performed on 55 individuals, described by 11 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"

El objeto que se crea usando la función contiene mucha información que se encuentra en muchas listas y matrices diferentes.

5.3 visualización e interpretación

Se usa el paquete factoextra para ayudar en la interpretación y visualización. Independientemente de la función que decida utilizar [FactoMiner::MCA(), ade4::dudi.mca()], puede extraer y visualizar fácilmente los resultados del análisis de correspondencias múltiples utilizando las funciones R proporcionadas en el paquete factoextra R.

Estas funciones factoextra incluyen:

-get_eigenvalue(res.mca): extrae los valores propios/varianzas retenidos por cada dimensión (eje)

-fviz_eig(res.mca): Visualiza los valores propios/varianzas

-get_mca_ind(res.mca), get_mca_var(res.mca): extrae los resultados para individuos y variables, respectivamente.

-fviz_mca_ind(res.mca), fviz_mca_var(res.mca): Visualiza los resultados para individuos y variables, respectivamente.

-fviz_mca_biplot(res.mca): Hace un biplot de filas y columnas.

5.3.1 Eigenvalues / Variances

La proporción de varianzas retenidas por las diferentes dimensiones (ejes) se puede extraer utilizando la función get_eigenvalue() [paquete factoextra] de la siguiente manera:

library("factoextra")
eig.val <- get_eigenvalue(res.mca)
 # head(eig.val)

Para vizualizar los porcentages de inercia explicados por cada dimensión de MCA:

fviz_screeplot(res.mca, addlabels = TRUE, ylim = c(0, 45))

5.3.2 BIplot

La función fviz_mca_biplot() sirve para graficar una grafica doble para cada variable:

fviz_mca_biplot(res.mca, 
               repel = TRUE, # Avoid text overlapping (slow if many point)
               ggtheme = theme_minimal())

El gráfico anterior muestra un patrón global dentro de los datos. Las filas (individuos) se representan con puntos azules y las columnas (categorías de variables) con triángulos rojos.

La distancia entre cualquier punto de fila o columna da una medida de su diferencia. Los puntos de fila con un perfil similar se cierran en el mapa de factores. Lo mismo es válido para los puntos de columna.

5.3.3 grafico de variables

5.3.3.1 Resultados

La función get_mca_var() se usa para extraer los resultados de las categorías de variables. Esta función devuelve una lista que contiene las coordenadas, el cos2 y la contribución de las categorías de variables:

var <- get_mca_var(res.mca)
var
## Multiple Correspondence Analysis Results for variables
##  ===================================================
##   Name       Description                  
## 1 "$coord"   "Coordinates for categories" 
## 2 "$cos2"    "Cos2 for categories"        
## 3 "$contrib" "contributions of categories"

los componentes usados son: -var\(coord: coordenadas de variables para crear un diagrama de dispersión -var\)cos2: representa la calidad de la representación de las variables en el mapa de factores. -var$contrib: contiene las contribuciones (en porcentaje) de las variables a la definición de las dimensiones.

Se puede acceder a las distintas componentes de la siguiente forma:

# Coordinates
head(var$coord)
##               Dim 1       Dim 2        Dim 3       Dim 4       Dim 5
## Nausea_n  0.2673909  0.12139029 -0.265583253  0.03376130  0.07370500
## Nausea_y -0.9581506 -0.43498187  0.951673323 -0.12097801 -0.26410958
## Vomit_n   0.4790279 -0.40919465  0.084492799  0.27361142  0.05245250
## Vomit_y  -0.7185419  0.61379197 -0.126739198 -0.41041713 -0.07867876
## Abdo_n    1.3180221 -0.03574501 -0.005094243 -0.15360951 -0.06986987
## Abdo_y   -0.6411999  0.01738946  0.002478280  0.07472895  0.03399075
# Cos2: quality on the factore map
head(var$cos2)
##              Dim 1        Dim 2        Dim 3       Dim 4       Dim 5
## Nausea_n 0.2562007 0.0528025759 2.527485e-01 0.004084375 0.019466197
## Nausea_y 0.2562007 0.0528025759 2.527485e-01 0.004084375 0.019466197
## Vomit_n  0.3442016 0.2511603912 1.070855e-02 0.112294813 0.004126898
## Vomit_y  0.3442016 0.2511603912 1.070855e-02 0.112294813 0.004126898
## Abdo_n   0.8451157 0.0006215864 1.262496e-05 0.011479077 0.002374929
## Abdo_y   0.8451157 0.0006215864 1.262496e-05 0.011479077 0.002374929
# Contributions to the principal components
head(var$contrib)
##              Dim 1       Dim 2        Dim 3      Dim 4      Dim 5
## Nausea_n  1.515869  0.81100008 4.670018e+00 0.08449397 0.48977906
## Nausea_y  5.431862  2.90608363 1.673423e+01 0.30277007 1.75504164
## Vomit_n   3.733667  7.07226253 3.627455e-01 4.25893721 0.19036376
## Vomit_y   5.600500 10.60839380 5.441183e-01 6.38840581 0.28554563
## Abdo_n   15.417637  0.02943661 7.192511e-04 0.73219636 0.18424268
## Abdo_y    7.500472  0.01432051 3.499060e-04 0.35620363 0.08963157
5.3.3.2 Correlation between variables and principal dimensions

Para visualizar la correlacion entre las distintas variables:

fviz_mca_var(res.mca, choice = "mca.cor", 
            repel = TRUE, # Avoid text overlapping (slow)
            ggtheme = theme_minimal())

El gráfico ayuda a identificar las variables que están más correlacionadas con cada dimensión. Las correlaciones al cuadrado entre las variables y las dimensiones se utilizan como coordenadas.

Se puede observar que, las variables Diarrea, Abdominales y Fiebre son las que más se correlacionan con la dimensión 1. De igual forma, las variables Calabacín y Patata son las que más se correlacionan con la dimensión 2.

5.3.3.3 Coordinates of variable categories

Para desplegar cada cordinación de las categorias:

head(round(var$coord, 2), 4)
##          Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## Nausea_n  0.27  0.12 -0.27  0.03  0.07
## Nausea_y -0.96 -0.43  0.95 -0.12 -0.26
## Vomit_n   0.48 -0.41  0.08  0.27  0.05
## Vomit_y  -0.72  0.61 -0.13 -0.41 -0.08

se usa fviz_mca_var() para visualizar las categorias de las variables.

fviz_mca_var(res.mca, 
             repel = TRUE, # Avoid text overlapping (slow)
             ggtheme = theme_minimal())

El gráfico anterior muestra las relaciones entre las categorías de variables. Se puede interpretar como:

-Las categorías de variables con un perfil similar se agrupan.

-Las categorías de variables correlacionadas negativamente se colocan en lados opuestos del origen de la gráfica (cuadrantes opuestos).

La distancia entre los puntos de categoría y el origen mide la calidad de la categoría variable en el mapa de factores. Los puntos de categoría que están lejos del origen están bien representados en el mapa de factores.

5.3.3.4 Quality of representation of variable categories

Las dos dimensiones 1 y 2 son suficientes para retener el 46% de la variación contenida en los datos. No todos los puntos se muestran igual de bien en las dos dimensiones.

La calidad de la representación se denomina coseno al cuadrado (cos2), que mide el grado de asociación entre las categorías de variables y un eje particular. El cos2 de las categorías de variables se puede extraer asi:

head(var$cos2, 4)
##              Dim 1      Dim 2      Dim 3       Dim 4       Dim 5
## Nausea_n 0.2562007 0.05280258 0.25274850 0.004084375 0.019466197
## Nausea_y 0.2562007 0.05280258 0.25274850 0.004084375 0.019466197
## Vomit_n  0.3442016 0.25116039 0.01070855 0.112294813 0.004126898
## Vomit_y  0.3442016 0.25116039 0.01070855 0.112294813 0.004126898

si la categoria de la variable esta bien dimensionada la suma de cos2 es cercana a 1.Para algunos de los elementos de la fila, se requieren más de 2 dimensiones para representar perfectamente los datos.

Es posible colorear las categorías de variables por sus valores cos2 usando el argumento col.var = “cos2

# Color by cos2 values: quality on the factor map
fviz_mca_var(res.mca, col.var = "cos2",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), 
             repel = TRUE, # Avoid text overlapping
             ggtheme = theme_minimal())

otros cambios que se le pueden hacer son el cambiar la transparencia:

# Change the transparency by cos2 values
#fviz_mca_var(res.mca, alpha.var="cos2",
             #repel = TRUE,
             #ggtheme = theme_minimal())

Puede visualizar el cos2 de las categorías de fila en todas las dimensiones usando el paquete corrplot:

library("corrplot")
## corrplot 0.92 loaded
#corrplot(var$cos2, is.corr=FALSE)

También es posible crear un diagrama de barras de la variable cos2 usando la función fviz_cos2():

# Cos2 of variable categories on Dim.1 and Dim.2
fviz_cos2(res.mca, choice = "var", axes = 1:2)

Tener en cuenta que las categorías de variables Fish_n, Fish_y, Icecream_n y Icecream_y no están muy bien representadas por las dos primeras dimensiones. Esto implica que la posición de los puntos correspondientes en el diagrama de dispersión debe interpretarse con cierta precaución. Probablemente sea necesaria una solución de mayor dimensión.

5.3.3.5 Contribution of variable categories to the dimensions

Es definido de la siguiente forma:

head(round(var$contrib,2), 4)
##          Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## Nausea_n  1.52  0.81  4.67  0.08  0.49
## Nausea_y  5.43  2.91 16.73  0.30  1.76
## Vomit_n   3.73  7.07  0.36  4.26  0.19
## Vomit_y   5.60 10.61  0.54  6.39  0.29

La función fviz_contrib() se puede utilizar para dibujar un diagrama de barras de la contribución de las categorías de variables. El siguiente código R muestra las 15 principales categorías de variables que contribuyen a las dimensiones:

# Contributions of rows to dimension 1
fviz_contrib(res.mca, choice = "var", axes = 1, top = 15)

# Contributions of rows to dimension 2
fviz_contrib(res.mca, choice = "var", axes = 2, top = 15)

El total de contibuciones de la dimension 2 y 1 se obtienen asi:

# Total contribution to dimension 1 and 2
fviz_contrib(res.mca, choice = "var", axes = 1:2, top = 15)

La línea discontinua roja en el gráfico anterior indica el valor promedio esperado, si las contribuciones fueran uniformes. El cálculo del valor esperado de la cotización, bajo hipótesis nula, se ha detallado en el capítulo de análisis de componentes principales.

Puede observarse que:

las categorías Abdo_n, Diarrea_n, Fiebre_n y Mayo_n son las más importantes en la definición de la primera dimensión. Las categorías Courg_n, Potato_n, Vomit_y y Icecream_n son las que más aportan a la dimensión 2

Las categorías de variables más importantes (o contribuyentes) se pueden resaltar en el diagrama de dispersión de la siguiente manera:

fviz_mca_var(res.mca, col.var = "contrib",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), 
             repel = TRUE, # avoid text overlapping (slow)
             ggtheme = theme_minimal()
             )

Se evidencia que las categorías Abdo_n, Diarrea_n, Fiebre_n y Mayo_n tienen un aporte importante en el polo positivo de la primera dimensión, mientras que las categorías Fiebre_y y Diarrea_y tienen un aporte mayor en el polo negativo de la primera dimensión.

5.3.4 graficos de individuales

5.3.4.1 Resultados

La función get_mca_ind() se usa para extraer los resultados para individuos.

ind <- get_mca_ind(res.mca)
ind
## Multiple Correspondence Analysis Results for individuals
##  ===================================================
##   Name       Description                       
## 1 "$coord"   "Coordinates for the individuals" 
## 2 "$cos2"    "Cos2 for the individuals"        
## 3 "$contrib" "contributions of the individuals"

El resultado para individuos da la misma información que se describe para las categorías de variables.

para acceder a distintos componentes:

# Coordinates of column points
head(ind$coord)
##        Dim 1       Dim 2       Dim 3       Dim 4       Dim 5
## 1 -0.4525811 -0.26415072  0.17151614  0.01369348 -0.11696806
## 2  0.8361700 -0.03193457 -0.07208249 -0.08550351  0.51978710
## 3 -0.4481892  0.13538726 -0.22484048 -0.14170168 -0.05004753
## 4  0.8803694 -0.08536230 -0.02052044 -0.07275873 -0.22935022
## 5 -0.4481892  0.13538726 -0.22484048 -0.14170168 -0.05004753
## 6 -0.3594324 -0.43604390 -1.20932223  1.72464616  0.04348157
# Quality of representation
head(ind$cos2)
##        Dim 1        Dim 2        Dim 3        Dim 4        Dim 5
## 1 0.34652591 0.1180447167 0.0497683175 0.0003172275 0.0231460846
## 2 0.55589562 0.0008108236 0.0041310808 0.0058126211 0.2148103098
## 3 0.54813888 0.0500176790 0.1379484860 0.0547920948 0.0068349171
## 4 0.74773962 0.0070299584 0.0004062504 0.0051072923 0.0507479873
## 5 0.54813888 0.0500176790 0.1379484860 0.0547920948 0.0068349171
## 6 0.02485357 0.0365775483 0.2813443706 0.5722083217 0.0003637178
# Contributions
head(ind$contrib)
##      Dim 1      Dim 2        Dim 3        Dim 4      Dim 5
## 1 1.110927 0.98238297  0.498254685  0.003555817 0.31554778
## 2 3.792117 0.01435818  0.088003703  0.138637089 6.23134138
## 3 1.089470 0.25806722  0.856229950  0.380768961 0.05776914
## 4 4.203611 0.10259105  0.007132055  0.100387990 1.21319013
## 5 1.089470 0.25806722  0.856229950  0.380768961 0.05776914
## 6 0.700692 2.67693398 24.769968729 56.404214518 0.04360547

5.3.4.2 Plots: quality and contribution

la siguiente función se usa para vizualisar solo individuos:

fviz_mca_ind(res.mca, col.ind = "cos2", 
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
             repel = TRUE, # Avoid text overlapping (slow if many points)
             ggtheme = theme_minimal())

si quiere representar la info en barras:

# Cos2 of individuals
#fviz_cos2(res.mca, choice = "ind", axes = 1:2, top = 20)
# Contribution of individuals to the dimensions
#fviz_contrib(res.mca, choice = "ind", axes = 1:2, top = 20)

5.3.5 Color individuals by groups

es posible colorear a los individuos usando cualquiera de las variables cualitativas en la tabla de datos inicial (poison)

El código colorea a los individuos por grupos utilizando los niveles de la variable Vómitos. El argumento habillage se utiliza para especificar la variable factor para colorear los individuos por grupos. También se puede agregar una elipse de concentración alrededor de cada grupo usando el argumento addEllipses = TRUE.

fviz_mca_ind(res.mca, 
             label = "none", # hide individual labels
             habillage = "Vomiting", # color by groups 
             palette = c("#00AFBB", "#E7B800"),
             addEllipses = TRUE, ellipse.type = "confidence",
             ggtheme = theme_minimal()) 

Para especificar el valor del argumento habillage, también es posible utilizar el índice de la columna de la siguiente manera (habillage = 2).

Si quieres colorear individuos usando multiples variables categoricas al tiempo, use la siguiente función:

fviz_ellipses(res.mca, c("Vomiting", "Fever"),
              geom = "point")
## Warning: `gather_()` was deprecated in tidyr 1.2.0.
## ℹ Please use `gather()` instead.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <]8;;https://github.com/kassambara/factoextra/issueshttps://github.com/kassambara/factoextra/issues]8;;>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

tambien puedes inicar los indices de las variables:

fviz_ellipses(res.mca, 1:4, geom = "point")

5.3.6 Descripcióon de dimensiones

La función dimdesc() se puede utilizar para identificar las variables más correlacionadas con una dimensión dada.

res.desc <- dimdesc(res.mca, axes = c(1,2))
# Description of dimension 1
res.desc[[1]]
## 
## Link between the variable and the categorical variable (1-way anova)
## =============================================
##                   R2      p.value
## Abdominals 0.8451157 4.055640e-23
## Diarrhae   0.7994680 3.910776e-20
## Fever      0.7846788 2.600566e-19
## Mayo       0.3829749 4.756234e-07
## Vomiting   0.3442016 2.510738e-06
## Nausea     0.2562007 8.062777e-05
## Cheese     0.1944181 7.534834e-04
## 
## Link between variable and the categories of the categorical variables
## ================================================================
##                       Estimate      p.value
## Abdominals=Abdo_n    0.5671866 4.055640e-23
## Diarrhae=Diarrhea_n  0.5380920 3.910776e-20
## Fever=Fever_n        0.5330918 2.600566e-19
## Mayo=Mayo_n          0.4644981 4.756234e-07
## Vomiting=Vomit_n     0.3466915 2.510738e-06
## Nausea=Nausea_n      0.3547892 8.062777e-05
## Cheese=Cheese_n      0.3830043 7.534834e-04
## Cheese=Cheese_y     -0.3830043 7.534834e-04
## Nausea=Nausea_y     -0.3547892 8.062777e-05
## Vomiting=Vomit_y    -0.3466915 2.510738e-06
## Mayo=Mayo_y         -0.4644981 4.756234e-07
## Fever=Fever_y       -0.5330918 2.600566e-19
## Diarrhae=Diarrhea_y -0.5380920 3.910776e-20
## Abdominals=Abdo_y   -0.5671866 4.055640e-23
# Description of dimension 2
res.desc[[2]]
## 
## Link between the variable and the categorical variable (1-way anova)
## =============================================
##                  R2      p.value
## Courgette 0.4464145 2.500166e-08
## Potato    0.3957543 2.690662e-07
## Vomiting  0.2511604 9.728027e-05
## Icecream  0.1409011 4.743927e-03
## 
## Link between variable and the categories of the categorical variables
## ================================================================
##                       Estimate      p.value
## Courgette=Courg_n    0.4176013 2.500166e-08
## Potato=Potato_y      0.4977523 2.690662e-07
## Vomiting=Vomit_y     0.1838104 9.728027e-05
## Icecream=Icecream_n  0.2597197 4.743927e-03
## Icecream=Icecream_y -0.2597197 4.743927e-03
## Vomiting=Vomit_n    -0.1838104 9.728027e-05
## Potato=Potato_n     -0.4977523 2.690662e-07
## Courgette=Courg_y   -0.4176013 2.500166e-08

5.4 Elementos suplementarios

** 5.4.1 Tipos y Definiciones**

el conjunto de datos poison contiene:

-variables continuas suplementarias (quanti.sup = 1:2, columnas 1 y 2 correspondientes a las columnas edad y tiempo, respectivamente) -variables cualitativas complementarias (quali.sup = 3:4, correspondientes a las columnas Enfermo y Sexo, respectivamente). Las variables de este factor se utilizan para colorear individuos por grupos.

Los datos no contienen personas adicionales. Sin embargo, para demostración, usaremos los individuos 53:55 como individuos suplementarios.

Las variables suplementarias y los individuos no se utilizan para la determinación de las dimensiones principales. Sus coordenadas se predicen utilizando solo la información proporcionada por el análisis de correspondencia múltiple realizado en variables/individuos activos.

5.4.2 Specification in MCA

Para especificar variables suplementarias e individuos se usa:

# MCA(X,  ind.sup = NULL, quanti.sup = NULL, quali.sup=NULL,
   # graph = TRUE, axes = c(1,2))

Donde:

-X: un marco de datos. Las filas son individuos y las columnas son variables.

-ind.sup: un vector numérico que especifica los índices de los individuos suplementarios.

-quanti.sup, quali.sup: un vector numérico que especifica, respectivamente, los índices de las variables cuantitativas y cualitativas.

-gráfico: un valor lógico. Si es VERDADERO, se muestra un gráfico.

-ejes: un vector de longitud 2 que especifica los componentes que se trazarán.

Ejemplo:

res.mca <- MCA(poison, ind.sup = 53:55, 
               quanti.sup = 1:2, quali.sup = 3:4,  graph=FALSE)

5.4.3 Resultados

los resultados predichos se pueden extraer asi:

# Supplementary qualitative variable categories
res.mca$quali.sup
## $coord
##              Dim 1         Dim 2       Dim 3        Dim 4       Dim 5
## Sick_n  1.41809140  0.0020394048  0.13199139 -0.016036841 -0.08354663
## Sick_y -0.63026284 -0.0009064021 -0.05866284  0.007127485  0.03713184
## F      -0.03108147  0.1123143957  0.05033124 -0.055927173 -0.06832928
## M       0.03356798 -0.1212995474 -0.05435774  0.060401347  0.07379562
## 
## $cos2
##              Dim 1        Dim 2       Dim 3        Dim 4       Dim 5
## Sick_n 0.893770319 1.848521e-06 0.007742990 0.0001143023 0.003102240
## Sick_y 0.893770319 1.848521e-06 0.007742990 0.0001143023 0.003102240
## F      0.001043342 1.362369e-02 0.002735892 0.0033780765 0.005042401
## M      0.001043342 1.362369e-02 0.002735892 0.0033780765 0.005042401
## 
## $v.test
##             Dim 1        Dim 2      Dim 3       Dim 4      Dim 5
## Sick_n  6.7514655  0.009709509  0.6284047 -0.07635063 -0.3977615
## Sick_y -6.7514655 -0.009709509 -0.6284047  0.07635063  0.3977615
## F      -0.2306739  0.833551410  0.3735378 -0.41506855 -0.5071119
## M       0.2306739 -0.833551410 -0.3735378  0.41506855  0.5071119
## 
## $eta2
##            Dim 1        Dim 2       Dim 3        Dim 4       Dim 5
## Sick 0.893770319 1.848521e-06 0.007742990 0.0001143023 0.003102240
## Sex  0.001043342 1.362369e-02 0.002735892 0.0033780765 0.005042401
# Supplementary quantitative variables
res.mca$quanti
## $coord
##             Dim 1       Dim 2       Dim 3       Dim 4       Dim 5
## Age   0.003934896 -0.00741340 -0.26494536  0.20015501  0.02928483
## Time -0.838158507 -0.08330586 -0.08718851 -0.08421599 -0.02316931
# Supplementary individuals
res.mca$ind.sup
## $coord
##         Dim 1     Dim 2      Dim 3      Dim 4      Dim 5
## 53  1.0835684 0.5172478  0.5794063  0.5390903  0.4553650
## 54 -0.1249473 0.1417271 -0.1765234 -0.1526587 -0.2779565
## 55 -0.4315948 0.1270468 -0.2071580 -0.1186804 -0.1891760
## 
## $cos2
##         Dim 1      Dim 2      Dim 3      Dim 4      Dim 5
## 53 0.36304957 0.08272764 0.10380536 0.08986204 0.06411692
## 54 0.03157652 0.04062716 0.06302535 0.04713607 0.15626590
## 55 0.50232519 0.04352713 0.11572730 0.03798314 0.09650827

5.4.4 Plots

Para hacer un biplot de individuos y categorías variables, escriba esto:

# Biplot of individuals and variable categories
fviz_mca_biplot(res.mca, repel = TRUE,
                ggtheme = theme_minimal())

Donde: Los individuos activos están en azul. Los individuos suplementarios están en azul oscuro. Las categorías de variables activas están en rojo. Las categorías de variables suplementarias están en verde oscuro.

Si desea resaltar la correlación entre variables (activas y complementarias) y dimensiones:

fviz_mca_var(res.mca, choice = "mca.cor",
             repel = TRUE)

Para graficar variables categoricas cualitativas:

fviz_mca_var(res.mca, repel = TRUE,
             ggtheme= theme_minimal())

Mientras que para variables cuantitativas suplementarias:

fviz_mca_var(res.mca, choice = "quanti.sup",
             ggtheme = theme_minimal())

Para visualizar suplementarios individuales:

fviz_mca_ind(res.mca, 
             label = "ind.sup", #Show the label of ind.sup only
             ggtheme = theme_minimal())

### 5.5 Filtrar resultados Cuando se tiene muchas variables/individuos categoricas. es posible visualizar solo algunas con los siguientes argumentos: select.ind y select.var. Estas funciones seleccionan las variables que se quieren dibujar. Los valores aceptados son NULL o una List que contiene los argumentos name, cos2 o contrib.

-name: es un vector de caracteres que contiene nombres de categoría de variables/individuos para trazar

-cos2: si cos2 está en [0, 1], p. ej.: 0,6, se grafican las categorías de variables/individuos con un cos2 > 0,6 si cos2 > 1, p. ej.: 5, entonces se trazan los 5 principales individuos activos/categorías de variables y las 5 columnas/filas complementarias principales con el cos2 más alto

-contrib: si contrib > 1, p. ej.: 5, se trazan las 5 principales categorías de individuos/variables con las contribuciones más altas

# Visualize variable categories with cos2 >= 0.4
fviz_mca_var(res.mca, select.var = list(cos2 = 0.4))

# Top 10 active variables with the highest cos2
fviz_mca_var(res.mca, select.var= list(cos2 = 10))

# Select by names
name <- list(name = c("Fever_n", "Abdo_y", "Diarrhea_n",
                      "Fever_Y", "Vomit_y", "Vomit_n"))
fviz_mca_var(res.mca, select.var = name)

# top 5 contributing individuals and variable categories
fviz_mca_biplot(res.mca, select.ind = list(contrib = 5), 
               select.var = list(contrib = 5),
               ggtheme = theme_minimal())

Cuando la selección se realiza de acuerdo con los valores de contribución, los individuos/categorías de variables suplementarias no se muestran porque no contribuyen a la construcción de los ejes.

5.6 Exportando Resultados

5.6.1 Export plots to PDF/PNG files

Solo se nesecitan 2 pasos:

  1. Crear la grafica de interes.
# Scree plot
#scree.plot <- fviz_eig(res.mca)
# Biplot of row and column variables
#biplot.mca <- fviz_mca_biplot(res.mca)
  1. Exportar la grafica como un unico pdf:
#library(ggpubr)
#ggexport(plotlist = list(scree.plot, biplot.mca), 
       #  filename = "MCA.pdf")

5.6.2 Export results to txt/csv files

Se usa la funcion writr.infile()

# Export into a TXT file
#write.infile(res.mca, "mca.txt", sep = "\t")
# Export into a CSV file
#write.infile(res.mca, "mca.csv", sep = ";")

5.7 RESUMEN

En conclusión, describimos cómo realizar e interpretar el análisis de correspondencia múltiple (CA). Calculamos MCA usando la función MCA() [paquete FactoMineR]. Luego, usamos el paquete factoextra R para producir una visualización basada en ggplot2 de los resultados de CA.

Otras funciones utiles para computar MAC son: 1. dudi.acm() [ade4]

#library("ade4")
#res.mca <- dudi.acm(poison.active, scannf = FALSE, nf = 5)
  1. epMCA() [ExPosition]
#library("ExPosition")
#res.mca <- epMCA(poison.active, graph = FALSE, correction = "bg")

Para manejar los resultados de las funciones anteriores se usa:

#fviz_eig(res.mca)     # Scree plot
#fviz_mca_biplot(res.mca) # Biplot of rows and columns