Introducción

El análisis factorial múltiple (MFA) es un método de análisis de datos multivariado para resumir y visualizar una tabla de datos compleja en la que los individuos se describen mediante varios conjuntos de variables (cuantitativas y/o cualitativas) estructuradas en grupos. Tiene en cuenta la contribución de todos los grupos activos de variables para definir la distancia entre individuos.

El número de variables en cada grupo puede diferir y la naturaleza de las variables (cualitativas o cuantitativas) puede variar de un grupo a otro, pero las variables deben ser de la misma naturaleza en un grupo determinado.

En el este capítulo, mostramos cómo calcular y visualizar el análisis de factores múltiples en el software R utilizando FactoMineR (para el análisis) y factoeztra (para la visualización de datos). Además, mostraremos cómo revelar las variables más importantes que más contribuyen a explicar las variaciones en el conjunto de datos.

Cálculo

Paquetes R

install.packages (c("FactoMineR", "factoextra"))
## Installing packages into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
## (as 'lib' is unspecified)
library ("FactoMineR")
library ("factoextra")
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa

Formato de datos

Usaremos los conjuntos de datos de demostración disponibles en el paquete FactoMineR. Este conjunto de datos se trata de una evaluación sensorial de los vinos por parte de diferentes jueces.

library ("FactoMineR")

data(wine)

colnames (wine)
##  [1] "Label"                         "Soil"                         
##  [3] "Odor.Intensity.before.shaking" "Aroma.quality.before.shaking" 
##  [5] "Fruity.before.shaking"         "Flower.before.shaking"        
##  [7] "Spice.before.shaking"          "Visual.intensity"             
##  [9] "Nuance"                        "Surface.feeling"              
## [11] "Odor.Intensity"                "Quality.of.odour"             
## [13] "Fruity"                        "Flower"                       
## [15] "Spice"                         "Plante"                       
## [17] "Phenolic"                      "Aroma.intensity"              
## [19] "Aroma.persistency"             "Aroma.quality"                
## [21] "Attack.intensity"              "Acidity"                      
## [23] "Astringency"                   "Alcohol"                      
## [25] "Balance"                       "Smooth"                       
## [27] "Bitterness"                    "Intensity"                    
## [29] "Harmony"                       "Overall.quality"              
## [31] "Typical"

Código R

El siguiente código R realiza el MFA en los datos de los vinos utilizando los grupos: olor, visual, olor después de agitar y sabor. Estos grupos se denominan grupos activos. El grupo restante de variables - origen (el primer grupo) y juicio general (el sexto grupo) - se denominan grupos complementarios; num.grupo.sup = c(1, 6)

library (FactoMineR)
data (wine)

res.mfa <- MFA(wine,
               group = c(2, 5, 3, 10, 9, 2),
               type = c("n", "s", "s", "s", "s", "s"),
               name.group = c("origin", "odor", "visual", "odor.after.shaking", "taste", "overall"),
               num.group.sup = c(1, 6),
               graph = FALSE)

print (res.mfa)
## **Results of the Multiple Factor Analysis (MFA)**
## The analysis was performed on 21 individuals, described by 31 variables
## *Results are available in the following objects :
## 
##    name                 description                                           
## 1  "$eig"               "eigenvalues"                                         
## 2  "$separate.analyses" "separate analyses for each group of variables"       
## 3  "$group"             "results for all the groups"                          
## 4  "$partial.axes"      "results for the partial axes"                        
## 5  "$inertia.ratio"     "inertia ratio"                                       
## 6  "$ind"               "results for the individuals"                         
## 7  "$quanti.var"        "results for the quantitative variables"              
## 8  "$quanti.var.sup"    "results for the quantitative supplementary variables"
## 9  "$quali.var.sup"     "results for the categorical supplementary variables" 
## 10 "$summary.quanti"    "summary for the quantitative variables"              
## 11 "$summary.quali"     "summary for the categorical variables"               
## 12 "$global.pca"        "results for the global PCA"

Visualización e interpretación

Usaremos el paquete factoextra R. para ayudar en la interpretación y visualización del análisis factorial múltiple.

Valores propios / Varianzas

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

La función fviz_eíg() o fviz screeplot() [paquete factoextra] se puede utilizar para dibujar el gráfico de pantalla:

library ("factoextra")
eig.val <- get_eigenvalue(res.mfa)
head(eig.val)
##       eigenvalue variance.percent cumulative.variance.percent
## Dim.1  3.4619504        49.378382                    49.37838
## Dim.2  1.3667683        19.494446                    68.87283
## Dim.3  0.6154291         8.777969                    77.65080
## Dim.4  0.3721997         5.308747                    82.95954
## Dim.5  0.2703825         3.856511                    86.81605
## Dim.6  0.2024033         2.886912                    89.70297
fviz_screeplot (res.mfa)

Gráfico de variables

Grupos de variables

La función get mfa var() [de factoextra] se utiliza para extraer los resultados de grupos de variables. ’Esta función devuelve una lista que contiene las coordenadas, el cos2 y la contribución de los grupos

group <- get_mfa_var(res.mfa, "group")
group
## Multiple Factor Analysis results for variable groups 
##  ===================================================
##   Name           Description                                          
## 1 "$coord"       "Coordinates"                                        
## 2 "$cos2"        "Cos2, quality of representation"                    
## 3 "$contrib"     "Contributions"                                      
## 4 "$correlation" "Correlation between groups and principal dimensions"
fviz_mfa_var(res.mfa, "group")

El gráfico anterior ilustra la correlación entre grupos y dimensiones. Las coordenadas de los cuatro grupos activos en la primera dimensión son casi idénticas. Esto significa que contribuyen de manera similar a la primera dimensión. En cuanto a la segunda dimensión, los dos grupos, olor y olor después de agitar, tienen las coordenadas más altas que indican una contribución más alta a la segunda dimensión.

Para dibujar un gráfico de barras de la contribución de los grupos a las dimensiones, use la función fviz_contrib()

fviz_contrib(res.mfa, "group", axes = 1)

fviz_contrib(res.mfa, "group", axes = 2)

Variables cuantitativas

La función get _mfa_var() [in factoextra] se utiliza para extraer los resultados de las variables cuantitativas. Esta función devuelve una lista que contiene las coordenadas, el cos2 y la contribución de las variables

quanti.var <- get_mfa_var(res.mfa, "quanti.var")
quanti.var
## Multiple Factor Analysis results for quantitative variables 
##  ===================================================
##   Name       Description                      
## 1 "$coord"   "Coordinates"                    
## 2 "$cos2"    "Cos2, quality of representation"
## 3 "$contrib" "Contributions"

Correlación entre variables cuantitativas y dimensiones. El siguiente código R traza variables cuantitativas coloreadas por grupos. La paleta de argumentos se usa para cambiar los colores del grupo (consulte ?ggpubr::ggpar para obtener más información sobre la paleta). Las variables cuantitativas complementarias están en flecha discontinua y color violeta. Usamos repel = TRUE, para evitar la superposición de texto.

fviz_mfa_var(res.mfa, "quanti.var", palette = "jco",
col.var.sup = "violet", repel = TRUE)

Para que la gráfica sea más legible, podemos usar geom = c(“point”, “text”) en lugar de geom = c(“arrow”, “text”). Cambie también la posición de la leyenda de “right” a “bottom”, usando el argumento leyenda = “bottom”

fviz_mfa_var(res.mfa, "quanti.var", palette = "jco",
col.var.sup = "violet", repel = TRUE,
geom = c("point", "text"), legend = "bottom")

La contribución de las variables cuantitativas (en %) a la definición de las dimensiones se puede visualizar mediante la función fuiz _contrib() [paquete factoextra]. Las variables están coloreadas por grupos. El siguiente código R muestra las 20 principales categorías de variables que contribuyen a las dimensiones

fviz_contrib(res.mfa, choice = "quanti.var", axes = 1, top = 20, palette = "jco")

fviz_contrib(res.mfa, choice = "quanti.var", axes = 2, top = 20, palette = "jco")

Las variables cuantitativas que más contribuyen se pueden resaltar en el diagrama de dispersión usando el argumento col.var = “contrib”. Esto produce un degradado de colores, que se puede personalizar utilizando el argumento degradado.cols.

fviz_mfa_var(res.mfa, "quanti.var", col.var = "contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
col.var.sup = "violet", repel = TRUE, geom = c("point", "text"))

Gráfica de individuos

Para graficar individuos, use la función fviz_mfa_ind() [de factoextra]. De forma predeterminada, las personas se colorean en azul. Sin embargo, al igual que las variables, también es posible colorear a los individuos por sus valores de cos2

ind <- get_mfa_ind(res.mfa)
ind
## Multiple Factor Analysis results for individuals 
##  ===================================================
##   Name                      Description                      
## 1 "$coord"                  "Coordinates"                    
## 2 "$cos2"                   "Cos2, quality of representation"
## 3 "$contrib"                "Contributions"                  
## 4 "$coord.partiel"          "Partial coordinates"            
## 5 "$within.inertia"         "Within inertia"                 
## 6 "$within.partial.inertia" "Within partial inertia"
fviz_mfa_ind(res.mfa, col.ind = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE)

Visualización e interpretación

Tenga en cuenta que es posible colorear a los individuos usando cualquiera de las variables cualitativas en la tabla de datos inicial. Para ello se utiliza el argumento habillage en la función fuiz_mfa_ind(). Por ejemplo, si desea colorear los vinos de acuerdo con la variable cualitativa complementaria “Etiqueta”, escriba esto

fviz_mfa_ind(res.mfa,
             habillage = "Label",
             palette = c("#00AFBB", "#E7B800", "#EC4E07"),
             addEllipses = TRUE, ellipse.type = "confidence",
             repel = TRUE
             )

Si desea colorear personas usando múltiples variables categóricas al mismo tiempo, use la función fviz_ellipses() [factoextra] de la siguiente manera

fviz_ellipses(res.mfa, c("Label", "Soil"), repel = TRUE)
## 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 <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Gráfica de individuos parciales

Los resultados para individuos obtenidos del análisis realizado con un solo grupo se denominan individuos parciales. En otras palabras, un individuo considerado desde el punto de vista de un solo grupo se llama individuo parcial. Para un individuo dado, hay tantos puntos parciales como grupos de variables. La gráfica de individuos parciales representa cada vino visto por cada grupo y su baricentro. Si desea visualizar puntos parciales para vinos de interés, digamos c(“1DAM”, “1VAU”, “2ING”), use esto

fviz_mfa_ind(res.mfa, partial = c("1DAM", "1VAU", "2ING"))

Gráfico de ejes parciales

El gráfico de ejes parciales muestra la relación entre los ejes principales del MFA y los que se obtienen al analizar cada grupo mediante un PCA (para grupos de variables continuas) o un MCA (para variables cualitativas).

fviz_mfa_axes(res.mfa)

Resumen

El análisis factorial múltiple (MFA) hace posible analizar individuos caracterizados por múltiples conjuntos de variables. En este capítulo, describimos cómo realizar e interpretar MFA usando los paquetes FactoMineR y factoextra R.