Capítulo 7

Análisis de factores múltiples

7.1 Introducción

El análisis factorial múltiple (MFA) (Pagès, 2002) es un método de análisis de datos multivariados para resumir y visualizar una tabla de datos compleja en la que los individuos son descritos por 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 (Abdi y Williams, 2010). .

El MFA puede considerarse como un análisis factorial general. A grandes rasgos, el núcleo del MFA se basa en:

• Análisis de componentes principales (PCA) (Capítulo 3) cuando las variables son cuantitativas.

• Análisis de correspondencias múltiples (ACM) (Capítulo 5) cuando las variables son cualitativas.

Este análisis global, donde se consideran simultáneamente múltiples conjuntos de variables, requiere equilibrar las influencias de cada conjunto de variables. Por tanto, en MFA las variables se ponderan durante el análisis. Las variables de un mismo grupo se normalizan utilizando el mismo valor de ponderación, que puede variar de un grupo a otro. Técnicamente, MFA asigna a cada variable del grupo j, un peso igual al inverso del primer valor propio del análisis (PCA o MCA según el tipo de variable) del grupo j.

El análisis factorial múltiple puede utilizarse en diversos campos (Pagès, 2002), donde las variables se organizan en grupos:

  1. Análisis de encuestas, cuando un individuo es una persona; una variable es una pregunta. Las preguntas están organizadas por temas (grupos de preguntas).

  2. Análisis sensorial, donde un individuo es un producto alimenticio. Un primer conjunto de variables incluye variables sensoriales (dulzor, amargor, etc.); un segundo incluye variables químicas (pH, tasa de glucosa, etc.).

  3. Ecología, donde el individuo es un lugar de observación. Un primer conjunto de variables describe las características del suelo; un segundo describe la flora.

  4. Series temporales, donde se observan varios individuos en diferentes fechas. En esta situación, normalmente existen dos formas de definir grupos de variables:

• generalmente, las variables observadas al mismo tiempo (fecha) se agrupan.

•Cuando las variables son las mismas de una fecha a otra, cada conjunto puede reunir las diferentes fechas para una variable.

En el capítulo actual, mostramos cómo calcular y visualizar análisis factorial múltiple en el software R usando FactoMineR (para el análisis) y factoextra (para 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.

7.2 Computación

7.2.1 Paquetes R

Instale FactoMineR y factoextra de la siguiente manera:

    #   install.packages(c("FactoMineR", "factoextra"))

Cargue los paquetes:

#library("FactoMineR")
#library("factoextra")

7.2.2 Formato de datos

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

#library("FactoMineR")
#       data (wine)
#       colnames (wine)

Figura 7.1: Formato de datos para el análisis multifactorial (Fuente de la imagen, FactoMineR, http://factominer.free.fr)

Los datos contienen 21 filas (vinos, individuos) y 31 columnas (variables):

• Las dos primeras columnas son variables categóricas: etiqueta (Saumur, Bourgueil o Chinon) y suelo (Referencia, Env1, Env2 o Env4).

• Las 29 columnas siguientes son variables sensoriales continuas. Para cada vino, el valor es la puntuación media de todos los jueces.

Las variables se organizan en grupos de la siguiente manera:

  1. Primer grupo Un grupo de variables categóricas que especifican el origen de los vinos, - incluidas las variables etiqueta y suelo correspondientes a las 2 primeras columnas de la tabla de datos. En la terminología de FactoMineR, el grupo de argumentos = 2 se utiliza para definir las 2 primeras columnas como un grupo.

  2. Segundo grupo Conjunto de variables continuas, que describen el olor de los vinos antes del batido, incluyendo las variables: Olor. Intensidad.antes.de.agitar,.calidad.del.aroma.antes.de.agitar,.afrutado.antes.de.agitar,.flor.antes.de.agitar y especiado.antes.de.agitar. Estas variables corresponden a las siguientes 5 columnas después del primer grupo. Terminología de FactoMineR: grupo = 5.

  3. Tercer grupo Conjunto de variables continuas que cuantifican la inspección visual de los vinos, incluyendo las variables: Intensidad.visual, Matiz y Sensación.superficial. Estas variables corresponden a las 3 columnas siguientes al segundo grupo. Terminología de FactoMineR: grupo = 3.

  4. Cuarto grupo Conjunto de variables continuas relativas al olor de los vinos después del batido, entre las que se incluyen las variables: Olor. Intensidad, Calidad.olor, Frutado, Floral, Especiado, Vegetal, Fenólico, Intensidad.aroma, Persistencia.aroma y Calidad.aroma. Estas variables corresponden a las 10 columnas siguientes al tercer grupo. Terminología de FactoMineR: grupo = 10.

  5. Quinto grupo Conjunto de variables continuas que evalúan el sabor de los vinos, incluyendo las variables Intensidad de ataque, Acidez, Astringencia, Alcohol, Equilibrio, Untuosidad, Amargor, Intensidad y Armonía. Estas variables corresponden a las 9 columnas siguientes al cuarto grupo. Terminología de FactoMineR: grupo = 9.

  6. Sexto grupo Conjunto de variables continuas relativas al juicio global - de los vinos, incluidas las variables Calidad General y Típica. Estas variables corresponden a las 2 columnas siguientes al quinto grupo. Terminología de FactoMineR: grupo = 2.

7.2.3 Código R

Se puede utilizar la función MFA() [paquete FactoMiner]. Un formato simplificado es:

#MFA(base, group, type = rep("s", length(group)), ind.sup = NULL, name.group = NULL, num.group.sup = NULL, graph = TRUE)

(No corre por falta de objetos)

• base: un marco de datos con n filas (individuos) yp columnas (variables)

• grupo: un vector con el número de variables en cada grupo.

• tipo: el tipo de variables de cada grupo. De forma predeterminada, todas las variables son cuantitativas y están escaladas a la varianza unitaria. Los valores permitidos incluyen:

• “c” o “s” para variables cuantitativas. Si es “s”, las variables se escalan a la varianza unitaria.

• "n" para variables categóricas.


• "f" para frecuencias (de tablas de contingencia).

• ind.sup: vector que indica los índices de los individuos suplementarios.

• nombre.grupo: un vector que contiene el nombre de los grupos (por defecto, NULL y el grupo se denomina grupo. 1, grupo.2 y así sucesivamente).

• num.group.sup: los índices de los grupos ilustrativos (por defecto, NULL y ningún grupo son ilustrativos).

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

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 suplementarios; número.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)

(No corre por falta de objetos)

La salida de la función MFA() es una lista que incluye:

#print(res.mfa)

(No corre por falta de objetos)

7.3 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.

Se utilizarán las siguientes funciones [en el paquete factoextra]:

• get_eigenvalue(res.mfa): Extrae los valores propios/varianzas retenidos por cada dimensión (eje).

• fviz_eig(res.mfa): Visualiza los valores propios/varianzas.

• get_mfa_ind(res.mfa): Extrae los resultados para individuos.

• get_mfa_var(res.mfa): Extrae los resultados para variables cuantitativas y cualitativas, así como para grupos de variables.

• fviz_mfa_ind(res.mfa), fviz_mfa_var(res.mfa): Visualiza los resultados para individuos y variables, respectivamente.

En las siguientes secciones, ilustraremos cada una de estas funciones.

Para ayudar en la interpretación de MFA, recomendamos encarecidamente leer la interpretación del análisis de componentes principales (Capítulo 3), el análisis de correspondencia simple (Capítulo 4) y el análisis de correspondencia múltiple (Capítulo 5). Muchos de los gráficos presentados aquí ya han sido descritos en el capítulo anterior.

7.3.1 Valores propios/varianzas

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

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

(No corre por falta de objetos)

La función fviz_eig() o fuiz_screeplot() [paquete factoextra] se puede utilizar para dibujar el diagrama de pedregal:

#fviz_screeplot(res.mfa)

(No corre por falta de objetos)

7.3.2 Gráfico de variables

7.3.2.1 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, así como el

#group <- get_mfa_var(res.mfa, "group")
#group

(No corre por falta de objetos)

Se puede acceder a los diferentes componentes de la siguiente manera:

# Coordenadas de grupos
        #head(group$coord)

# Cos2: calidad de representación en el mapa factore
        #head(group$cos2)

# Aportes a las dimensiones
        #head(group$contrib)

(No corre por falta de objetos)

Para trazar los grupos de variables, escriba esto:

#fviz_mfa_var(res.mfa, "group")

(No corre por falta de objetos)

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. Con respecto a la segunda dimensión, los dos grupos olor y olor.después.sacudida tienen las coordenadas más altas, lo que indica una mayor contribución a la segunda dimensión.

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

# Contribución a la primera dimensión
        #fviz_contrib(res.mfa, "group", axes = 1)

# Contribución a la segunda dimensión 
        #fviz_contrib(res.mfa, "group", axes = 2

(No corre por falta de objetos)

7.3.2.2 Variables cuantitativas

La función get_mfa_var() [de factoextra] se utiliza para extraer los resultados de 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

(No corre por falta de objetos)

Se puede acceder a los diferentes componentes de la siguiente manera:

# Coordenadas
        #head(quanti.var$coord)

# Cos2: calidad en el mapa factore
        #head(quanti.var$cos2)

# Aportes a las dimensiones
        #head(quanti.var$contrib)

(No corre por falta de objetos)

En esta sección, describiremos cómo visualizar variables cuantitativas coloreadas por grupos. A continuación, resaltaremos las variables según i) su calidad de representación en el mapa de factores o ii) sus contribuciones a las dimensiones.

Correlación entre variables cuantitativas y dimensiones.

El código R a continuación traza variables cuantitativas coloreadas por grupos. La paleta de argumentos se utiliza para cambiar los colores del grupo (consulte ?ggpubr::ggpar para obtener más información sobre la paleta). Las variables cuantitativas suplementarias están en flecha discontinua y en 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)

(No corre por falta de objetos)

Para hacer que la trama sea más legible, podemos usar geom = c(“point”, “text”) en lugar de geom = c(“arrow”, “text”). También cambiaremos la posición de la leyenda de “derecha” a “abajo”, usando el argumento leyenda = “abajo”:

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

(No corre por falta de objetos)

Brevemente, la gráfica de variables (círculo de correlación) muestra la relación entre variables, la calidad de la representación de las variables, así como la correlación entre variables y las dimensiones:

Las variables correlacionadas positivamente se agrupan, mientras que las negativas se ubican en lados opuestos del origen de la gráfica (cuadrantes opuestos).

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

Para una dimensión determinada, las variables más correlacionadas con la dimensión están cerca de la dimensión.

Por ejemplo, la primera dimensión representa los sentimientos positivos sobre los vinos: “intensidad” y “armonía”. Las variables más correlacionadas con la segunda dimensión son: i) Especia antes de agitar e Intensidad de olor antes de agitar para el grupo de olores; ii) Especias, Plantas y intensidad del olor para el grupo de olor después de agitar y iii) Amargor para el grupo de sabor. Esta dimensión representa esencialmente el “picante” y la característica vegetal debida al olfato.

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

# Contribuciones a la dimensión 1
        #fviz_contrib(res.mfa, choice = "quanti.var", axes = 1, top = 20, palette = "jco")

# Contribuciones a la dimensión 2
        #fviz_contrib(res.mfa, choice = "quanti.var", axes = 2, top = 20, palette = "jco") 

(No corre por falta de objetos)

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 de contribución esperado, bajo hipótesis nula, se ha detallado en el capítulo de análisis de componentes principales (Capítulo 3).

Las variables con mayor valor son las que más contribuyen a la definición de las dimensiones. Las variables que más contribuyen a Dim.1 y Dim.2 son las más importantes para explicar la variabilidad en el conjunto de datos.

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

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

(No corre por falta de objetos)

De manera similar, puede resaltar variables cuantitativas utilizando sus valores cos2 que representan la calidad de la representación en el mapa de factores. Si una variable está bien representada por dos dimensiones, la suma del cos2 es cercana a uno. Para algunos de los elementos de la fila, es posible que se requieran más de dos dimensiones para representar perfectamente los datos.

# Color por valores cos2: calidad en el mapa de factores
#fviz_mfa_var(res.mfa, col.var = "cos2", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), col.var.sup = "violet", repel = TRUE)

(No corre por falta de objetos)

Para crear un diagrama de barras de variables cos2, escriba esto:

        #fviz_cos2(res.mfa, choice = "quanti.var", axes = 1)

(No corre por falta de objetos)

7.3.3 Gráfico de individuos

Para obtener los resultados para individuos, escriba esto:

#ind <- get_mfa_ind(res.mfa)
#ind

(No corre por falta de objetos)

Para trazar individuos, utilice la función fviz_mfa_ind() [de factoextra]. Por defecto, los individuos están coloreados en azul. Sin embargo, al igual que las variables, también es posible colorear los individuos según sus valores de cos2:

#fviz_mfa_ind(res.mfa, col.ind = "cos2", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), repel = TRUE)

(No corre por falta de objetos)

En el gráfico anterior, las categorías de variables cualitativas complementarias se muestran en negro. Env1, Env2, Env3 son las categorías del suelo. Saumur, Bourgueuil y Chinon son las categorías del vino Label. Si no desea mostrarlos en la trama, utilice el argumento invisible = “quali.var”.

Los individuos con perfiles similares están cerca unos de otros en el mapa de factores. El primer eje, opone principalmente al vino 1DAM y, a los vinos 1 VAU y 2ING. Como se describió en el apartado anterior, la primera dimensión representa la armonía y la intensidad de los vinos.

Así, el vino 1DAM (coordenadas positivas) fue evaluado como el más “intenso” y “armonioso” frente a los vinos 1VAU y 2ING (coordenadas negativas) que son los menos “intensos” y “armoniosos”. El segundo eje está esencialmente asociado a los dos vinos T1 y T2 caracterizados por un fuerte valor de las variables Especia antes de agitar e Intensidad de olor antes de agitar.

La mayoría de las categorías de variables cualitativas complementarias están cerca del origen del mapa. Este resultado indica que las categorías en cuestión no están relacionadas con el primer eje (vino “intensidad” y “armonía”) ni con el segundo eje (vino T1 y T2).

La categoría Env4 tiene coordenadas altas en el segundo eje relacionado con T1 y T2.

Se sabe que la categoría “Referencia” está relacionada con un excelente suelo vitivinícola. Como era de esperar, nuestro análisis demuestra que la categoría “Referencia” tiene coordenadas altas en el primer eje, lo que se correlaciona positivamente con la “intensidad” y la “armonía” de los vinos.

Tenga en cuenta que es posible colorear a los individuos utilizando cualquiera de las variables cualitativas en la tabla de datos inicial. Para hacer esto, se utiliza el argumento habillage en la función fviz_mfa_ind(). Por ejemplo, si quieres colorear los vinos según la variable cualitativa complementaria “Etiqueta”, escribe esto:

#fviz_mfa_ind(res.mfa, habillage "Label", color by groups = palette = c("#00AFBB", "#E7B800", "#FC4E07"), addEllipses = TRUE, ellipse.type = "confidence", repel = TRUE # Αvoid text overlapping)

(No corre por falta de objetos)

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

#fviz_ellipses(res.mfa, c("Label", "Soil"), repel = TRUE)

(No corre por falta de objetos)

Alternativamente, puede especificar índices de variables categóricas:

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

(No corre por falta de objetos)

7.3.4 Gráfico de individuos parciales

Los resultados de los individuos obtenidos del análisis realizado con un solo grupo se denominan individuos parciales. En otras palabras, a un individuo considerado desde el punto de vista de un solo grupo se le llama individuo parcial.

En el gráfico predeterminado fviz_mfa_ind(), para un individuo determinado, el punto corresponde al individuo medio o al centro de gravedad de los puntos parciales del individuo. Es decir, el individuo visto por todos los grupos de variables.

Para un individuo determinado existen tantos puntos parciales como grupos de variables.

La gráfica de individuos parciales representa cada vino visto por cada grupo y su baricentro. Para trazar los puntos parciales de todos los individuos, escriba esto:

#fviz_mfa_ind(res.mfa, partial = "all")

(No corre por falta de objetos)

Si desea visualizar puntos parciales para vinos de interés, digamos c(“1DAM”, “1VAU”,“2ING”), utilice esto:

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

(No corre por falta de objetos)

El color rojo representa los vinos vistos únicamente por las variables olfativas; el color violeta representa los vinos vistos únicamente por las variables visuales, y así sucesivamente.

El vino 1DAM ha sido descrito en el apartado anterior como especialmente “intenso” y “armonioso”, especialmente en lo que respecta al grupo olfativo: tiene una coordenada alta en el primer eje desde el punto de vista del grupo de variables olfativas en comparación con el punto de vista de los demás grupos.

Desde el punto de vista del grupo de olor, 2ING fue más “intenso” y “armonioso” que 1VAU pero desde el punto de vista del grupo de gusto, 1VAU fue más “intenso” y “armonioso” que 2ING.

7.3.5 Gráfica de ejes parciales

La gráfica de ejes parciales muestra la relación entre los ejes principales del AFM y los obtenidos al analizar cada grupo mediante un PCA (para grupos de variables continuas) o un MCA (para variables cualitativas).