Nouveautés de FactoMineR (exposé des rencontres R, Lyon, juin 2013)

The presentation introduces the recent developments of the R package FactoMineR as of June 2013, covering its comprehensive suite of factor analysis and classification methods (PCA, MCA, FAMD, MFA, CA, HCPC, etc.) and the ability to incorporate supplementary individuals and variables. It details the handling of missing data through the companion package missMDA, explaining iterative PCA/ACM imputation, EM algorithms, and multiple imputation (MIPCA) that allow confidence ellipses and uncertainty visualisation. The talk demonstrates these techniques on the built‑in Decathlon dataset, showing how to estimate components, impute missing values, and run analyses with supplementary data. A major focus is the upgraded graphical module: the autolab algorithm for optimal label placement, shadowtext, transparency (unselect), size scaling (cex), and selective labeling based on contribution, cos², or custom lists, improving readability of plots for PCA, MCA, CA, MFA, and FMD. Finally, the speaker highlights new user aids – French/English R‑Commander menus, a dedicated website with datasets and code, a Google Group, published books in multiple languages, and YouTube playlists (French and English) – to facilitate learning and application of FactoMineR.
Chapters
Bonjour, voici l'exposé qui a été réalisé aux Rencontres R de Lyon en juin 2013 sur les dernières avancées de FactoMineR en analyse des données, notamment sur la gestion des données manquantes, sur le module graphique et sur les nouvelles aides. Tout d'abord FactoMineR en quelques mots. FactoMineR propose des méthodes d'analyse factorielle classiques et des méthodes de classification. Pour ces méthodes d'analyse factorielle, on a mis l'accent sur la possibilité d'avoir de nombreux indicateurs: qualité de représentation, contribution, description automatique des axes, donc pour les individus, les variables, éventuellement des groupes de variables. Possibilité également d'ajouter de l'information supplémentaire, des individus supplémentaires, des variables supplémentaires, c'est-à-dire des éléments qui ne participent pas à la construction des dimensions. Mais qui peuvent servir à l'interprétation. Il y a également une interface graphique qui est disponible sous R Commander, une en français et une en anglais. Et donc je vais m'intéresser aujourd'hui à la gestion des données manquantes avec notamment le package missMDA qui est le petit frère de FactoMineR. Je vais m'intéresser également aux nouveautés dans le module graphique et puis à de nouvelles aides à l'utilisateur: site internet, vidéos et des livres. Alors les méthodes disponibles dans FactoMineR. Il y a différentes méthodes disponibles parce qu'il y a différents formats de données. Pour les variables quantitatives, l'analyse en composantes principales avec la fonction PCA. À chaque fois, il y a le type de données, la méthode et la fonction dans FactoMineR. Pour traiter les tableaux de contingence, on va faire de l'analyse des correspondances. Quand on a des enquêtes avec des variables qualitatives, on va utiliser l'analyse des correspondances multiples. Quand on a des données à la fois quantitatives et qualitatives, on peut faire de l'analyse de données mixtes avec la fonction famd. Ensuite, on peut s'intéresser à comparer l'information provenant de différentes sources. Par exemple, on a des variables qui sont structurées en groupes, des variables structurées en blocs, donc avec l'analyse factorielle multiple. On peut également avoir une hiérarchie sur les variables. L'analyse factorielle multiple hiérarchique. Il n'y a pas seulement des groupes mais toute une hiérarchie sur les variables: des groupes puis des sous-groupes. On peut prendre en compte toute cette hiérarchie. Et encore des groupes d'individus avec l'analyse factorielle multiple duale où l'objectif va être de comparer les liaisons entre variables d'un groupe d'individus à l'autre. Ce sont les principales méthodes d'analyse de données de FactoMineR et puis il y a des méthodes complémentaires la classification ascendante hiérarchique avec la fonction HCPC qui va permettre de faire une analyse factorielle multiple suivie d'une classification ascendante hiérarchique suivie d'une méthode de partitionnement et d'une caractérisation des classes. Donc c'est tout l'enchaînement qui est disponible dans cette fonction. Il y a des fonctions également outils comme la fonction catdesc qui va permettre de décrire une variable qualitative en fonction de variables quantitatives et qualitatives. Donc typiquement ça va être utile quand on va vouloir caractériser une variable de classe à l'issue d'une classification par exemple. Également la possibilité de décrire une variable quantitative, typiquement une dimension factorielle avec la fonction dimdesc ou condesc. Et puis il y a une fonction qui permet de construire un tableau de contingence à partir de données de texte, donc c'est une fonction textuelle et avec l'enchaînement avec une analyse des correspondances permettra de faire de l'analyse textuelle. On va s'intéresser maintenant à 2 problèmes: le premier problème c'est la gestion des données manquantes et le deuxième problème c'est les modules graphiques. Pour la gestion des données manquantes, c'est le package missMDA qui va permettre de gérer ça avec FactoMineR. L'idée va être d'imputer les données manquantes par une méthode de type ACP itérative, par des algorithmes EM. On complète le tableau de données et ensuite on va réaliser l'ACP sur le tableau complété. Le fait de travailler de cette façon-là, on complète de sorte que les données manquantes ne contribuent pas à la construction des dimensions. Et donc au final on va avoir les axes et composantes principales qui sont obtenus à partir d'un tableau incomplet. Après comparaison, on a montré que les résultats étaient meilleurs que l'algorithme Nipals par exemple. Au passage, ça fournit une imputation du jeu de données puisqu'on va imputer le jeu de données, compléter le jeu de données avant de faire une ACP. Et il y a cette méthodologie-là qui est disponible avec l'ACM, l'analyse de données mixtes et puis l'AFM. Donc au lieu de faire une ACP itérative, ce sera une ACM itérative puis une ACM sur le tableau complété. Alors en ACP, comment ça fonctionne? On charge la librairie missMDA. Ensuite il y a un jeu de données orange qu'on peut voir ici avec des données manquantes matérialisées par des NA. Donc la première chose à faire, ça va être d'estimer le nombre de composantes de l'ACP. On estime le nombre de composantes en ACP parce que pour compléter le tableau de données on va utiliser la formule de reconstitution de l'ACP et donc il faut savoir combien de dimensions vont être nécessaires pour reconstituer les données. Donc on estime le nombre de composantes, ensuite on va imputer le jeu de données avec la fonction inputPCA et ensuite on a un tableau qui est complété. Les valeurs qui étaient observées n'ont pas bougé et là où il y avait des valeurs manquantes maintenant on a des des valeurs et sur ce tableau complété on peut faire l'ACP. Alors le problème c'est que quand on fait une ACP itérative, c'est une méthode d'imputation simple: on a une valeur à la place de la valeur manquante. Et cette valeur unique ne peut pas refléter la variabilité liée à la prédiction de la donnée. Et donc quand on fait l'ACP par la suite, on a autant confiance dans les valeurs qui ont été réellement observées que dans les valeurs qui sont prédites. Et on se doute bien là qu'il y a un petit problème et qu'on veut avoir une zone de confiance par rapport à cette prédiction. Donc ce qu'on peut faire, c'est de l'imputation multiple, c'est-à-dire répéter plusieurs fois l'imputation et générer différentes valeurs plausibles pour chaque valeur manquante, donc générer différents tableaux de données, et puis ensuite utiliser ces différentes informations pour visualiser l'incertitude autour de la position des points. Et donc c'est disponible également dans le package missMDA. Avec la fonction MIPCA. Avec cette fonction MIPCA, on va construire des tableaux imputés et ensuite projeter ces tableaux imputés sur le graphe d'ACP, le graphe des individus et le graphe des variables. Et donc l'incertitude liée aux données manquantes est matérialisée par une ellipse de confiance ici pour les individus ou par des nuages de points pour les variables. Donc on voit qu'il y a des points pour lesquels il y a une assez forte incertitude sur la position du point dans le plan. Cette incertitude est assez forte parce qu'il y a certainement beaucoup de valeurs manquantes pour ces individus par rapport à d'autres pour lesquels il n'y a pas de valeur manquante du tout. C'est très utile quand on veut savoir si on peut avoir confiance dans l'interprétation. Si on a beaucoup de valeurs manquantes, on va toujours réussir à imputer, mais après quelle confiance est-ce qu'on peut avoir dans notre imputation? Si on a des ellipses qui sont énormes, on va se dire qu'on ne peut pas trop interpréter. Pour l'ACM, le raisonnement est le même: on va estimer le nombre de composantes pour pouvoir reconstituer les données et c'est le tableau disjonctif complet qu'on va imputer. Donc ici vous voyez le tableau de données avec des NA pour certaines variables qualitatives. Pour chaque variable qualitative, on la décompose en autant d'indicatrices qu'il y a de modalités et on va compléter par des valeurs décimales qui somment à 1, donc qu'on peut lire comme des degrés d'appartenance à la modalité. Par exemple, ici on a le tableau disjonctif complet qui est imputé. C'est ce tableau disjonctif complet imputé qu'on va utiliser pour réaliser l'ACM. On utilise la fonction MCA de FactoMineR et dans la fonction MCA de FactoMineR on précise le jeu de données et également le tableau de données disjonctif qu'on va utiliser pour faire l'ACM. Et pour l'analyse factorielle de données mixtes ou pour l'AFM, on a la même chose: on va estimer le nombre de composantes, imputer le jeu de données et puis utiliser le tableau disjonctif complété pour réaliser la méthode. Alors on va s'intéresser maintenant à un deuxième aspect, c'est le module graphique. Je vais commencer déjà par faire une ACP et présenter les résultats de l'ACP. Sur un jeu de données qui s'appelle Décathlon, qui est disponible dans FactoMineR. Je fais une ACP avec des variables actives, des variables quantitatives supplémentaires et une variable qualitative supplémentaire. Et puis ici je vais dire que je résume les résultats. C'est une nouvelle fonction de FactoMineR qui résume, qui nous précise la ligne de commande qu'on a effectuée et puis qui donne un premier tableau avec les valeurs propres. Et ensuite les résultats sur les individus avec la distance au centre de gravité puis les coordonnées sur la première dimension, la contribution de l'individu à la construction de l'axe en pourcentage, la qualité de représentation qui est mesurée par un cosinus carré. On a ensuite les résultats sur les variables: même chose, coordonnées, contribution, cosinus carré. Ensuite pour les variables quantitatives supplémentaires, les coordonnées et les cos², il n'y a pas de contribution puisque c'est une variable supplémentaire, et puis ensuite les résultats sur la variable qualitative et plus précisément sur les modalités de la variable qualitative. Alors maintenant le module graphique. Là j'ai représenté un graphe qui sortait par défaut avant avec FactoMineR. Tous les graphes que je montre ici sont les graphes de FactoMineR tels quels, les sorties directes. Je n'ai pas retravaillé les graphes. Donc ça c'est ce qu'on obtenait avant, on voit qu'il y a pas mal de libellés qui sont superposés, c'est gênant. Et maintenant avec l'argument autolab qui permet de positionner les libellés, on voit qu'il n'y a plus de libellés qui se chevauchent et donc le graphe est beaucoup plus lisible. Il est chargé parce qu'il y a beaucoup d'informations mais il est lisible. Je vais détailler un petit peu comment améliorer les graphes dans FactoMineR. La fonction autolab, c'est une fonction qui positionne les libellés de façon optimale, optimale entre guillemets, Comment fonctionne la fonction autolab? Elle va essayer de placer les libellés sur l'extérieur du graphique pour éviter qu'il y ait des chevauchements. Ensuite, ça va calculer un taux de recouvrement des libellés et puis il va y avoir un algorithme qui va tester différentes positions du libellé. Il y a 8 positions possibles autour d'un point pour un libellé et donc il permute certains libellés et à chaque fois il calcule un taux de recouvrement des libellés et puis l'algorithme continue jusqu'à ce que le taux de recouvrement soit le plus faible possible. Le graphique qui ressort c'est un graphique pour lequel le taux de recouvrement est très faible. Alors quelques astuces quand on a beaucoup de libellés: on peut réduire la taille des caractères en utilisant l'argument cex en mettant une valeur inférieure à 1. Donc ça réduit la taille des caractères et donc il y a moins de chevauchements. On peut aussi agrandir la fenêtre graphique pour avoir plus de place sur le graphique. On peut aussi mettre une ombre sous le libellé pour éviter d'avoir le libellé qui est écrit au-dessus d'un axe. On peut éventuellement relancer la fonction plusieurs fois parce que, comme les positions des libellés sont choisies de façon aléatoire dans l'algorithme, on peut avoir des solutions qui sont un peu différentes et donc des graphes légèrement différents. Et puis autre chose qu'on peut faire, c'est sélectionner les éléments et ne pas dessiner tous les éléments mais sélectionner que certains éléments, soit par une liste de noms, soit par les coordonnées les plus élevées, soit par les qualités de représentation, donc les cos², soit par les contributions. Par exemple ici, j'ai dessiné le graphe des individus. Il y avait une variable qualitative qui avait 2 modalités: Jeux olympiques et décastar. Donc on voit que les individus sont coloriés selon leur appartenance à la modalité. Et il y a certains individus qui ont des libellés et d'autres pour lesquels il n'y a que les points qui sont dessinés avec une certaine transparence. En fait ici j'ai sélectionné les libellés en fonction de leur qualité de représentation: il fallait que le cosinus carré soit supérieur à 0.6. Donc tous les individus qui ont un cosinus carré sur ce plan qui est inférieur à 0.6 sont écrits avec une certaine transparence. Je peux, alors ici ce sont les résultats d'une ACM, faire la même chose et dessiner les modalités. Alors ici je rends invisible les individus parce que sur le graphe de l'ACM on a à la fois les individus et les modalités. Je rends invisibles les individus et je mets les libellés uniquement pour les modalités qui ont un cosinus carré élevé, donc les 8 modalités, 8 modalités actives, 8 modalités illustratives, qui ont les cosinus carrés les plus élevés. Et pour les autres, ils sont écrits avec une certaine transparence. Je peux sélectionner par les contributions. Alors ici j'ai les individus mais j'ai des libellés que pour les 10 individus qui ont le plus contribué à la construction de ce plan 1-2 et les 10 modalités qui ont le plus contribué à la construction de ce plan 1-2. Donc les modalités qui ont le plus contribué, on voit qu'il n'y a pas du tout de modalité supplémentaire. Ici ce sont les résultats d'une AFM et j'ai sélectionné les individus pour lesquels je voulais un libellé grâce à une liste. Donc j'ai défini la liste et je sélectionne les individus en fonction de la liste. Même chose pour les variables. On a les variables ici de l'AFM. Il y a différents groupes de variables. Les variables sont coloriées en fonction de leur appartenance à un groupe. Et puis on a pris les 8 variables qui ont le plus contribué à la construction de ce plan. Donc ce sont les 8 variables qui ont les flèches les plus longues. Alors ici je mets unselect= 0, ça signifie que je mets une transparence de 0, donc pas de transparence, j'écris la flèche en trait plein. Sur le graphe. Et shadow= TRUE, il y a une petite ombre ici pour éviter par exemple que odor intensity soit au-dessus du trait. On ne voit pas le trait du cercle parce qu'il y a une petite ombre sous le libellé. Dans ce module graphique, je vous ai présenté quelques graphes obtenus avec les fonctions plot.PCA, plot.MCA, plot.CA, plot.FMD, plot.MFA. Elles fonctionnent toutes selon le même principe. Alors l'argument autolab permet de positionner de façon optimale les libellés. Par défaut, on choisit de façon automatique de positionner de façon optimale les libellés s'il y a moins de 50 éléments et s'il y a plus de 50 éléments, on choisit pas de positionner les libellés de façon optimale. Mais on peut l'imposer en mettant autolab= yes. Donc là on va imposer de mettre les libellés de façon optimale. Et Autolabel No, on ne met pas les libellés de façon optimale. Shadowtext, ça met une petite ombre sous le libellé et puis il y a aussi l'argument invisible qui permet de rendre invisibles certains éléments, par exemple les individus et les individus supplémentaires. Et puis on peut sélectionner les éléments pour lesquels on veut un libellé. Par exemple, je sélectionne uniquement les 4 premiers éléments ou je sélectionne les éléments qui ont le nom I1, et I3. Je sélectionne ici avec la qualité de représentation les 5 individus les mieux représentés. Ici les individus qui ont une qualité de représentation supérieure à 0.6, un cos² supérieur à 0.6. Je peux sélectionner par les coordonnées les plus élevées, les 3 les plus élevées, les 8 contributions les plus élevées. Ici ce sera pour les modalités, Select mode. Et puis après, Unselect, c'est comment dessiner les points, les éléments qui n'ont pas été sélectionnés. Donc c'est une valeur quantitative entre 0 et 1, ça donne le degré de transparence. Donc 0,5, c'est une certaine transparence. 0, ça veut dire qu'il n'y a pas de transparence, donc les éléments sont coloriés de la même couleur que les éléments qui ont été sélectionnés. 1, ça veut dire que les éléments non sélectionnés vont pas les dessiner du tout, ils sont totalement transparents. Et puis on peut également mettre les éléments non sélectionnés avec une couleur qu'on définit, par exemple ici un niveau de gris. Alors il y a également de nouvelles aides à l'utilisateur. Je reprends un peu toutes les aides. Il y a un menu déroulant en français qui est disponible dans R Commander. Il suffit d'ouvrir R et de copier-coller la ligne de commande suivante. Il y a le menu déroulant en anglais, il suffit d'enlever le -fr. Il y a un site internet qui est dédié avec des jeux de données, des lignes de code, des exemples d'utilisation. J'ai également créé un Google Group pour poser des questions. Et puis il y a des livres: le livre Statistiques avec R qui présente les fonctions d'ACP, d'ACM et de classification en français et en anglais, et puis le livre Analyse de données avec R qui est beaucoup plus focalisé sur l'analyse de données. Donc en français, en anglais et également traduit en espagnol. Et puis depuis peu, depuis avril, j'ai mis en ligne des vidéos sur YouTube, donc sur une chaîne YouTube. Donc il y a 2 playlists: une playlist en français pour laquelle il y a 14 vidéos, donc à peu près toutes les fonctions sont décrites, et puis 10 vidéos en anglais
More from Yamossoun

Algorithme de calcule de la racine carrée par dichotomie #dichotomy #squareroot #algorithm









