ACM - Analyse des Correspondances Multiples avec R: L'Essentiel
L’Analyse des Correspondances Multiples (ACM ou MCA pour multiple correspondence analysis) est une extension de l’analyse factorielle des correspondances pour résumer et visualiser un tableau de données contenant plus de deux variables catégorielles. On peut aussi la considérer comme une généralisation de l’analyse en composantes principales lorsque les variables à analyser sont catégorielles plutôt que quantitatives (Abdi and Williams 2010).
L’ACM est généralement utilisée pour analyser des données d’enquête ou de sondage.
L’objectif est d’identifier:
- Un groupe de personnes ayant un profil similaire dans leurs réponses aux questions
- Les associations entre les catégories des variables
Dans ce chapitre, nous allons décrire comment calculer et visualiser l’analyse des correspondances multiples avec le logiciel R en utilisant les packages FactoMineR (pour l’analyse) et factoextra (pour la visualisation des données). De plus, nous montrerons comment révéler les variables les plus importantes qui contribuent le plus à expliquer les variations dans le jeu de données. Nous continuons en expliquant comment prédire les résultats pour les individus et les variables supplémentaires. Enfin, nous allons démontrer comment filtrer les résultats de l’ACM afin de ne conserver que les variables les plus contributives.
Contents:
Livre (en anglais):

Practical Guide to Principal Component Methods in R
Calcul
Packages R
Plusieurs fonctions, de différents packages, sont disponibles dans le logiciel R pour le calcul de l’ACM:
MCA()
[packageFactoMineR
]dudi.mca()
[packageade4
]epMCA()
[packageExPosition
]
Peu importe la fonction que vous décidez d’utiliser, vous pouvez facilement extraire et visualiser les résultats de l’ACM en utilisant les fonctions R fournies dans le package factoextra
.
Ici, nous utiliserons les deux packages FactoMineR (pour l’analyse) et factoextra (pour la visualisation basée sur ggplot2).
Installez les deux packages comme suit:
install.packages(c("FactoMineR", "factoextra"))
Chargez-les dans R, en tapant ceci:
library("FactoMineR")
library("factoextra")
Format des données
Nous utiliserons le jeux de données poison
disponible dans le package 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
Ces données proviennent d’une enquête menée auprès d’enfants de l’école primaire qui ont subi des intoxications alimentaires. Ils ont été interrogés sur leurs symptômes et sur ce qu’ils ont mangé.
Les données contiennent 55 lignes (individus) et 15 colonnes (variables). Nous n’utiliserons que certain des individus (enfants) et variables pour effectuer l’ACM. Les coordonnées des individus et des variables restantes seront prédites.
Nos données contiennent donc des:
- Individus actifs (lignes 1:55): individus qui sont utilisés dans l’ACM.
- Variables actives (colonnes 5:15): variables utilisées dans l’ACM.
- Variables supplémentaires: elles ne participent pas à l’ACM. Les coordonnées de ces variables seront prédites.
- Variables quantitatives supplémentaires (quanti.sup): Colonnes 1 et 2 correspondant aux colonnes
age
ettime
, respectivement. - Variables qualitatives supplémentaires (quali.sup: Colonnes 3 et 4 correspondant aux colonnes
Sick
etSex
, respectivement. Ces variables seront utilisées pour colorer les individus par groupes.
- Variables quantitatives supplémentaires (quanti.sup): Colonnes 1 et 2 correspondant aux colonnes
Nous commençons par extraire les individus actifs et les variables actives pour l’ACM:
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
Résumé des données
La fonction summary()
peut être utilisée pour calculer la fréquence des catégories des variables. Comme le tableau de données contient un grand nombre de variables, nous afficherons uniquement les résultats pour les 4 premières variables.
Résumés statistiques:
# Résumé des 4 premières variables
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 fonctions summary() renvoient la taille des catégories des variables.
Il est également possible de visualiser la fréquence des catégories des variables. Le code R ci-dessous, montre les 4 premières colonnes:
for (i in 1:4) {
plot(poison.active[,i], main = colnames(poison.active)[i],
ylab = "Count", col="steelblue", las = 2)
}
Les graphiques ci-dessus peuvent être utilisés pour identifier les catégories à très faible fréquence. Ce type de variables peut fausser l’analyse et doit être supprimé.
code R
La fonction MCA()
[FactoMineR] peut être utilisée. Un format simplifié est:
MCA(X, ncp = 5, graphique = TRUE)
X
: tableau de données avec n lignes (individus) et p colonnes (variables catégorielles)ncp
: nombre de dimensions conservées dans les résultats finaux.graph
: valeur logique. Si TRUE le graphique est affiché.
Dans le code R ci-dessous, l’ACM est effectuée uniquement sur les individus / variables actifs:
res.mca <- MCA (poison.active, graph = FALSE)
Le résultat de l’ACM est une liste comprenant:
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"
L’objet créé avec la fonction MCA() contient de nombreuses informations trouvées dans de nombreuses listes et matrices différentes. Ces valeurs sont décrites dans la section suivante.
Visualisation et interprétation
Nous utiliserons le package R factoextra
pour aider à l’interprétation et à la visualisation de l’analyse des correspondances multiples. Peu importe la fonction que vous décidez d’utiliser [FactoMiner::MCA(), ade4::dudi.mca()], vous pouvez facilement extraire et visualiser les résultats de l’ACM en utilisant les fonctions R fournies dans le package factoextra
.
Ces fonctions de factoextra incluent:
get_eigenvalue(res.mca)
: Extraction des valeurs propres / variances des composantes principalesfviz_eig(res.mca)
: Visualisation des valeurs propresget_mca_ind(res.mca)
,get_mca_var(res.mca)
: Extraction des résultats pour les individus et les variables, respectivement.fviz_mca_ind(res.mca)
,fviz_mca_var(res.mca)
: visualisation des résultats des individus et des variables, respectivement.fviz_mca_biplot(res.mca)
: Création d’un biplot des individus et des variables.
Dans les sections suivantes, nous allons illustrer chacune de ces fonctions.
Notez que les résultats de l’ACM sont interprétés comme les résultats de l’AFC. Par conséquent, il est fortement recommandé de lire l’interprétation de l’AFC au chapitre (???)(analyse-factorielle-des-correspondances).
Valeurs propres / Variances
La proportion des variances retenues par les différentes dimensions (axes) peut être extraite à l’aide de la fonction get_eigenvalue()
[factoextra package] comme suit:
library("factoextra")
eig.val <- get_eigenvalue(res.mca)
# head(eig.val)
Pour visualiser les pourcentages de variances expliquées par chaque dimension de l’ACM, utilisez la fonction fviz_eig()
ou fviz_screeplot()
[package factoextra
]:
fviz_screeplot (res.mca, addlabels = TRUE, ylim = c (0, 45))
Biplot
La fonction fviz_mca_biplot()
[factoextra] permet de visualiser le biplot des individus et des variables:
fviz_mca_biplot (res.mca, repel = TRUE,
ggtheme = theme_minimal())
Dans le graphique ci-dessus, les lignes (individus) sont représentées par des points bleus et des colonnes (variables) par des triangles rouges.
La distance entre les individus donne une mesure de leur similitude (ou dissemblance). Les individus avec un profil similaire sont proches sur le graphique. Il en va de même pour les variables.
Graphique des variables
Résultats
La fonction get_mca_var()
[factoextra] sert à extraire les résultats pour les catégories des variables. Cette fonction renvoie une liste contenant les coordonnées, les cos2 et les contributions des catégories:
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"
Les composants de get_mca_var()
peuvent être utilisés dans le graphique des variables comme suit:
var$coord
: coordonnées des variables pour créer un nuage de pointsvar$cos2
: qualité de représentation des variables.var$contrib
: contributions (en pourcentage) des variables à la définition des dimensions.
Notez qu’il est possible de visualiser les catégories des variables et de les colorer en fonction de soit leurs qualités de représentation (cosinus carré, cos2), soit de leurs contributions à la définition des dimensions (contrib).
Les différents composants peuvent être consultés comme suit:
# Coordonnées
head(var$coord)
# Cos2: qualité de représentation
head(var$cos2)
# Contributions aux axes
head(var$contrib)
Dans cette section, nous décrirons comment visualiser uniquement les catégories des variables. Ensuite, nous mettrons en évidence les catégories en fonction soit de leurs qualités de représentation, soit de leurs contributions aux dimensions.
Corrélation entre les variables et les axes principaux
Pour visualiser la corrélation entre les variables et les axes principaux de l’ACM, tapez ceci:
fviz_mca_var (res.mca, choice = "mca.cor",
repel = TRUE,
ggtheme = theme_minimal ())
-
Le graphique ci-dessus permet d’identifier les variables les plus corrélées avec chaque axe. Les corrélations au carré entre les variables et les axes sont utilisées comme coordonnées.
-
On constate que les variables Diarrhae, Abdominals et Fever sont les plus corrélées avec la dimension 1. De même, les variables Courgette et Potato sont les plus corrélées avec la dimension 2.
Coordonnées des catégories des variables
Le code R ci-dessous affiche les coordonnées de chacune des catégories des variables dans chaque dimension (1, 2 et 3):
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
Utilisez la fonction fviz_mca_var()
[factoextra] pour visualiser uniquement les catégories des variables:
fviz_mca_var (res.mca,
repel = TRUE,
ggtheme = theme_minimal ())
Il est possible de modifier la couleur et la forme des points à l’aide des arguments col.var
et shape.var
comme suit:
fviz_mca_var(res.mca, col.var="black", shape.var = 15,
repel = TRUE)
Le graphique ci-dessus montre les relations entre les catégories des variables. Il peut être interprété comme suit:
- Les catégories avec un profil similaire sont regroupées.
- Les catégories corrélées négativement sont positionnées sur les côtés opposés de l’origine du graphique (quadrants opposés).
- La distance entre les catégories et l’origine mesure la qualité des catégories. Les points qui sont loin de l’origine sont bien représentés par l’ACM.
Qualité de représentation des catégories des variables
Les deux dimensions 1 et 2 capturent 46% de l’inertie totale (variation) contenue dans les données. Tous les points ne sont pas aussi bien représentés par les deux dimensions.
La qualité de représentation, appelée cosinus carré (cos2), mesure le degré d’association entre les catégories des variables et les dimensions. Le cos2 peut être extrait comme suit:
head(var$cos2, 4)
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## Nausea_n 0.256 0.0528 0.2527 0.00408 0.01947
## Nausea_y 0.256 0.0528 0.2527 0.00408 0.01947
## Vomit_n 0.344 0.2512 0.0107 0.11229 0.00413
## Vomit_y 0.344 0.2512 0.0107 0.11229 0.00413
Si une catégorie d’une variable donnée est bien représentée par deux dimensions, la somme des cos2 est proche de 1. Pour certains éléments, plus de 2 dimensions sont nécessaires pour représenter parfaitement les données.
Il est possible de colorer les variables en fonction de la valeur de leur cos2 à l’aide de l’argument col.var = "cos2"
. Cela produit un gradient de couleurs. Dans ce cas, l’argument gradient.cols
peut être utilisé pour spécifier une palette de couleur personnalisée. Par exemple, gradient.cols = c("white", "blue", "red")
signifie que:
- les variables à faible valeur de cos2 seront colorées en “white” (blanc)
- les variables avec des valeurs moyennes de cos2 seront colorées en “blue” (bleu)
- les variables avec des valeurs élevées de cos2 seront colorées en “red” (rouge)
# Colorer en fonction du cos2
fviz_mca_var(res.mca, col.var = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE,
ggtheme = theme_minimal())
Notez qu’il est également possible de modifier la transparence des variables en fonction de leurs cos2 à l’aide de l’option alpha.var = "cos2"
. Par exemple, tapez ceci:
# Changer la transparence en fonction du cos2
fviz_mca_var(res.mca, alpha.var = "cos2",
repel = TRUE,
ggtheme = theme_minimal())
Vous pouvez visualiser le cos2 des catégories sur toutes les dimensions en utilisant le package corrplot:
library("corrplot")
corrplot(var$cos2, is.corr=FALSE)
Il est également possible de créer un barplot du cos2 des variables avec la fonction fviz_cos2()
[factoextra
]:
# Cos2 des variable sur Dim.1 et Dim.2
fviz_cos2(res.mca, choice = "var", axes = 1:2)
Notez que les catégories Fish_n, Fish_y, Icecream_n et Icecream_y ne sont pas très bien représentées par les deux premières dimensions. Cela implique que la position des points correspondants sur le graphique doit être interprétée avec prudence.
Contribution des variables aux dimensions
La contribution des variables (en %) à la définition des dimensions peut être extraite comme suit:
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
Les variables avec les plus grandes valeurs, contribuent le mieux à la définition des dimensions. Les catégories qui contribuent le plus à Dim.1 et Dim.2 sont les plus importantes pour expliquer la variabilité dans le jeu de données.
La fonction fviz_contrib()
[factoextra] peut être utilisée pour faire un barplot de la contribution des catégories des variables. Le code R ci-dessous montre le top 15 des catégories contribuant aux dimensions:
# Contributions des variables à la dimension 1
fviz_contrib (res.mca, choice = "var", axes = 1, top = 15)
# Contributions des variables à la dimension 2
fviz_contrib (res.mca, choice = "var", axes = 2, top = 15)
Les contributions totales aux dimensions 1 et 2 sont obtenues comme suit:
# Contribution totale aux dimensions 1 et 2
fviz_contrib(res.mca, choice = "var", axes = 1:2, top = 15)
La ligne en pointillé rouge, sur le graphique ci-dessus, indique la valeur moyenne attendue sous l’hypothèse nulle.
On peut voir que:
- les catégories Abdo_n, Diarrhea_n, Fever_n et Mayo_n sont les plus importantes dans la définition de la première dimension.
- Les catégories Courg_n, Potato_n, Vomit_y et Icecream_n contribuent le plus à la dimension 2
Les catégories les plus importantes peuvent être mises en évidence sur le graphique comme suit:
fviz_mca_var(res.mca, col.var = "contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE,
ggtheme = theme_minimal()
)
Le graphique ci-dessus donne une idée du pôle des dimensions auquel les catégories contribuent réellement.
Il est évident que les catégories Abdo_n, Diarrhea_n, Fever_n et Mayo_n ont une contribution importante au pôle positif de la première dimension, tandis que les catégories Fever_y et Diarrhea_y ont une contribution majeure au pôle négatif de la première dimension; etc, ….
Notez qu’il est également possible de contrôler la transparence des catégories en fonction de leurs contributions en utilisant l’option alpha.var = "contrib"
. Par exemple, tapez ceci:
# Changez la transparence en fonction de la contrib
fviz_mca_var (res.mca, alpha.var = "contrib",
repel = TRUE,
ggtheme = theme_minimal ())
Graphique des individus
Résultats
La fonction get_mca_ind()
[factoextra] sert à extraire les résultats pour les individus. Cette fonction renvoie une liste contenant les coordonnées, la cos2 et les contributions des individus:
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"
Pour accéder aux différents composants, utilisez ceci:
# Coordonnées
head(ind$coord)
# Qualité de representation
head(ind$cos2)
# Contributions
head(ind$contrib)
graphique: qualité et contribution
La fonction fviz_mca_ind()
[factoextra] sert à visualiser uniquement des individus. Comme les variables, il est également possible de colorer les individus en fonction de leurs cos2:
fviz_mca_ind(res.mca, col.ind = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE,
ggtheme = theme_minimal())
Le code R ci-dessous crée un barplot du cos2 et de la contribution des individus:
# Cos2 des individus
fviz_cos2(res.mca, choice = "ind", axes = 1:2, top = 20)
# Contribution des individus aux dimensions
fviz_contrib(res.mca, choice = "ind", axes = 1:2, top = 20)
Colorer les individus par groupes
Notez qu’il est possible de colorer les individus en utilisant l’une des variables qualitatives dans le tableau de données initial (poison)
Le code R ci-dessous colore les individus par groupes en utilisant la variable Vomiting
. L’argument habillage
sert à spécifier la variable à utiliser pour colorer les individus par groupes. Une ellipse de concentration peut également être ajoutée autour de chaque groupe en utilisant l’argument addEllipses = TRUE
. Si vous voulez une ellipse de confiance autour du point moyen (centre de gravité) des groupes, utilisez ellipse.type = "confidence"
. L’argument palette
permet de modifier les couleurs du groupe.
fviz_mca_ind (res.mca,
label = "none", # masquer le texte des individus
habillage = "Vomiting", # colorer par groupes
palette = c ("#00AFBB", "#E7B800"),
addEllipses = TRUE, ellipse.type = "confidence",
ggtheme = theme_minimal ())
Notez que, pour spécifier l’argument habillage
, il est également possible d’utiliser l’index de la colonne comme suit (habillage = 2
). Vous pouvez aussi fournir une variable de regroupement externe comme suit: habillage = poison$Vomiting
. Par exemple:
# habillage = indice de la colonne
# à utiliser comme variable de regroupement
fviz_mca_ind(res.mca, habillage = 2, addEllipses = TRUE)
# habillage = variable de regroupement externe
fviz_mca_ind(res.mca, habillage = poison$Vomiting, addEllipses = TRUE)
Si vous souhaitez colorer les individus à l’aide de plusieurs variables catégorielles en même temps, utilisez la fonction fviz_ellipses() [factoextra] comme suit:
fviz_ellipses(res.mca, c("Vomiting", "Fever"),
geom = "point")
Alternativement, vous pouvez spécifier les indices des variables catégorielles:
fviz_ellipses (res.mca, 1:4, geom = "point")
Description des dimensions
La fonction dimdesc()
[FactoMineR] peut être utilisée pour identifier les variables les plus corrélées avec une dimension donnée:
res.desc <- dimdesc (res.mca, axes = c(1,2))
# Description de la dimension 1
res.desc[[1]]
# Description de la dimension 2
res.desc[[2]]
Eléments supplémentaires
Définition et types
Comme décrit ci-dessus (section @ref(mca-data-format)), le jeu de données poison
contient:
- des variables continues supplémentaires (quanti.sup = 1:2, colonnes 1 et 2 correspondant aux colonnes
age
ettime
, respectivement) - des variables qualitatives supplémentaires (quali.sup = 3:4, correspondant aux colonnes
Sick
etSex
, respectivement). Ces variables sont utilisées pour colorer les individus par groupes
Les données ne contiennent pas des individus supplémentaires. Cependant, pour la démonstration, nous utiliserons les individus 53:55 en tant qu’individus supplémentaires.
Les variables et les individus supplémentaires ne sont pas utilisés pour déterminer les dimensions principales. Leurs coordonnées sont prédites en utilisant uniquement les informations fournies par l’ACM effectuée sur des variables/individus actifs.
Spécification dans l’ACM
Pour spécifier des individus et des variables supplémentaires, la fonction MCA()
peut être utilisée comme suit:
MCA (X, ind = NULL, quanti = NULL, quali.sup = NULL,
graph = TRUE, axes = c (1,2))
X
: un data frame. Les lignes sont des individus et les colonnes sont des variables numériques.ind.sup
: un vecteur numérique spécifiant les positions des individus supplémentairesquanti.sup
,quali.sup
: un vecteur numérique spécifiant, respectivement, les positions des variables quantitatives et qualitativesgraph
: une valeur logique. Si TRUE, un graphique est affiché.
Par exemple, tapez ceci:
res.mca <- MCA (poison, ind = 53:55,
quanti.sup = 1:2, quali.sup = 3:4, graph = FALSE)
Résultats
Les résultats prédites pour les individus / variables supplémentaires peuvent être extraits comme suit:
# Variables qualitatives supplémentaires
res.mca$quali.sup
# Variables quantitatives supplémentaires
res.mca$quanti
# Individus supplémentaires
res.mca$ind.sup
Graphique
Pour créer un biplot des individus et des variables, tapez ceci:
# Biplot des individus et des variables
fviz_mca_biplot (res.mca, repel = TRUE,
ggtheme = theme_minimal ())
- Les individus actifs sont en bleu
- Les individus supplémentaires sont en bleu foncé
- Les catégories des variables actives sont en rouge
- Les catégories des variables supplémentaires sont en vert foncé
Si vous souhaitez mettre en évidence la corrélation entre les variables (actifs et supplémentaires) et les dimensions, utilisez la fonction fviz_mca_var()
avec l’argument choice= "mca.cor"
:
fviz_mca_var (res.mca, choice = "mca.cor",
repel = TRUE)
Le code R ci-dessous visualise les catégories des variables qualitatives (variables actives et supplémentaires):
fviz_mca_var(res.mca, repel = TRUE,
ggtheme= theme_minimal())
Pour les variables quantitatives supplémentaires, tapez ceci:
fviz_mca_var(res.mca, choice = "quanti.sup",
ggtheme = theme_minimal())
Pour visualiser les individus supplémentaires, tapez ceci:
fviz_mca_ind(res.mca,
label = "ind.sup",
ggtheme = theme_minimal())
Filtrer des résultats
Si vous avez plusieurs individus / variables, il est possible de visualiser seulement certains d’entre eux en utilisant les arguments select.ind
et select.var
.
select.ind, select.var
: une sélection d’individus / variables à visualiser. Les valeurs autorisées sont NULL
ou une liste
contenant le nom des arguments, cos2 ou contrib:
name
: est un vecteur de caractères contenant le nom des individus / variables à visualisercos2
: si cos2 est dans [0, 1], ex: 0.6, alors les individus / variables avec un cos2> 0.6 sont montrés. sicos2> 1
, ex: 5, le top 5 des individus / variables actifs ainsi que le top 5 des individus/ variables supplémentaires avec le cos2 le plus élevé sont montréscontrib
: si contrib> 1, ex: 5, alors les top 5 individus / variables avec les contributions les plus importantes sont montrés
# Visualiser les catégories de variables avec cos2> = 0.4
fviz_mca_var (res.mca, select.var = list (cos2 = 0.4))
# Top 10 des variables actives avec le cos2 le plus elevé
fviz_mca_var (res.mca, select.var = list (cos2 = 10))
# Sélectionner par noms
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 des categories de variables les plus contributifs
fviz_mca_biplot (res.mca, select.ind = list (contrib = 5),
select.var = list (contrib = 5),
ggtheme = theme_minimal ())
Lorsque la sélection se fait selon les valeurs de contribution, les individus / variables supplémentaires ne sont pas représentés parce qu’ils ne contribuent pas à la construction des axes.
Exportation des résultats
Exporter les graphiques en PDF / PNG
Deux étapes:
- Créez le graphique d’intérêt en tant qu’objets R:
# Scree plot
scree.plot <- fviz_eig (res.mca)
# Biplot des variables de ligne et de colonne
biplot.mca <- fviz_mca_biplot (res.mca)
- Exporter les graphiques dans un seul fichier pdf comme suit (un graphique par page):
library(ggpubr)
ggexport(plotlist = list(scree.plot, biplot.mca),
filename = "MCA.pdf")
Plus d’options au Chapitre @ref (analyse-en-composantes-principales) (section: exportation des résultats).
Exporter les résultats vers les fichiers txt / csv
Fonction R facile à utiliser: write.infile()
[FactoMineR] package.
# Exporter vers un fichier TXT
write.infile (res.mca, "mca.txt", sep = "\t")
# Exporter vers un fichier CSV
write.infile (res.mca, "mca.csv", sep = ";")
Résumé
En conclusion, nous avons décrit comment calculer et interpréter l’analyse des correspondances multiples (ACM). Nous avons calculé l’ACM en utilisant la fonction MCA()
[FactoMineR]. Ensuite, nous avons utilisé le package factoextra R pour produire une visualisation ggplot2 des résultats de l’ACM.
Il existe d’autres fonctions [packages] pour calculer l’ACM dans R:
dudi.acm()
[ade4]
library("ade4")
res.mca <- dudi.acm(poison.active, scannf = FALSE, nf = 5)
epMCA()
[ExPosition]
library("ExPosition")
res.mca <- epMCA(poison.active, graph = FALSE, correction = "bg")
Peu importe les fonctions que vous décidez d’utiliser, dans la liste ci-dessus, le package factoextra peut gérer le résultat.
fviz_eig (res.mca) # Scree plot
fviz_mca_biplot (res.mca) # Biplot
Autres lectures
Pour les bases mathématiques de l’ACM, referez vous aux cours, articles et livres suivants:
- Exploratory Multivariate Analysis by Example Using R (book) (Husson, Le, and Pagès 2017).
- Principal component analysis (article) (Abdi and Williams 2010). https://goo.gl/1Vtwq1.
References
Abdi, Hervé, and Lynne J. Williams. 2010. “Principal Component Analysis.” John Wiley and Sons, Inc. WIREs Comp Stat 2: 433–59. http://staff.ustc.edu.cn/~zwp/teach/MVA/abdi-awPCA2010.pdf.
Husson, Francois, Sebastien Le, and Jérôme Pagès. 2017. Exploratory Multivariate Analysis by Example Using R. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. http://factominer.free.fr/bookV2/index.html.