Que signifient les flèches dans un biplot PCA?

14

Considérez le biplot PCA suivant:

library(mvtnorm)
set.seed(1)
x  <- rmvnorm(2000, rep(0, 6), diag(c(5, rep(1,5))))
x  <- scale(x, center=T, scale=F)
pc <- princomp(x)
biplot(pc)

entrez la description de l'image ici

Il y a un tas de flèches rouges tracées, que signifient-elles? Je savais que la première flèche étiquetée "Var1" devrait pointer dans la direction la plus variable de l'ensemble de données (si nous les considérons comme 2000 points de données, chacun étant un vecteur de taille 6). J'ai aussi lu quelque part, la direction la plus variable devrait être la direction du 1er vecteur propre.

Cependant, la lecture du code de biplot dans R. La ligne sur les flèches est:

if(var.axes)
    arrows(0, 0, y[,1L] * 0.8, y[,2L] * 0.8, col = col[2L], 

yest réellement la matrice des chargements, qui est la matrice des vecteurs propres. Il ressemble la 1ère flèche est en fait de pointer (0, 0)vers (y[1, 1], y[1, 2]). Je comprends que nous essayons de tracer une flèche de haute dimension sur un plan 2D. C'est pourquoi nous prenons le 1er et le 2e élément du y[1, ]vecteur. Mais ce que je ne comprends pas, c'est:

La 1ère direction de vecteur propre ne devrait-elle pas être le vecteur noté y[, 1], au lieu de y[1, ]? (Encore une fois, voici yla matrice des vecteurs propres, obtenue par PCA ou par composition des eigendes de t(x) %*% x.) C'est-à-dire que les vecteurs propres doivent être des vecteurs de colonne, pas ces vecteurs horizontaux.

Même si nous les traçons sur un plan 2D, nous devons tracer la 1ère direction à partir de laquelle (0, 0)pointer (y[1, 1], y[2, 1])?

Luna
la source
2
Pensez également à essayer d'utiliser la mise en forme disponible pour les questions sur le site, consultez l' aide avancée sur le démarquage . Je vois qu'aucune de vos questions précédentes n'a de réponse, et si vous les modifiez pour être légèrement plus lisibles, elles remonteront en haut de la liste et pourraient attirer des réponses.
Andy W
@Andy W Excellentes références
conjugateprior
@Andy W: Après avoir lu vos excellentes références, je pense toujours que le code R biplot.princomp a un bug: la matrice de chargement (matrice de vecteur propre) doit être transposée avant d'être envoyée dans biplot.princomp ... Des réflexions?
Luna
Il semble qu'il n'y ait pas de bug .
chl
@Andy W: voulez-vous mettre vos commentaires dans une "réponse" afin que je puisse accepter votre réponse? C'est génial! Merci beaucoup!
Luna

Réponses:

9

Eh bien, il semble que Kevin Wright devrait recevoir la majeure partie du mérite pour essayer d'expliquer la confusion (à partir de la liste de diffusion R-help );

Les flèches ne pointent pas dans la direction la plus variable des données. Les principales composantes pointent dans la direction la plus variable des données. Mais vous ne tracez pas les données sur l'échelle d'origine, vous tracez les données sur l'échelle pivotée, et donc l'axe horizontal est la direction la plus variable des données.

Les flèches pointent dans la direction des variables, comme projetées dans le plan 2D du biplot.

Il n'y a pas de bug.

Kevin Wright

Michael Greenacre a un excellent livre en ligne gratuit sur les biplots, Biplots in Practice , et la simple lecture du premier chapitre devrait aider à motiver d'où proviennent les coordonnées des flèches. Il y a également plusieurs autres questions sur le site qui sont similaires et qui pourraient vous intéresser, voir Interprétation des biplots dans l'analyse des composants principaux dans R et Interprétation du tracé du facteur MDS pour deux exemples. Regardez également les questions avec biplot dans la recherche sur le site , car il y en a un peu plus d'intérêt potentiel (il semble peut-être même que la création d'une balise biplot serait utile à ce stade compte tenu du nombre de questions dans lesquelles elle a été posée).

Andy W
la source