{"id":1310,"date":"2021-05-11T13:13:39","date_gmt":"2021-05-11T11:13:39","guid":{"rendered":"http:\/\/perso.ens-lyon.fr\/lise.vaudor\/?p=1310"},"modified":"2021-05-11T13:13:39","modified_gmt":"2021-05-11T11:13:39","slug":"acp","status":"publish","type":"post","link":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/acp\/","title":{"rendered":"ACP"},"content":{"rendered":"<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/ACP\/Lise_Vaudor_headband-1.png\" alt=\"\" \/><\/p>\n<p>Tr\u00e8s r\u00e9guli\u00e8rement, dans le cadre de ma mission de support \u00e0 la recherche, on me demande de r\u00e9aliser (ou d\u2019aider \u00e0 r\u00e9aliser) des <strong>ACP (Analyses en Composantes Principales)<\/strong>. En g\u00e9n\u00e9ral cette demande ne s\u2019ensuit pas d\u2019un fol enthousiasme de ma part: je me sens un peu comme une cuisini\u00e8re \u201cbistronomique\u201d \u00e0 qui on demanderait tout le temps une entrec\u00f4te-frites. Je peux comprendre le c\u00f4t\u00e9 \u201ctradi mais app\u00e9tent\u201d mais pour moi c\u2019est pas l\u2019\u00e9clate.<\/p>\n<p>Quoi qu\u2019il en soit, la demande \u00e9tant somme toute l\u00e9gitime (et fr\u00e9quente) voici un billet o\u00f9 je rassemble <strong>quelques \u00e9l\u00e9ments d\u2019information et outils pour r\u00e9aliser des ACP sans douleur<\/strong>.<\/p>\n<h1>Une ACP, pour quoi faire<\/h1>\n<p>Une ACP (ou \u201cPCA\u201d pour <strong>P<\/strong>rincipal <strong>C<\/strong>omponents <strong>A<\/strong>nalysis en anglais) c\u2019est une analyse qui vise \u00e0 <strong>d\u00e9crire un jeu de donn\u00e9es comprenant de multiples variables quantitatives<\/strong>.<\/p>\n<p>Elle fait partie d\u2019une m\u00eame \u201cfamille\u201d d\u2019analyses, celle des <strong>analyses factorielles<\/strong> qui s\u2019appliquent \u00e0 de larges tableaux de donn\u00e9es (pas forc\u00e9ment uniquement compos\u00e9s de variables quantitatives comme dans le cas de l\u2019ACP).<\/p>\n<p>Le principe d\u2019une ACP est de <strong>r\u00e9duire<\/strong> un jeu de donn\u00e9es \u00e0 <strong>N<\/strong>>2 variables (i.e.\u00a0N dimensions) \u00e0 quelques (g\u00e9n\u00e9ralement 2) variables nouvelles (ce qu\u2019on appelle les <strong>composantes principales<\/strong>). Le but de la manoeuvre, c\u2019est d\u2019obtenir quelque chose qui est beaucoup plus <strong>facile \u00e0 d\u00e9crire et \u00e0 repr\u00e9senter<\/strong> qu\u2019un jeu de donn\u00e9es avec beaucoup de variables (puisque 2 dimensions, c\u2019est ce qu\u2019il faut pour repr\u00e9senter le jeu de donn\u00e9es \u201cdans son enti\u00e8ret\u00e9\u201d sur un graphique, que ce soit pour un article papier ou sur un \u00e9cran d\u2019ordinateur\u2026).<\/p>\n<p>Le coeur du \u201cjob\u201d de l\u2019ACP, c\u2019est donc justement de <strong>calculer ces composantes principales \u00e0 partir des variables de base<\/strong>.<\/p>\n<p>Tentons une analogie.<\/p>\n<p>Imaginez une banane par exemple. Il s\u2019agit d\u2019un objet 3D. Si je veux le repr\u00e9senter en 2D, selon l\u2019angle que je choisirai pour la repr\u00e9senter, je vais obtenir quelque chose de plus ou moins \u201creconnaissable\u201d.<\/p>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/ACP\/ACP_banane.png\" alt=\"\" \/><\/p>\n<p>A gauche, l\u2019angle choisi est tel qu\u2019on ne reconna\u00eet pas la forme de la banane. A droite, c\u2019est bien mieux, car l\u2019angle choisi permet de reconna\u00eetre le c\u00f4t\u00e9 allong\u00e9 et courb\u00e9 caract\u00e9ristique. <small>Notez que dans les deux cas, la couleur est une information suppl\u00e9mentaire bienvenue pour l\u2019interpr\u00e9tation ;-).<\/small>.<\/p>\n<p>Eh bien, pour r\u00e9aliser l\u2019image de droite, un dessinateur fait un peu l\u2019\u00e9quivalent d\u2019une ACP en trouvant un \u201cangle\u201d (ou plus pr\u00e9cis\u00e9ment un \u201cplan\u201d d\u00e9fini par deux axes) qui va apporter le plus d\u2019information possible sur l\u2019objet, de sorte que l\u2019oeil humain puisse interpr\u00e9ter de quoi il s\u2019agit.<\/p>\n<p>Quand on travaille sur un jeu de donn\u00e9es \u00e0 N>>2 dimensions (et g\u00e9n\u00e9ralement N>>3) il est \u00e9videmment plus difficile d\u2019avoir une image mentale de la structure\/forme de l\u2019objet d\u2019origine que dans le cas d\u2019une banane\u2026 La repr\u00e9sentation \u201cla plus juste possible\u201d de cet objet en 1D, 2D ou 3D que propose l\u2019ACP va permettre d\u2019appr\u00e9hender cette structure\/forme.<\/p>\n<h1>Calcul des composantes principales<\/h1>\n<p>Je ne rentrerai pas ici dans le d\u00e9tail du calcul r\u00e9alis\u00e9 dans le cadre d\u2019une ACP. Il y a derri\u00e8re des notions de maths qui ne sont pas forc\u00e9ment tr\u00e8s accessibles (c\u2019est selon votre sensibilit\u00e9, votre cursus, et la fra\u00eecheur de vos \u00e9tudes mais par exemple, j\u2019ai pour ma part fait une pr\u00e9pa bio\/v\u00e9to il y a une quinzaine d\u2019ann\u00e9es -et donc pas mal de maths- mais le m\u00e9canisme exact du calcul me semble toujours un peu difficile \u00e0 appr\u00e9hender!).<\/p>\n<p>N\u00e9anmoins, si vous \u00eates frustr\u00e9s de ne pas comprendre \u201cen profondeur\u201d la m\u00e9thode et que vous pensez que cela nuit \u00e0 la qualit\u00e9 des interpr\u00e9tations que vous faites de vos analyses factorielles, je recommande les mat\u00e9riels p\u00e9dagogiques relatifs au package <a href=\"http:\/\/factominer.free.fr\/index_fr.html\">FactoMineR<\/a>, et en particulier pour les ACP en particulier <a href=\"https:\/\/www.youtube.com\/watch?v=1QPRsg3Bxok\">cette vid\u00e9o<\/a> de Fran\u00e7ois Husson, un des auteurs du package. C\u2019est tr\u00e8s bien amen\u00e9 et expliqu\u00e9! Si vous tombez au bon moment, vous pouvez m\u00eame suivre <a href=\"http:\/\/factominer.free.fr\/course\/MOOC_fr.html\">le MOOC<\/a> (je l\u2019ai suivi moi-m\u00eame il y a quelques ann\u00e9es et cela m\u2019a bien aid\u00e9 \u00e0 mettre mes id\u00e9es au clair).<\/p>\n<h1>R\u00e9aliser l\u2019ACP<\/h1>\n<p>Il existe plusieurs packages pour r\u00e9aliser les ACP. Les <strong>deux principaux<\/strong>, <code>FactoMineR<\/code> et <code>ade4<\/code> ont \u00e9t\u00e9 d\u00e9velopp\u00e9s par des \u00e9quipes fran\u00e7aises (cocorico!?). Et ce n\u2019est gu\u00e8re surprenant, les analyses factorielles elles-m\u00eames \u00e9tant tr\u00e8s fran\u00e7aises (comme l\u2019entrec\u00f4te-frites?) puisqu\u2019elles ont \u00e9t\u00e9 mises au point dans les ann\u00e9es 70 notamment par un certain Jean-Paul Benz\u00e9cri et par son \u00e9quipe.<\/p>\n<p>Le package <code>ade4<\/code> a \u00e9t\u00e9 d\u00e9velopp\u00e9 (et est maintenu) par une \u00e9quipe lyonnaise, qui travaille notamment avec des biologistes de l\u2019\u00e9volution et des \u00e9cologues (cela se ressent sur les exemples d\u2019application d\u2019ACP avec ce package que vous pourrez trouver!). Le package <code>FactoMineR<\/code> a quant \u00e0 lui \u00e9t\u00e9 d\u00e9velopp\u00e9 (et est maintenu) par une \u00e9quipe rennaise, qui travaille dans un univers un peu plus \u201cagronomique\u201d. Pour les m\u00e9thodes les plus centrales (ACP, AFC), les diff\u00e9rences entre ces packages sont \u00e0 mon avis mineures et une fois que vous avez compris le principe d\u2019une ACP <strong>vous pouvez sans inconv\u00e9nient majeur opter pour l\u2019un ou l\u2019autre<\/strong>. Pour ma part, bien que Lyonnaise, j\u2019ai une <strong>petite pr\u00e9f\u00e9rence pour FactoMineR<\/strong> car je trouve que c\u2019est un peu plus facile de s\u2019y retrouver (que ce soit pour les noms des fonctions ou des objets renvoy\u00e9s, ou pour les supports p\u00e9dagogiques).<\/p>\n<p>Du coup, pour vous montrer un exemple d\u2019ACP, je vais partir sur un exemple avec <code>FactoMineR<\/code>. D\u2019ailleurs, je ne me casse vraiment pas la t\u00eate ici puisque je reprends le jeu de donn\u00e9es et l\u2019exemple propos\u00e9 sur <a href=\"http:\/\/factominer.free.fr\/factomethods\/analyse-en-composantes-principales.html\">le site de FactoMineR<\/a> lui-m\u00eame<\/p>\n<pre><code>library(FactoMineR)\ndata(decathlon)\nhead(decathlon)\n\n##          100m Long.jump Shot.put High.jump  400m 110m.hurdle Discus Pole.vault Javeline 1500m Rank Points Competition\n## SEBRLE  11.04      7.58    14.83      2.07 49.81       14.69  43.75       5.02    63.19 291.7    1   8217    Decastar\n## CLAY    10.76      7.40    14.26      1.86 49.37       14.05  50.72       4.92    60.15 301.5    2   8122    Decastar\n## KARPOV  11.02      7.30    14.77      2.04 48.37       14.09  48.95       4.92    50.31 300.2    3   8099    Decastar\n## BERNARD 11.02      7.23    14.25      1.92 48.93       14.99  40.87       5.32    62.77 280.1    4   8067    Decastar\n## YURKOV  11.34      7.09    15.19      2.10 50.42       15.31  46.26       4.72    63.44 276.4    5   8036    Decastar\n## WARNERS 11.11      7.60    14.31      1.98 48.68       14.23  41.10       4.92    51.77 278.1    6   8030    Decastar\n<\/code><\/pre>\n<p>Il s\u2019agit donc d\u2019un jeu de donn\u00e9es qui comprend les <strong>r\u00e9sultats pour diff\u00e9rentes \u00e9preuves du D\u00e9cathlon (en colonnes) de plusieurs athl\u00e8tes (en lignes)<\/strong>.<\/p>\n<p>Les 10 premi\u00e8res colonnes correspondent aux r\u00e9sultats (quantitatifs) aux 10 \u00e9preuves du D\u00e9cathlon. Attention, pour les \u00e9preuves de vitesse (<code>100m<\/code>, <code>110m.hurdle<\/code>, <code>400m<\/code>, <code>1500m<\/code>), les valeurs \u00e9lev\u00e9es correspondent \u00e0 de mauvaises performances!\u2026 Les variables suppl\u00e9mentaires \u201cRank\u201d, et \u201cPoints\u201d correspondent respectivement aux rang, et nombre de points total de chaque athl\u00e8te, La variable suppl\u00e9mentaire \u201cCompetition\u201d indique lors de quelle comp\u00e9tition ces r\u00e9sultats ont \u00e9t\u00e9 obtenus.<\/p>\n<p>R\u00e9alisons une ACP sur les 10 premi\u00e8res variables (les variables quantitatives) pour avoir un \u201caper\u00e7u\u201d de la structure des r\u00e9sultats des athl\u00e8tes aux diff\u00e9rentes \u00e9preuves. J\u2019utilise pour ce faire une fonction qui s\u2019appelle <code>PCA()<\/code>:<\/p>\n<pre><code>resultat=PCA(decathlon[,1:10], graph=FALSE)\n<\/code><\/pre>\n<p>Et voil\u00e0! \u00e7a tourne en une demi-seconde, et renvoie (en plus de graphiques si on ne pr\u00e9cise pas graph=FALSE) le r\u00e9sultat suivant.<\/p>\n<pre><code>resultat\n\n## **Results for the Principal Component Analysis (PCA)**\n## The analysis was performed on 41 individuals, described by 10 variables\n## *The results are available in the following objects:\n## \n##    name               description                          \n## 1  \"$eig\"             \"eigenvalues\"                        \n## 2  \"$var\"             \"results for the variables\"          \n## 3  \"$var$coord\"       \"coord. for the variables\"           \n## 4  \"$var$cor\"         \"correlations variables - dimensions\"\n## 5  \"$var$cos2\"        \"cos2 for the variables\"             \n## 6  \"$var$contrib\"     \"contributions of the variables\"     \n## 7  \"$ind\"             \"results for the individuals\"        \n## 8  \"$ind$coord\"       \"coord. for the individuals\"         \n## 9  \"$ind$cos2\"        \"cos2 for the individuals\"           \n## 10 \"$ind$contrib\"     \"contributions of the individuals\"   \n## 11 \"$call\"            \"summary statistics\"                 \n## 12 \"$call$centre\"     \"mean of the variables\"              \n## 13 \"$call$ecart.type\" \"standard error of the variables\"    \n## 14 \"$call$row.w\"      \"weights for the individuals\"        \n## 15 \"$call$col.w\"      \"weights for the variables\"\n<\/code><\/pre>\n<p>Ce r\u00e9sultat comprend 3 \u00e9l\u00e9ments principaux:<\/p>\n<ul>\n<li>\n<p><code>eig<\/code> des infos sur les <code>eigenvalues<\/code> (ou \u201cvaleurs propres\u201d), qui vont nous permettre d\u2019\u00e9valuer la <strong>qualit\u00e9 de l\u2019ACP<\/strong>. J\u2019y reviendrai dans la partie suivante.<\/p>\n<\/li>\n<li>\n<p><code>ind<\/code>: des infos sur les <strong>individus<\/strong> (lignes du tableau initial)<\/p>\n<\/li>\n<li>\n<p><code>var<\/code>: des infos sur les <strong>variables<\/strong> (colonnes du tableau initial)<\/p>\n<\/li>\n<\/ul>\n<p><code>ind<\/code> et <code>var<\/code> contiennent tous deux des \u00e9l\u00e9ments d\u2019information correspondant \u00e0<\/p>\n<ul>\n<li>\n<p><code>coord<\/code> les <strong>coordonn\u00e9es<\/strong> des individus ou variables sur les axes principaux<\/p>\n<\/li>\n<li>\n<p><code>cos2<\/code> qui permet d\u2019\u00e9valuer si un individu ou une variable en particulier est <strong>bien repr\u00e9sent\u00e9<\/strong> sur les axes principaux<\/p>\n<\/li>\n<li>\n<p><code>contrib<\/code> qui permet d\u2019\u00e9valuer le <strong>\u201cpoids\u201d<\/strong> d\u2019un individu ou d\u2019une variable particuliers dans le <strong>calcul des axes<\/strong>.<\/p>\n<\/li>\n<\/ul>\n<p>Les r\u00e9sultats graphiques d\u2019une ACP correspondent usuellement \u00e0 la <strong>repr\u00e9sentation des coordonn\u00e9es des individus et des variables<\/strong> dans l\u2019espace d\u00e9fini par les axes principaux (en pratique, on en retient souvent 2 par d\u00e9faut). C\u2019est le cas ici, si on laisse FactoMineR nous proposer une repr\u00e9sentation graphique de l\u2019ACP (en ne pr\u00e9cisant pas <code>graph=FALSE<\/code>).<\/p>\n<pre><code>resultat=PCA(decathlon[,1:10])\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/ACP\/runPCA_and_graph-1.png\" alt=\"\" \/><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/ACP\/runPCA_and_graph-2.png\" alt=\"\" \/><\/p>\n<p>Le premier graphique correspond aux individus, le deuxi\u00e8me aux variables.<\/p>\n<p>Ces deux repr\u00e9sentations sont (rappelons-le) <strong>imparfaites<\/strong> puisqu\u2019en r\u00e9duisant le nombre de dimensions du jeu de donn\u00e9es de 10 \u00e0 2 on a <strong>perdu une partie de l\u2019information contenue par le jeu de donn\u00e9es<\/strong>.<\/p>\n<h1>Qualit\u00e9 de l\u2019ACP<\/h1>\n<p>Les eigenvalues apportent une information quant \u00e0 la qualit\u00e9 de l\u2019ACP en permettant de calculer la <strong>proportion de variance<\/strong> (ou inertie) du jeu de donn\u00e9e initial qui est <strong>port\u00e9e par les composantes principales issues de l\u2019analyse<\/strong>.<\/p>\n<pre><code>resultat$eig\n\n##         eigenvalue percentage of variance cumulative percentage of variance\n## comp 1   3.2719055              32.719055                          32.71906\n## comp 2   1.7371310              17.371310                          50.09037\n## comp 3   1.4049167              14.049167                          64.13953\n## comp 4   1.0568504              10.568504                          74.70804\n## comp 5   0.6847735               6.847735                          81.55577\n## comp 6   0.5992687               5.992687                          87.54846\n## comp 7   0.4512353               4.512353                          92.06081\n## comp 8   0.3968766               3.968766                          96.02958\n## comp 9   0.2148149               2.148149                          98.17773\n## comp 10  0.1822275               1.822275                         100.00000\n<\/code><\/pre>\n<p>Par construction, l\u2019ACP calcule et ordonne les composantes pour que la premi\u00e8re porte plus d\u2019information que la deuxi\u00e8me, qui en porte plus que la troisi\u00e8me, etc.<\/p>\n<p>Les valeurs dans la deuxi\u00e8me colonne (<code>percentage of variance<\/code>) correspondent en effet aux valeurs d\u2019eigenvalues divis\u00e9es par le nombre initial de variables (10).<\/p>\n<p>On retrouve dans cette colonne <code>percentage of variance<\/code> les valeurs de 32.72% et 17.37% qui \u00e9taient indiqu\u00e9es dans les \u00e9tiquettes d\u2019axes des deux graphiques ci-dessus. Ainsi, avec une repr\u00e9sentation 2D (correspondant aux deux premiers axes principaux) on arrive \u00e0 repr\u00e9senter 32.7+17.3=50.0% de l\u2019information contenue dans le jeu de donn\u00e9es initial.<\/p>\n<p>*\u00a0\u00bbEt alors, __% d\u2019inertie port\u00e9e par mes deux premiers axes, c\u2019est bien ou c\u2019est pas bien?\u00a0\u00bb* m\u2019entends-je demander parfois.<\/p>\n<p>Eh bien mon bon monsieur, ma bonne dame, pt\u00eat ben qu\u2019oui, pt\u00eat ben qu\u2019non. Il n\u2019existe \u00e0 ma connaissance pas de convention sur une valeur qui serait \u201csuffisamment bonne\u201d.<\/p>\n<p>Ici, on a <strong>50% de l\u2019info sur 2 axes<\/strong>, alors qu\u2019on avait <strong>10 variables \u00e0 la base<\/strong>. Avant de r\u00e9aliser l\u2019ACP, deux dimensions correspondaient donc \u00e0 2 fois un dixi\u00e8me de l\u2019inertie du jeu de donn\u00e9es, soit 20%. L\u2019ACP a donc permis de passer de 20% \u00e0 50% de l\u2019info repr\u00e9sentable par un graphique 2D: \u00e7a semble honn\u00eate, tant qu\u2019on garde \u00e0 l\u2019esprit dans les interpr\u00e9tations que la moiti\u00e9 de l\u2019info est perdue dans notre tentative de simplification.<\/p>\n<p>Si on avait eu \u00e0 la base 4 variables dans le jeu de donn\u00e9es, 50% de l\u2019info repr\u00e9sent\u00e9e par les deux premiers axes de l\u2019ACP, \u00e7\u2019aurait \u00e9t\u00e9 clairement tr\u00e8s mauvais, puisque 2 sur 4 des variables initiales auraient d\u00e9j\u00e0 pu apporter cette part d\u2019info. Autrement dit, l\u2019ACP n\u2019aurait servi \u00e0 strictement rien.<\/p>\n<p><strong>La proportion d\u2019info port\u00e9e par les composantes principales d\u00e9pend \u00e9videmment du nombre de variables en entr\u00e9e.<\/strong><\/p>\n<p>Mais pas que.<\/p>\n<p>Ce qui permet \u00e0 l\u2019ACP de \u201cr\u00e9duire en dimensionnalit\u00e9\u201d un jeu de donn\u00e9es, c\u2019est l\u2019<strong>existence de corr\u00e9lations entre les variables d\u2019origine<\/strong>.<\/p>\n<p>Si dans un jeu de donn\u00e9es on a deux groupes de variables extr\u00eamement inter-corr\u00e9l\u00e9es, alors tr\u00e8s bien: deux composantes principales seront \u00e0 m\u00eame de repr\u00e9senter relativement bien les deux types d\u2019effets. Si en revanche les N>>2 variables sont tr\u00e8s peu corr\u00e9l\u00e9es les unes aux autres, alors on n\u2019a aucune chance de \u201cr\u00e9sumer\u201d fid\u00e8lement le jeu de donn\u00e9es dans son ensemble \u00e0 l\u2019aide de quelques composantes principales\u2026<\/p>\n<h1>Interpr\u00e9tation<\/h1>\n<p>On peut interpr\u00e9ter les sorties graphiques d\u2019une ACP de trois mani\u00e8res:<\/p>\n<ul>\n<li>en examinant la <strong>position des variables dans le nouveau rep\u00e8re<\/strong> (et en comparant la position des variables les unes par rapport aux autres)<\/li>\n<li>en examinant la <strong>position des individus dans le nouveau rep\u00e8re<\/strong> (et en comparant la position des individus les uns par rapport aux autres)<\/li>\n<li>en examinant la <strong>position des individus par rapport \u00e0 la position des variables<\/strong> dans le nouveau rep\u00e8re<\/li>\n<\/ul>\n<h2>Position des variables<\/h2>\n<p>La repr\u00e9sentation des variables dans le plan factoriel, aussi appel\u00e9 <strong>cercle des corr\u00e9lations<\/strong>, permet d\u2019\u00e9valuer la liaison entre les variables.<\/p>\n<p>Plus l\u2019<strong>angle entre deux variables est petit, plus la corr\u00e9lation est proche de 1<\/strong>. Si l\u2019<strong>angle est droit<\/strong>, la corr\u00e9lation est <strong>proche de 0<\/strong>. Si l\u2019<strong>angle est de 180\u00b0<\/strong> (les fl\u00e8ches sont oppos\u00e9es) alors la corr\u00e9lation est <strong>proche de -1<\/strong>. <small> tout \u00e7a est s\u2019applique \u00e9videmment si les variables sont \u201cbien repr\u00e9sent\u00e9es\u201d par les deux premiers axes de l\u2019ACP<\/small><\/p>\n<pre><code>plot.PCA(resultat, choix=\"var\")\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/ACP\/pca_vars-1.png\" alt=\"\" \/><\/p>\n<p>Ici par exemple, les performances des sportifs semblent corr\u00e9l\u00e9es positivement pour les disciplines de \u201cforce\u201d <code>Discus<\/code>,<code>Shot.put<\/code>,<code>High.jump<\/code>. Les disciplines de \u201cvitesse\u201d <code>400m<\/code>, <code>110m.hurdle<\/code> <code>100m<\/code> sont aussi positivement corr\u00e9l\u00e9es les unes aux autres. La performance en <code>Long.jump<\/code> est inversement corr\u00e9l\u00e9e aux r\u00e9sultats de vitesse (rappelons que les r\u00e9sultats de vitesse sont des temps, donc une bonne performance sur les \u00e9preuves de vitesse est corr\u00e9l\u00e9e \u00e0 une bonne performance en saut en longueur).<\/p>\n<p>La qualit\u00e9 de repr\u00e9sentation d\u2019une variable par un axe peut \u00eatre \u00e9valu\u00e9e \u00e0 travers le <strong>cosinus carr\u00e9<\/strong> de l\u2019angle entre la variable et l\u2019axe consid\u00e9r\u00e9. Le cosinus correspond \u00e0 la projection orthogonale de la pointe de la fl\u00e8che sur l\u2019axe. Du coup, (petit rappel du th\u00e9or\u00e8me de Pythagore) la qualit\u00e9 de repr\u00e9sentation sur les deux axes (i.e.\u00a0la somme des cosinus carr\u00e9s) correspond \u00e0 la longueur de la fl\u00e8che: <strong>plus la pointe de la fl\u00e8che est proche du cercle, plus la repr\u00e9sentation de la variable dans le plan factoriel est \u201cde qualit\u00e9\u201d<\/strong>.<\/p>\n<p>Rappelons que le premier axe correspond \u00e0 la plus grande part d\u2019inertie du jeu de donn\u00e9es initial. Ici, on voit que le jeu de donn\u00e9es est structur\u00e9 principalement par (\u00e0 droite) les bonnes performances (i.e.\u00a0petites valeurs pour les \u00e9preuves de vitesse et grosses valeurs pour toutes les autres) vs (\u00e0 gauche) les mauvaises performances.<\/p>\n<h2>Position des individus<\/h2>\n<pre><code>plot.PCA(resultat, choix=\"ind\")\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/ACP\/pca_inds-1.png\" alt=\"\" \/><\/p>\n<p>Ce graphique montre les <strong>\u201cressemblances\u201d entre individus<\/strong>. Plus ils sont proches (comme par exemple Parkhomenko et Korkizoglou, en haut \u00e0 gauche, ou Karpov, Sebrle et Clay \u00e0 droite), et plus leurs \u201cprofils\u201d de performance sont vraisemblablement similaires.<\/p>\n<p>Les coordonn\u00e9es des individus peuvent ainsi classiquement servir de base pour d\u00e9finir des classes d\u2019individus \u00e0 travers une classification hi\u00e9rarchique ascendante (par exemple).<\/p>\n<p>Comme dans le cas des variables, les individus <strong>les mieux repr\u00e9sent\u00e9s par le plan factoriel sont ceux les plus \u00e9loign\u00e9s du centre<\/strong> (m\u00eame si ici on ne peut pas lire directement les valeurs de cosinus sur le graphique &#8211; elles sont en revanche disponible dans l\u2019objet <code>resultat<\/code> issu de l\u2019ACP).<\/p>\n<p>La <strong>position des individus<\/strong> peut en outre \u00eatre interpr\u00e9t\u00e9e <strong>en lien avec la position des variables<\/strong>. Par exemple Casarsa, tout en haut \u00e0 gauche, a vraisemblablement eu des r\u00e9sultats assez mauvais dans toutes les \u00e9preuves, tandis que Sebrle (\u00e0 droite, en haut) a plut\u00f4t eu de bons r\u00e9sultats, en particulier dans les \u00e9preuves \u201cde force\u201d.<\/p>\n<h1>Repr\u00e9sentations graphiques<\/h1>\n<p>Pour l\u2019instant je me suis content\u00e9e d\u2019utiliser les repr\u00e9sentations graphiques propos\u00e9es par le package FactoMineR lui-m\u00eame. Elles peuvent \u00eatre suffisantes pour une premi\u00e8re exploration des r\u00e9sultats d\u2019ACP mais ne suffisent g\u00e9n\u00e9ralement pas \u00e0 produire des graphiques suffisemment lisibles et jolis pour (par exemple) faire partie d\u2019articles, rapports ou autres.<\/p>\n<p>Il existe divers packages qui permettent d\u2019am\u00e9liorer et param\u00e9trer finement les graphiques typiques d\u2019une ACP. Si vous travaillez avec le package <code>FactoMineR<\/code>, le package <code>factoextra<\/code> est une possibilit\u00e9 int\u00e9ressante. Voyez <a href=\"un%20billet\">ici<\/a> tr\u00e8s bien fait qui vous montrera quelques exemples d\u2019utilisation de ce package (Vous ne serez de plus pas trop perdus car ce billet utilise aussi des donn\u00e9es d\u2019exemple li\u00e9es au D\u00e9cathlon -attention tout-de-m\u00eame il s\u2019agit d\u2019un jeu de donn\u00e9es <code>decathlon2<\/code> et non <code>decathlon<\/code> ce qui explique les quelques diff\u00e9rences de r\u00e9sultats que vous pouvez remarquer).<\/p>\n<p>Pour ma part je suis totalement conquise par le package <code>explor<\/code> de Julien Barnier pour explorer mes r\u00e9sultats d\u2019ACP (plus d\u2019infos <a href=\"https:\/\/juba.github.io\/explor\/articles\/introduction_fr.html\">ici<\/a>).<\/p>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/ACP\/logo_explor.png\" width=\"120\" \/><\/p>\n<p>Ce package produit une <strong>interface Shiny<\/strong> qui vous permet de visualiser vos r\u00e9sultats et param\u00e9trer finement vos sorties graphiques, d\u00e9caler les \u00e9tiquettes qui se chevaucheraient, etc. Et vous pouvez suite \u00e0 ces manipulations soit exporter les figures (au format et dimensions de votre choix), soit copier le code R qui permet de produire les graphiques en question (dans un souci de reproductibilit\u00e9 de vos analyses\u2026).<\/p>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/ACP\/capture_explor.png\" width=\"750\" \/><\/p>\n<p>Pour lancer cette interface, c\u2019est tr\u00e8s simple. On r\u00e9alise l\u2019ACP avec le package de son choix (FactoMineR OU ade4!) et on lance la fonction <code>explor()<\/code> avec ce r\u00e9sultat d\u2019ACP en objet:<\/p>\n<pre><code>resultat=PCA(decathlon, quanti.sup=11:12,quali.sup=13, graph=FALSE)\nexplor::explor(resultat)\n<\/code><\/pre>\n<p>Ici j\u2019ai pr\u00e9cis\u00e9 que mon jeu de donn\u00e9es comprenait des <strong>variables suppl\u00e9mentaires<\/strong> (que je d\u00e9signe par le num\u00e9ro de colonne) de mani\u00e8re \u00e0 pouvoir les utiliser dans les sorties graphiques.<\/p>\n<p><small> Petit \u201ctweak\u201d d\u2019utilisation de ce package: Il m\u2019arrive \u00e9galement, quand je souhaite faire des graphiques qui sortent un peu des sentiers battus avec des r\u00e9sultats issus d\u2019analyses factorielles, de r\u00e9cup\u00e9rer les r\u00e9sultats mis en forme par la fonction <code>prepare_results()<\/code> de ce package. Ensuite j\u2019utilise les tableaux en sortie avec le combo magique tidyr-dplyr-ggplot2 et hop, je suis \u00e0 m\u00eame d\u2019obtenir exactement le graphique que j\u2019ai en t\u00eate\u2026<\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tr\u00e8s r\u00e9guli\u00e8rement, dans le cadre de ma mission de support \u00e0 la recherche, on me demande de r\u00e9aliser (ou d\u2019aider \u00e0 r\u00e9aliser) des ACP (Analyses en Composantes Principales). En g\u00e9n\u00e9ral cette demande ne s\u2019ensuit pas d\u2019un fol enthousiasme de ma part: je me sens un peu comme une cuisini\u00e8re \u201cbistronomique\u201d \u00e0 qui on demanderait tout le temps une entrec\u00f4te-frites. Je peux comprendre le c\u00f4t\u00e9 \u201ctradi mais app\u00e9tent\u201d mais pour moi.. <a href=\"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/acp\/\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-1310","post","type-post","status-publish","format-standard","hentry","category-tous-les-posts"],"_links":{"self":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/1310","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/comments?post=1310"}],"version-history":[{"count":3,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/1310\/revisions"}],"predecessor-version":[{"id":1313,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/1310\/revisions\/1313"}],"wp:attachment":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/media?parent=1310"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/categories?post=1310"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/tags?post=1310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}