L'analyse en composantes principales (avec R)

L'ACP, ou Ana­lyse en Com­po­santes Prin­ci­pales, est une méthode d'exploration de don­nées qui consiste à réduire la dimen­sion­na­li­té du pro­blème pour en extraire l'essentiel. Par une pro­jec­tion dans un espace plus petit, on réduit le nombre de variables, et si on réduit suf­fi­sam­ment on peut en faire un outil de diag­nos­tic gra­phique. Comme c'est une pro­jec­tion, il est impor­tant de com­prendre qu'on perd de l'information dans le pro­ces­sus, mais cela per­met d'interpréter plus faci­le­ment les don­nées.

Table des matières :

La méthode

En pra­tique, on part d'un tableau avec N lignes repré­sen­tant les indi­vi­dus mesu­rés — par exemple 1000 sou­ris — et P colonnes repré­sen­tant les variables mesu­rées — par exemple la taille, le poids, l'âge etc. des sou­ris. L'idée, c'est qu'il est facile de repré­sen­ter sur un gra­phique une situa­tion à deux variables : la taille sur l'axe des x, le poids sur l'axe des y, un point par sou­ris. On pour­rait ima­gi­ner ajou­ter un 3ème axe pour l'âge et visua­li­ser les points dans un "cube" en 3D. Mais à par­tir de 4 variables, la visua­li­sa­tion devient impos­sible. Pour réduire la dimen­sion, on va essayer de ne gar­der que l'essentiel. L'ACP va trans­for­mer le tableau pour qu'il ne compte plus que deux (nou­velles) colonnes tout en conser­vant un maxi­mum d'information.

Sans entrer dans les détails, la trans­for­ma­tion implique d'abord une rota­tion des axes de coor­don­nées : le pre­mier axe sui­vra la direc­tion la plus "allon­gée" (ima­gi­nez un pois­son ; l'axe va de la tête à la queue), le second une direc­tion per­pen­di­cu­laire (du ventre vers le dos), le troi­sième per­pen­di­cu­laire aux deux pre­miers (l'épaisseur du pois­son), etc. Cela sert à maxi­mi­ser la varia­bi­li­té des points le long du pre­mier axe, puis la varia­bi­li­té du reste le long du second, etc. de sorte qu'il n'y ait presque plus de varia­tion le long des axes sui­vants. Ces nou­veaux axes s'appellent com­po­santes prin­ci­pales ; ce sont P vec­teurs de taille P. Mathé­ma­ti­que­ment, ce sont les vec­teurs propres de la matrice de cova­riance de notre table, et on fait un chan­ge­ment de base.

poisson_orig_axes2
Axes du repère d'origine (image d'origine : wiki​me​dia​.org)
poisson_pca_axes2
Axes de l'ACP (com­po­santes prin­ci­pales)

 

Ensuite on fait une sélec­tion des com­po­santes : plus on en garde, plus com­plè­te­ment on peut recom­po­ser l'objet (si on n'a gar­dé que les deux pre­mières com­po­santes du pois­son, on ne peut recons­truire qu'un pois­son tout plat).

L'important dans tout ca, c'est que si les deux pre­mières com­po­santes cumulent une grande por­tion de la varia­bi­li­té totale, on peut igno­rer les autres et les oppo­ser dans un gra­phique.

Un exemple avec R

Ici nous par­ti­rons du jeu de don­nées "iris" déjà inclus dans la plu­part des dis­tri­bu­tions de R. La table res­semble à ça :

Il y a 150 indi­vi­dus et 4 dimensions/​variables. Les 150 sont grou­pés en 3 espèces seto­sa, ver­si­co­lor et vir­gi­ni­ca. Ce qu'on vou­drait savoir, c'est s'il y a une dif­fé­rence impor­tante entre les espèces, et s'il y en a une, quelles sont les variables qui contri­buent le plus à expli­quer cette dif­fé­rence.

Il y a deux com­mandes à choix pour faire l'ACP en R (j'expliquerai plus tard pour­quoi) : prcomp et prin­comp. Ici je vais uti­li­ser prcomp ; avec prin­comp le résul­tat est presque le même, et l'utilisation est iden­tique aux noms des attri­buts près.

Les com­po­santes prin­ci­pales (PCx, pour "Prin­ci­pal Com­ponent") sont les colonnes de pca$rotation :

On voit par exemple que l'axe "PC1" est une com­bi­nai­son de 0.86 x Petal.Length, 0.36 x de Sepal.Length et Petal.Width, et ‑0.08 x Sepal.Width - c'est-à-dire que la direc­tion de la PC1 est à peu près ali­gnée avec celle de Petal.Length et qua­si per­pen­di­cu­laire à celle de Sepal.Width.  On appelle aus­si ces nombres "loa­dings".

pca$sdev donne la frac­tion d'information (sdev="stan­dard devia­tion") conte­nue dans cha­cune des com­po­santes :

Ain­si les deux pre­mières com­po­santes à elles seules contiennent 97.77% de l'information, il est donc rai­son­nable de gar­der seule­ment deux variables en ne per­dant que 2.33% d'info, ou même une seule (ce que je ferais en pra­tique, mais ici on en gar­de­ra deux pour plus de géné­ra­li­té). On peut aus­si rendre compte de ces pro­por­tions avec un bar plot des variances :

sdev_iris
Les variances des com­po­santes prin­ci­pales.

 

Je ne vous cache pas qu'on peut en pro­duire un plus joli soi-même.

Les don­nées trans­for­mées par rota­tion sont dans pca$x ; chaque colonne est la pro­jec­tion des points sur l'une des com­po­santes prin­ci­pales. Ain­si si on garde seule­ment les deux pre­mières, on a la pro­jec­tion des points dans le plan PC1-PC2 et on peut en faire un gra­phique qu'on appelle "biplot" :

L'axe hori­zon­tal est notre PC1, l'axe ver­ti­cal la PC2. En colo­riant les points selon l'espèce de plante, on voit que la PC1 les dis­tingue presque par­fai­te­ment :

pca_iris
ACP sur les don­nées "iris"

 

En fait on a vu que la com­po­sante 2 n'est pas très utile, et on pour­rait très bien choi­sir de réduire encore la dimen­sion et sépa­rer nos points selon un seul axe :

 

pca_1d_iris
Pro­jec­tion sur la pre­mière com­po­sante prin­ci­pale uni­que­ment.

 

L'interprétation ensuite est la sui­vante : d'abord l'espèce seto­sa (à gauche) est net­te­ment plus recon­nais­sable que les deux autres entre elles. Ensuite, comme c'est la com­po­sante 1 qui sépare les espèces, on regarde de quoi elle est faite. On avait vu qu'elle était com­po­sée prin­ci­pa­le­ment de Petal.Length ; on en déduit que c'est prin­ci­pa­le­ment à la lon­gueur des pétales qu'on recon­naît les espèces. A vrai dire l'interprétation est sou­vent dif­fi­cile, et on se contente alors de remar­quer que les groupes sont bien différenciés/​groupés comme on l'attend.

Il existe aus­si une com­mande R qui fait le biplot toute seule mais… cha­cun ses goûts. Les flèches qui appa­raissent sur le gra­phique sont les anciens axes de coor­don­nées (il y a aura donc P flèches — et on ne peut pas en réduire le nombre, ce qui peut deve­nir très lourd). Il est aus­si cen­tré en zéro et réduit (ce n'est pas impor­tant pour l'interprétation).

biplot_iris
Biplot des don­nées iris

Autres applications

On peut se ser­vir de l'ACP par exemple en RNA-seq pour regar­der si l'expression glo­bale des gènes est très dif­fé­rente d'un groupe de patients à un autre, ou si les répli­cats de l'expérience sont suf­fi­sam­ment sem­blables — dans le cas contraire ça per­met d'éliminer les mau­vais échan­tillons et rendre l'analyse plus robuste. On consi­dère alors ces fameuses tables avec un gène par ligne et une colonne par échan­tillon, indi­quant dans chaque case l'expression d'un gène dans un échan­tillon par­ti­cu­lier.

De façon simi­laire, on peut mesu­rer la pré­sence ou l'absence de chaque varia­tion du génome (SNP) de 3000 Euro­péens, et com­pa­rer le graphe de l'ACP à la carte de la région, c'est plu­tôt spec­ta­cu­laire. C'est aus­si un bon exemple de cas où l'interprétation découle direc­te­ment de la dis­po­si­tion des points et pas du conte­nu des com­po­santes prin­ci­pales :

genes_in_europe
Biplot d'une ACP sur les dif­fé­rences géné­tiques en Europe (J. Novembre et al., Nature 2008).

 

Dans des contextes dif­fé­rents, on peut l'appliquer pour la com­pres­sion d'images, la recon­nais­sance de mou­ve­ments, etc.

Fina­le­ment, c'est aus­si un moyen de trou­ver la "meilleure" droite pas­sant par un nuage de points, un peu comme on le fait en régres­sion linéaire, avec l'avantage que le résul­tat est le même si on échange les axes (ce n'est pas le cas de la régres­sion !). Cette droite passe par le centre du nuage dans la direc­tion du vec­teur PC1.

bestline
En rouge : la pre­mière com­po­sante prin­ci­pale. En bleu : les droites de régres­sion X~Y et Y~X.

 

En bonus, le code pour ce der­nier gra­phique :

Prcomp et princomp

La dif­fé­rence entre ces deux com­mandes R se trouve dans la méthode mathé­ma­tique uti­li­sée. La décom­po­si­tion en com­po­santes prin­ci­pales peut se faire soit par SVD (Décom­po­si­tion en Valeurs Sin­gu­lières), soit par recherche des vec­teurs propres de la matrice de cova­riance. Ain­si, on remarque que prcomp (SVD) est plus rapide, et même que si on essaye avec la matrice trans­po­sée (voir plus bas), prin­comp va se plaindre car il n'existe pas suf­fi­sam­ment de vec­teurs propres :

alors que pour prcomp tout va très bien :

De plus, le cal­cul de la SVD est plus stable numé­ri­que­ment. Les noms des attri­buts sont aus­si dif­fé­rents. Voi­ci la cor­res­pon­dance si on y tient :

prcomp -> prin­comp
pca$x -> pca$scores
pca$rotation -> pca$loadings[,1:4]
pca$sdev -> pca$sdev

Pour aller plus loin

- On peut aus­si tou­jours s'intéresser au pro­blème inverse en trans­po­sant la table des don­nées. Par exemple, si on a une table avec une ligne par gène et une colonne par condi­tion expé­ri­men­tale, l'ACP telle que nous l'avons pré­sen­tée res­sor­ti­ra un gra­phique avec un point par gène, et on espère voir des "clus­ters" de gènes en fonc­tion des échan­tillons. Si on trans­pose la table pour avoir une ligne par condi­tion et une colonne par gène, on obtien­dra un gra­phique avec un point par condi­tion, et on espère voir les répli­cats ensemble et les malades bien sépa­rés des contrôles.

- Lorsque les variables sont, comme dans l'exemple "iris", du même type (des lon­gueurs, en cm), tout va bien. Mais si on com­mence à mélan­ger des tonnes et des microns, alors les échelles seront dif­fé­rentes et l'ACP sera biai­sée en faveur des nombres les plus grands. Pour y remé­dier, on peut choi­sir de nor­ma­li­ser les variables avec l'option "scale=TRUE", ce qui divi­se­ra chaque colonne par sa variance. Si cette nor­ma­li­sa­tion s'avère trop forte (c'est le cas avec les expres­sions de gènes), on peut sim­ple­ment appli­quer un loga­rithme.

- La théo­rie part du prin­cipe que les variables ini­tiales sont indé­pen­dantes (axes ortho­go­naux). En pra­tique on ignore joyeu­se­ment cette contrainte, comme par exemple dans le cas de l'expression des gènes. Un incon­vé­nient, c'est que les com­po­santes prin­ci­pales contiennent un mélange d'un peu toutes les variables à la fois, ren­dant l'interprétation dif­fi­cile. Il existe une adap­ta­tion de l'ACP pour variables cor­ré­lées qu'on appelle "ACP éparse" ("sparse PCA"), exploi­tant la tech­nique du las­so en inter­pré­tant l'ACP comme un pro­blème de régres­sion. Alors un grand nombre de coef­fi­cients des com­po­santes prin­ci­pales deviennent nuls et on peut plus faci­le­ment extraire les variables signi­fi­ca­tives. Pour plus de détails, voir H. Zou, T. Has­tie, R. Tib­shi­ra­ni, "Sparse prin­ci­pal com­ponent ana­ly­sis", 2004. Les auteurs ont implé­men­té la méthode dans le package R elas­tic­net.

- Il existe des packages R com­pre­nant des fonc­tions pour une étude plus pous­sée de l'ACP, d'ailleurs déve­lop­pés par des Fran­çais : Fac­to­mi­neR, Ade4 and amap. Je ne les ai pas tes­tés, mais je vous invite à regar­der par exemple ce lien.

 

Mer­ci à Haut­bitMaxi_​Zu et Estel pour leur relec­ture.



Pour continuer la lecture :


Commentaires

44 réponses à “L'analyse en composantes principales (avec R)”

  1. Avatar de Jonathan Sobel
    Jonathan Sobel

    Super Article !

    J'ai ado­ré L'image du pois­son. C'est vrai­ment clair comme expli­ca­tion et ça donne une bonne intui­tion de la pro­jec­tion.

    Ciao.

    1. Mer­ci ! J'ai pas trou­vé de pois­son en 4D sur le web mal­heu­reu­se­ment, mais je compte sur l'imagination du lec­teur pour étendre l'exemple aux dimen­sions supé­rieures.

  2. Avatar de ibliss

    Féli­ci­ta­tions ! Très bon billet.

  3. J'adore ! ça parait un peu bête mais quelles sont les avan­tages d'un tableur par rap­port à R ?

    1. Le for­ma­tage des docu­ments. R sert a faire des ana­lyses sophis­ti­quees et des figures que le tableur ne connait pas, mais pas des jolies tables avec des bor­dures colo­rees et des enlu­mi­nures.

  4. Avatar de aurelien
    aurelien

    Bon­jour Pour quoi ne pas avoir citer la com­mande PCA(matrice)en plus des com­mandes prcomp et prin­comp. la com­mande PCA pos­sède elle des incon­vé­nients qui la rende inutile ?

    1. Bon­jour. Chez moi (R ver­sion 3.1.2),

      > PCA
      Erreur : objet 'PCA' introu­vable
      > PCA(iris[,1:4])
      Erreur : impos­sible de trou­ver la fonc­tion "PCA"

      Donc la com­mande "PCA" doit venir d'un package externe. On peut savoir d'ou elle vient en entrant son som dans la console, comme prcomp qui vient de :

      > prcomp
      func­tion (x, …)
      UseMethod("prcomp")

      1. hmm les ">" sont inter­pre­tees comme des balises html… mais je vou­lais dire "vient de `stats`", et si on tape "prcomp", ca affiche aus­si
        `byte­code : 0x7f96f56c52e8`
        `envi­ron­ment : namespace:stats`

    2. La com­mande PCA fait par­tie du package "Fac­to­Mi­neR". Elle est très pra­tique car très com­plète (cal­cule les % d'explication des dif­fé­rentes com­po­santes et super­po­si­tion des axes des des­crip­teurs pour mieux com­prendre la sépa­ra­tion).

  5. Avatar de aurelien
    aurelien

    Mer­ci pour ce post, très infor­ma­tif. Serait il pos­sible de nous expli­quer aus­si sim­ple­ment la dif­fé­rence entre ACP et l'analyse en coor­don­nées prin­ci­pales, imple­men­tée en R par

    cmd­scale()

    ?
    Mer­ci d'avance.

    1. L'analyse en coor­don­nees prin­ci­pales cal­cule les vec­teurs propres d'une matrice de res­sem­blance, alors que l'ACP uti­lise la matrice de cova­riance (/​correlation). Une matrice de res­sem­blance contient toutes les dis­tances (eucli­diennes en prin­cipe) entre paires d'elements.
      L'ACoP est donc une tech­nique de pro­jec­tion simi­laire mais dans un contexte ou la notion de dis­tance entre les variables a plus de sens que leur cova­riance.
      Il existe encore une variante appe­lee MDS ("mul­ti-dimen­sio­nal" sca­ling).

      1. Bon­jour,
        Pour­riez-vous expli­quer la dif­fé­rence entre une ACP et une MDS ? Ain­si qu'entre une MDS métrique et non-métrique ?
        Mer­ci d'avance pour votre réponse.

        1. Le MDS cherche aus­si a pro­je­ter les points dans un espace de moindre dimen­sion, mais en essayant de conser­ver au maxi­mum les dis­tances entre les points, alors que la contrainte de la PCA est de mini­mi­ser la variance le long de chaque axe.

          En fait la PCoA est la variante "clas­sique" de MDS. Les dif­fe­rents MDS se dis­tinguent par la facon de defi­nir la matrice de dis­si­mi­la­rites (p.ex. dis­tances entre les points pour la PCoA). Le MDS est non-metrique si on opere une trans­for­ma­tion lineaire des entrees de la matrice de dis­si­mi­la­rites. Je n'en sais pas plus mal­heu­reu­se­ment.

  6. Avatar de DieHuda

    Mer­ci très bon article

  7. Bon­jour,

    J'aurais vou­lu savoir pour le pre­mier exemple, qu'est-ce qu'on peut faire avec une seule com­po­sante prin­ci­pale ? En termes de repré­sen­ta­tion gra­phique et/​ou amé­lio­ra­tion du modèle si néces­saire ?
    Je me trouve dans un cas simi­laire et peine à inter­pré­ter un tel résul­tat…
    J'espère que vous pour­rez m'aider !
    Mer­ci

    1. D'abord ca peut ser­vir a clas­si­fier les points, si le long de l'axe de la CP on voit des groupe des points, plus par­ti­cu­lie­re­ment un groupe avant le 0 et un groupe apres. Dans l'exemple c'est encore plus facile, car on voit tout de suite en ajou­tant des cou­leurs que la CP separe bien les trois groupes de plantes.

      On peut essayer d'expliquer la dif­fe­rence entre les membres des dif­fe­rents groupes par les variables qui construisent la CP. Si par exemple le vec­teur de la CP s'ecrit (0,0,-0.02,18,0,0), on va dire que c'est prin­ci­pa­le­ment la variable 4 qui est deter­mi­nante pour clas­si­fier les points (mais en prin­cipe c'est une com­bi­nai­son de plu­sieurs ; il faut ordon­ner les com­po­santes de la CP pour mieux les voir. S'il y en a trop on ne peux rien en faire).

  8. Bon­jour,

    J'aimerais savoir quel package vous avez uti­li­sé pour faire l'ACP.

    Mer­ci d'avance

    1. Il n'y a pas besoin de package. Essayez juste les com­mandes indi­quees dans R.

      1. Mer­ci beau­coup !

        J'aimerai aus­si savoir s'il existe d'autres com­mandes comme celles là pour effec­tuer l'Analyse Fac­to­rielle des Cor­res­pon­dances et l'Analyse des Cor­res­pon­dances Mul­tiples et la Clas­si­fi­ca­tion ?

        1. R est fait pour ca, donc oui. Il existe de nom­breux livres et tuto­riels en ligne. La lit­te­ra­ture — comme la doc de R d'ailleurs — est sou­vent en anglais par contre, par exemple Clas­si­fi­ca­tion s'appelle Clus­te­ring.

          1. Mer­ci beau­coup !

            C'est noté.

  9. Super Article !

    Mer­ci pour ce post, très infor­ma­tif !

  10. Avatar de Quentin.Etz
    Quentin.Etz

    Bon­jour, je ne com­prend pas très bien com­ment se font les cou­leurs sur un gra­phique R. J'ai bien com­pris votre exemple en colo­rant les points asso­ciés aux dif­fé­rentes types de plantes, mais si j'essaye avec cette ligne de code par exemple : plot(pca$x[,1:2],col=iris[,3]), j'obtiens un gra­phique avec 5 cou­leurs dif­fé­rentes, et la je ne com­prend plus très bien car ma colonne 3 dans "iris" est une suc­ces­sion de valeurs numé­riques bien dis­tinctes, et non plus 3 chaines de carac­tères dif­fé­rentes comme dans la colonne 5. Pour­riez-vous m'expliquer si ça ne vous dérange pas ? Mer­ci d'avance de votre réponse.

    1. Oui, c'est iris[,5]. Si on tape "iris" on voit pour­quoi.

      1. Avatar de Quentin.Etz
        Quentin.Etz

        Excu­sez moi mais je n'ai tou­jours pas com­pris pour mon exemple avec iris[,3] (exemple que j'ai pris au hasard). Pour iris[,5], on a 3 chaines de carac­tère dif­fé­rentes, donc je com­prend que R fait un gra­phique avec 3 cou­leurs dif­fé­rentes pour les dis­tin­guer.
        Je vou­lais aus­si vous deman­der à quoi cor­res­pondent les échelles sur le gra­phique repré­sen­tant PC2=f(PC1) (Echelle variant de ‑3 à 4 pour la PC1 et de ‑1 à 1 pour la PC2)
        Cor­dia­le­ment

        1. R s'attend à un fac­teur pour les colonnes, donc il faut pas­ser col=as.factor(iris[,3]). C'est un très bon exemple de pour­quoi R est un très mau­vais lan­gage (fait n'importe quoi quand on lui passe un truc faux, au lieu de géné­rer une erreur).
          Pour les échelles, si par exemple PC1 = (0,3,1), alors 1 uni­té selon cet axe vaut 0*x1 + 3*x2 + 1*x3, où x1, x2, x3 sont les variables d'origine.

          1. Avatar de Quentin.Etz
            Quentin.Etz

            Mer­ci de votre réponse.
            Juste une pré­ci­sion, dans notre exemple, on a bien PC1 = (0.36,-0.08,0.86,0.36) si j'ai bien com­pris ?

  11. Avatar de meryem
    meryem

    bon­jour j'ai effec­tué une ACP avec la fonc­tion PCA de Fac­to­Mi­neR et je veux savoir quelle est la fonc­tion ana­logue a $rota­tion dans ce package

  12. Avatar de lounes
    lounes

    Bon­jour,
    Je vou­lais juste faire une remarque si vous per­met­tez.
    Vous dites que les colonnes de pca$x sont la pro­jec­tion des points sur l'une des com­po­santes prin­ci­pales. C'est pas plu­tot sur les axes prin­ci­paux (les vec­teurs propres)?
    La pro­jec­tion sur les com­po­santes prin­ci­pales est fai­sable pour les variables ini­tiales, qui sont de meme nature (dimen­sion) que les CPs, c'est le role du cercle des cor­ré­la­tions.

    cor­dia­le­ment

    1. C'est la même chose. Les com­po­santes prin­ci­pales sont les axes, après rota­tion, et ce sont des vec­teur propres. De plus, après rota­tion, on a le même nombre de dimen­sions. C'est ensuite seule­ment qu'on fait une sélec­tion (si on veut). Le cercle des cor­ré­la­tions est la pro­jec­tion des axes ori­gi­naux sur les nou­veaux axes — plu­tôt que de pro­je­ter les points.

  13. Avatar de Vincent
    Vincent

    Bon­jour,

    J'aurai une ques­tion sur les cor­res­pon­dances MDS /​ ACP, (j'ai fouillé à droite à gauche mais je n'ai pas trou­vée de réponses claires). Le MDS ce fait pour moi à par­tir d'une matrices de dis­tances, de ce fait une matrice car­rée. Je me demande com­ment créer une matrices de dis­tances entres dif­fé­rentes variables.

    Si qqn à un lien sur ce topic, même data­set de départ mais deux ana­lyses dif­fé­rentes du data­set (mds et acp) je suis pre­neur.

    Mer­ci pour cet article

    Cor­dia­le­ment,

    Vincent.

  14. Hel­lo

    Super article mer­ci beau­coup !
    Y'a juste un truc que j'arrive vrai­ment pas à com­prendre c'est le para­graphe sui­vant :

    "On voit par exemple que l'axe "PC1" est une com­bi­nai­son de 0.86 x Petal.Length, 0.36 x de Sepal.Length et Petal.Width, et ‑0.08 x Sepal.Width — c'est-à-dire que la direc­tion de la PC1 est à peu près ali­gnée avec celle de Petal.Length et qua­si per­pen­di­cu­laire à celle de Sepal.Width.

    Que veux tu dire par direc­tion de PC1 est ali­gnée avec celle de petal.Length ? idem pour per­pen­di­cu­laire à Sepal.Width

    Mer­ci

    1. La PC1 est un vec­teur dans un espace de dimen­sion 4 qui est une com­bi­nai­son linéaire des 4 vec­teurs d'origine. De la même façon qu'en dim 2 ou 3, les com­po­santes indiquent dans quelle direc­tion pointe ce vec­teur — là où les com­po­santes sont grandes.

  15. Avatar de Justine

    Bon­jour,

    Mer­ci pour cet article.

    J'aimerai savoir s'il est pos­sible de récu­pé­rer les coor­don­nées des indi­vi­dus sur l'axe 1 et d'obtenir le cercle des cor­ré­la­tions des variables.

    Je vous remer­cie.

    Cor­dia­le­ment,

    Jus­tine

  16. Avatar de modou Niang
    modou Niang

    Bon­jour,
    J'aimerais com­ment vous avez fait pour rem­pla­cer les variables d'origines par les vec­teurs propres.

  17. Bon­soir,
    Je sou­haite faire une NMS ou nMDS avec R. Mais je n'y me retrouve abso­lu­ment pas.

  18. Avatar de Aliou NIANG
    Aliou NIANG

    je sou­haite faire une ACP avec mes données.quelles sont les com­mandes que je peux uti­li­ser et com­ment faire aus­si la visua­li­sa­tion des résul­tats

    1. Bon­jour,

      avez-vous lu l'article ? Il décrit pré­ci­sé­ment la pro­cé­dure…

  19. Avatar de Osias Frantzlande
    Osias Frantzlande

    Très ins­truc­tif comme article. Com­ment faire pou avoir la table des cosi­nus rela­tive à l'ACP pour faire des inter­pré­ta­tions?( les com­mandes 🙂 ]

  20. Avatar de Allali

    Bon­jour,
    je sou­haite savoir com­ment vous avez recon­nu les types de plantes selon votre repré­sen­ta­tion de acp à un moment vous avez iden­ti­fier la seto­sa comme une plante qu'on peut dis­tin­guer et je ne com­prend pas com­ment vous l'avez recon­nu

    1. Bon­jour,

      les donn­nées conte­nues dans pca$x conservent le même ordre que dans la matrice uti­li­sée pour faire la PCA (pca$x et iris contiennent 150 valeurs).
      La 5ème colonne de iris contient le nom des espèces asso­ciées à cha­cune des valeurs mesu­rées, donc il est facile de retrou­ver à quel espèce cor­res­pond les valeurs dans pca$x, d'où la for­mule uti­li­sée pour le graph :

      plot(pca$x[,1:2], col=iris[,5]) => Gra­phique des 2 pre­mière PC (pca$x[,1:2]) et colo­ré en fonc­tion du nom des espèces (col=iris[,5]).

  21. Mer­ci pour vos expli­ca­tion tres clair. Com­ment applique le rin­cipe de ACP pour reduire les don­nees dans le cadre de mesures repe­tees…?

Laisser un commentaire