fviz_mca: Visualisation de l'Analyse des Correspondances Multiples - Logiciel R et analyse de données


Description

Graphique des variables individus/variables issues des résultats de l’Analyse des Correspondences Multiples (ACM).

Les fonctions suivantes, du package factoextra, sont utilisée:

  • fviz_mca_ind(): Graphique des individus
  • fviz_mca_var(): Graphique des variables
  • fviz_mca_biplot() (ou fviz_mca()): Biplot des individus et des variables

Installer et charger factoextra

Le package devtools est requis pour l’installation de factoextra.

if(!require(devtools)) install.packages("devtools")
devtools::install_github("kassambara/factoextra")

Charger factoextra:

library("factoextra")

Utilisation

# Graphique des individus
fviz_mca_ind(X, axes = c(1, 2), 
  geom = c("point", "text"), label = "all", invisible = "none",
  labelsize = 4, pointsize = 2, habillage = "none",
  addEllipses = FALSE, ellipse.level = 0.95, col.ind = "blue",
  col.ind.sup = "darkblue", alpha.ind = 1, shape.ind = 19,
  select.ind = list(name = NULL, cos2 = NULL, contrib = NULL),
  map = "symmetric", 
  jitter = list(what = "label", width = NULL, height = NULL), ...)
# Graphique des variables
fviz_mca_var(X, axes = c(1, 2),
  geom = c("point", "text"), label = "all",
  invisible = "none", labelsize = 4, pointsize = 2, col.var = "red",
  alpha.var = 1, shape.var = 17, col.quanti.sup = "blue",
  col.quali.sup = "darkgreen", col.circle = "grey70",
  select.var = list(name = NULL, cos2 = NULL, contrib = NULL),
  map = "symmetric", 
  jitter = list(what = "label", width = NULL, height = NULL))
# Biplot des individus et des variables
fviz_mca_biplot(X, axes = c(1, 2), geom = c("point", "text"),
  label = "all", invisible = "none", labelsize = 4, pointsize = 2,
  habillage = "none", addEllipses = FALSE, ellipse.level = 0.95,
  col.ind = "blue", col.ind.sup = "darkblue", alpha.ind = 1,
  col.var = "red", alpha.var = 1, col.quanti.sup = "blue",
  col.quali.sup = "darkgreen", shape.ind = 19, shape.var = 17,
  select.var = list(name = NULL, cos2 = NULL, contrib = NULL),
  select.ind = list(name = NULL, cos2 = NULL, contrib = NULL),
  map = "symmetric", arrows = c(FALSE, FALSE), 
  jitter = list(what = "label", width = NULL, height = NULL), ...)
# Alias de fviz_mca_biplot()
fviz_mca(X, ...)

Arguments

Argument Description
X Un objet de class MCA [FactoMineR]; mca [ade4].
axes un vecteur numérique de longueur 2 spécifiant les axes à tracer.
geom un texte spécifiant la géométrie à utiliser pour le graphique. Les valeurs autorisées sont la combinaison de c(“point”, “arrow”, “text”). Utilisez “point” (pour afficher uniquement les points); “text” pour afficher uniquement les étiquettes (texte d’annotation); c(“point”, “text”) ou c(“arrow”, “text”) pour montrer les deux types.
label un vecteur de caractères spécifiant les éléments à étiqueter. a valeur par défaut est “all”. Les valeurs autorisées sont “none” ou la combinaison de c(“ind”, “ind.sup”,“var”, “quali.sup”, “quanti.sup”). Utilisez “ind” pour étiqueter uniquement les individus actifs; “ind.sup” est pour les individus supplémentaires. “var” est pour les variables actives. “quali.sup” est pour les variables qualitatives supplémentaires. “quanti.sup” est pour les variables quantitatives supplémentaires.
invisible une chaîne de caractère spécifiant les éléments à masquer sur le graphique. La valeur par défaut est “none”. Les valeurs autorisées sont la combinaison de c(“ind”, “ind.sup”,“var”, “quali.sup”, “quanti.sup”).
labelsize taille de la police pour les étiquettes.
pointsize la taille des points.
habillage une variable catégorielle optionnelle de type “factor. La valeur par défaut est”none“. Si X est un objet de type MCA provenant de FactoMineR, habillage peut être également spécifié par l’index ou le nom d’une variable qualitative supplémentaire. Cet argument est utilisé pour colorer les individus par des groupes (voir ?MCA dans FactoMineR).
addEllipses valeur logique. Si TRUE, ajoute des ellipses autour des individus lorsque habillage!= “none”.
ellipse.level la taille de l’ellipse de concentration en probabilité normale (i.e.: 0.95, 0.68, …).
col.ind,col.var couleurs pour les individus et les variables, respectivement. Les valeurs possibles comprennent également: “cos2”, “contrib”, “coord”, “x” or “y”. Dans ce cas, les couleurs des individus/variables sont automatiquement contrôlées par leurs qualités (“cos2”), leurs contributions (“contrib”), leurs coordonnées (x^2 + y^2, “coord”), les valeurs x (“x”) ou les valeurs y (“y”). Pour utiliser la coloration automatique (par cos2, contrib, ….), assurez-vous que habillage = “none”.
col.ind.sup couleur des individus supplémentaires.
alpha.ind,alpha.var contrôle la transparence des couleurs des individus et des variables, respectivement. La valeur peut varier de 0 (transparence totale) à 1 (aucune transparence). La valeur par défaut est 1. Les valeurs admises comprennent également: “cos2”, “contrib”, “coord”, “x” ou “y”, comme pour les arguments col.ind et col.var. Pour utiliser ceux-ci, assurez-vous que habillage = “none”.
select.ind,select.var

Sélection des individus/variables à dessiner. Les valeurs autorisées sont NULL ou une liste contenant le nom des arguments, cos2 ou contrib. La valeur par défaut est list(name = NULL, cos2 = NULL, contrib = NULL):

  • name: est un vecteur de caractères contenant les noms des individus/variables à sélectionner
  • cos2: si cos2 est dans [0, 1], ex: 0.6, alors les individus/variables avec un cos2 > 0.6 sont sélectionnées. Si cos2 > 1, ex: 5, alors les top 5 individus/variables avec le plus grand cos2 sont sélectionnées
  • contrib: si contrib > 1, ex: 5, alors les top 5 individus/variables avec la plus grande contribution sont sélectionnées.
map chaîne de caractères spécifiant le type de graphique. Les options autorisées incluent: “rowprincipal” “symetric”, “colprincipal”, “symbiplot”, “rowgab”, “colgab”, “rowgreen” et “colgreen”. Voir la section détails
jitter Un paramètre d’ajustement de la position des points et textes pour réduire le chevauchement. C’est une liste contenant les objets what, width et height (Ex.; jitter = list(what, width, height)). what: l’élément à ajuster. Les valeurs possibles sont “point” ou “p”; “label” ou “l”; “both” ou “b”. width: degré d’ajustement selon l’axe des x (ex: 0.2). height: degré d ’ajustement selon l’axe des y (ex: 0.2).
col.quanti.sup, col.quali.sup couleur pour les variables quantitative/qualitative supplémentaires.
arrows Vecteur logique de longueur deux, précisant si le graphique doit contenir des points (FALSE, par défaut) ou flèches (TRUE). La première valeur s’applique aux variables lignes et la deuxième valeur s’applique aux variables colonnes.
Arguments optionnels à passer à la fonction fviz_mca_biplot().

Details

Le graphique par défaut de l’ACM (analyse des correspondances multiples) est un graphique “symétrique”, dans lequel les lignes et les colonnes sont représentées en coordonnées principales. Dans cette situation, il est impossible d’interpréter la distance entre les points lignes et les points colonnes. Pour surmonter ce problème, le plus simple est de faire un graphique asymétrique. Cela signifie que, les profils colonnes doivent être représentées dans l’espace des lignes ou vice-versa. Les options autorisées pour l’argument map sont:

  • “rowprincipal” or “colprincipal”: graphique asymétriques avec soit des lignes en coordonnées principales et les colonnes en coordonnées standards, ou vice versa. Ces graphiques conservent respectivement la métrique des lignes ou celle des colonnes.

  • “symbiplot”: Les lignes et les colonnes sont transformées afin d’avoir des variances égales aux valeurs singulières (racines carrés des valeurs propres), ce qui donne un biplot symétrique mais ne préserve pas les métriques des lignes ou des colonnes.

  • “rowgab” ou “colgab”: graphiques asymétriques, proposées par Gabriel & Odoroff (1990), avec des lignes (respectivement colonnes) en coordonnées principales et colonnes (respectivement lignes) en coordonnées standards multiplié par la masse du point correspondant.

  • “rowgreen” ou “colgreen”: graphiques appelés aussi “biplots de contribution”, montrant visuellement les points les plus contributifs (Greenacre 2006b). Ils sont semblables à “rowgab” et “colgab”, sauf que les points en coordonnées standard sont multipliés par la racine carrée des masses correspondantes, donnant les reconstructions des résidus standardisés.

Valeur

Un graphique de type ggplot2

Exemples

Analyse des correspondences multiples

Une Analyse des Correspondences Multiples (ACM) est effectuée en utilisant la fonction MCA() [dans FactoMineR] et les données poison [dans FactoMineR]:

# Installer et charger FactoMineR pour effectuer une MCA
# install.packages("FactoMineR")
library("FactoMineR")
data(poison)
poison.active <- poison[1:55, 5:15]
head(poison.active[, 1:6])
    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
4 Nausea_n  Vomit_n     Abdo_n Fever_n Diarrhea_n Potato_y
5 Nausea_n  Vomit_y     Abdo_y Fever_y Diarrhea_y Potato_y
6 Nausea_n  Vomit_n     Abdo_y Fever_y Diarrhea_y Potato_y
res.mca <- MCA(poison.active, graph=FALSE)

fviz_mca_ind(): Graphique des individus

# Graphique par défaut
fviz_mca_ind(res.mca)

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Changer le titre principal et celui des axes
fviz_mca_ind(res.mca) +
 labs(title = "MCA", x = "Dim.1", y ="Dim.2" )

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Changer les limites des axes en spécifiant le min et le max
fviz_mca_ind(res.mca) +
   xlim(-0.8, 1.5) + ylim (-1.5, 1.5)

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Utiliser seulement du texte
fviz_mca_ind(res.mca, geom = "text")

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Utiliser uniquement des points
fviz_mca_ind(res.mca, geom="point")

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Changer la taille des points
fviz_mca_ind(res.mca, geom="point", pointsize = 4)

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Changer la couleur des points et le thème
fviz_mca_ind(res.mca, col.ind = "blue")+
   theme_minimal()

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Réduire le chévauchement
fviz_mca_ind(res.mca, 
             jitter = list(width = 0.2, height = 0.2))

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Contrôler automatiquement la couleurs des individus
# par les valeurs de cos2 ou de contributions
# cos2 = qualité de réprésentation sur le graphique
fviz_mca_ind(res.mca, col.ind="cos2")

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Gradient de couleur
fviz_mca_ind(res.mca, col.ind="cos2") +
      scale_color_gradient2(low="white", mid="blue",
      high="red", midpoint=0.4, space = "Lab")

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Changer le thème et utiliser uniquement des points
fviz_mca_ind(res.mca, col.ind="cos2", geom = "point") +
      scale_color_gradient2(low="white", mid="blue",
      high="red", midpoint=0.4, space = "Lab")+ theme_minimal()

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Colorer en fonction de la contribution
fviz_mca_ind(res.mca, col.ind="contrib") +
      scale_color_gradient2(low="white", mid="blue",
      high="red", midpoint=1.5, space = "Lab")

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Contrôler la transparence des couleurs
# en fonction de la contribution
fviz_mca_ind(res.mca, alpha.ind="contrib") +
     theme_minimal()

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Colorer les individus par groupes
grp <- as.factor(poison.active[, "Vomiting"])
fviz_mca_ind(res.mca, label="none", habillage=grp)

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Ajouter des ellipses
p <- fviz_mca_ind(res.mca, label="none", habillage=grp,
             addEllipses=TRUE, ellipse.level=0.95)
print(p)

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Changer la couleur des groupes en utilisant
# les palettes RColorBrewer
p + scale_color_brewer(palette="Dark2") +
   theme_minimal()

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

p + scale_color_brewer(palette="Paired") +
     theme_minimal()

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

p + scale_color_brewer(palette="Set1") +
     theme_minimal()

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Changer la couleur manuellement
p + scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Sélectionner et visualiser les individus avec cos2 >= 0.4
fviz_mca_ind(res.mca, select.ind = list(cos2 = 0.4))

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Sélectionner le top 20 selon le cos2 
fviz_mca_ind(res.mca, select.ind = list(cos2 = 20))

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Selectionner le top 20 selon la contribution
fviz_mca_ind(res.mca, select.ind = list(contrib = 20))

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Sélectionner par le nom
fviz_mca_ind(res.mca,
select.ind = list(name = c("44", "38", "53",  "39")))

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

fviz_mca_var(): Graphique des variables

# Graphique par défaut
fviz_mca_var(res.mca)

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Changer la couleur et le thème
fviz_mca_var(res.mca, col.var="steelblue")+
 theme_minimal()

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Contrôler la couleur selon la contribution
fviz_mca_var(res.mca, col.var = "contrib")+
 scale_color_gradient2(low = "white", mid = "blue",
           high = "red", midpoint = 2) +
 theme_minimal()

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Contrôler la transparence des variables
# selon leurs contributions
fviz_mca_var(res.mca, alpha.var = "contrib") +
   theme_minimal()

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Sélectionner et visualiser les variables avec cos2 >= 0.4
fviz_mca_var(res.mca, select.var = list(cos2 = 0.4))

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Sélectionner le top 10 selon la contribution
fviz_mca_var(res.mca, select.var = list(contrib = 10))

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Sélectionner par noms
fviz_mca_var(res.mca,
 select.var= list(name = c("Courg_n", "Fever_y", "Fever_n")))

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

fviz_mca_biplot(): Biplot des individus et des variables

fviz_mca_biplot(res.mca)

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Annoter uniquement les variables
fviz_mca_biplot(res.mca, label ="var")

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Annoter uniquement les individus
fviz_mca_biplot(res.mca, label ="ind")

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Cacher les variables
fviz_mca_biplot(res.mca, invisible ="var")

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Cacher les individus
fviz_mca_biplot(res.mca, invisible ="ind")

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Contrôler la couleur des individus selon le cos2
fviz_mca_biplot(res.mca, label ="var", col.ind="cos2") +
       theme_minimal()

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Change la couleur par groups, ajouter des ellipses
fviz_mca_biplot(res.mca, label="var", col.var ="blue",
   habillage=grp, addEllipses=TRUE, ellipse.level=0.95) +
   theme_minimal()

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

# Top 30 des individus les plus contributifs
# et top 10 des variables les plus contributifs
fviz_mca_biplot(res.mca,
               select.ind = list(contrib = 30),
               select.var = list(contrib = 10))

fviz_mca: Quick Multiple Correspondence Analysis data visualization - R software and data mining

Infos

Cette analyse a été réalisée en utilisant le logiciel R (ver. 3.2.1) et factoextra (ver. 1.0.3)









Want to Learn More on R Programming and Data Science?

Follow us by Email

by FeedBurner

On Social Networks:


 Get involved :
  Click to follow us on and Google+ :   
  Comment this article by clicking on "Discussion" button (top-right position of this page)
  Sign up as a member and post news and articles on STHDA web site.
Cette page a été vue 2697 fois