Quels sont les quatre axes du biplot PCA?


18

Lorsque vous construisez un biplot pour une analyse PCA, vous avez les scores PC1 de la composante principale sur l'axe x et les scores PC2 sur l'axe y. Mais quels sont les deux autres axes à droite et en haut de l'écran?


1
Comment savoir de quel écran parlez-vous?
FairMiles

@ttnphns a eu une excellente réponse ici
Haitao Du

Réponses:


12

Voulez-vous dire, par exemple, dans l'intrigue que la commande suivante retourne?

biplot(prcomp(USArrests, scale = TRUE))

arrestation de biplot USA

Si oui, alors les axes supérieur et droit sont destinés à être utilisés pour interpréter les flèches rouges (points représentant les variables) dans le graphique.

Si vous savez comment fonctionne l'analyse des composants principaux et que vous pouvez lire le code R, le code ci-dessous vous montre comment les résultats prcomp()sont initialement traités biplot.prcomp()avant le traçage final biplot.default(). Ces deux fonctions sont appelées en arrière-plan lorsque vous tracez avec biplot(), et l'extrait de code modifié suivant provient de biplot.prcomp().

x<-prcomp(USArrests, scale=TRUE)
choices = 1L:2L
scale = 1
pc.biplot = FALSE
scores<-x$x
lam <- x$sdev[choices]
n <- NROW(scores)
lam <- lam * sqrt(n)
lam <- lam^scale
yy<-t(t(x$rotation[, choices]) * lam)
xx<-t(t(scores[, choices])/lam)
biplot(xx,yy)

Brièvement, dans l'exemple ci-dessus, la matrice des chargements variables ( x$rotation) est mise à l'échelle par l'écart type des principales composantes ( x$sdev) multiplié par la racine carrée du nombre d'observations. Cela définit l'échelle des axes supérieur et droit sur ce qui est vu sur le tracé.

Il existe également d'autres méthodes pour mettre à l'échelle les charges variables. Celles-ci sont proposées par exemple par le package R vegan.


5
+1. J'ai pris la liberté d'insérer le chiffre dans votre réponse.
amibe dit Réintégrer Monica

De plus, je pense qu'il serait très utile pour de futures références, si vous pouviez ajouter à votre réponse que les scores PC (axes à gauche et en bas) sont mis à l'échelle en somme des carrés: ils ne sont pas "bruts" Scores PC.
amibe dit Réintégrer Monica

0,8 avant le traçage, c'est-à-dire que toutes les flèches sont plus courtes que ce qu'elles devraient être, sans doute pour éviter le chevauchement avec l'étiquette de texte (voir le code pour biplot.default). Je trouve cela extrêmement déroutant.
amibe dit Réintégrer Monica

1
Encore plus loin, voir également ce fil plus récent: Positionnement des flèches sur un biplot PCA .
amibe dit Réintégrer Monica

11

J'ai une meilleure visualisation pour le biplot. Veuillez vérifier la figure suivante.

Dans l'expérience, j'essaie de mapper des points 3d en 2d (ensemble de données simulées).

L'astuce pour comprendre le biplot en 2D est de trouver l'angle correct pour voir la même chose en 3D. Tous les points de données sont numérotés, vous pouvez voir clairement la cartographie.

entrez la description de l'image ici

Voici le code pour reproduire les résultats.

require(rgl)
set.seed(0)

feature1=round(rnorm(50)*10+20)
feature2=round(rnorm(50)*10+30)
feature3=round(runif(50)*feature1)

d=data.frame(feature1,feature2,feature3)

head(d)

plot(feature1,feature2)
plot(feature2,feature3)
plot(feature1,feature3)

plot3d(d$feature1, d$feature2, d$feature3, type = 'n')
points3d(d$feature1, d$feature2, d$feature3, color = 'red', size = 10)
shift <- matrix(c(-2, 2, 0), 12, 3, byrow = TRUE)
text3d(d+shift,texts=1:50)
grid3d(c("x", "y", "z"))

pr.out=prcomp(d,scale.=T)
biplot(pr.out)
grid()

2
+1. Cependant, notez que dans votre figure 3D tournée, le nuage de points a la variance préservée (la projection horizontale, c'est-à-dire PC1, a une variance plus grande que la verticale, c'est-à-dire PC2) tandis que les flèches rouges ont toutes une longueur unitaire (en 3D). Ce n'est pas le cas dans le biplot produit par la biplotcommande en R et reproduit dans votre figure de droite: là le nuage de points est standardisé mais les flèches ont des longueurs correspondant aux variances.
Amoeba dit Reinstate Monica

@amoeba bon point. Je dessine simplement les flèches manuellement et j'ai oublié que la longueur de la flèche a également des significations spécifiques.
Haitao Du

Je pense que votre "biplot" 3D / 2D manuel correspond plus à ce que la fonction biplotproduit avec scale=0argument.
Amoeba dit Reinstate Monica
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.