O que significam as setas em um biplot PCA?

14

Considere o seguinte biplot PCA:

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)

insira a descrição da imagem aqui

Há um monte de setas vermelhas plotadas, o que elas significam? Eu sabia que a primeira seta marcada com "Var1" deveria apontar a direção mais variável do conjunto de dados (se os considerarmos como 2000 pontos de dados, cada um sendo um vetor do tamanho 6). Também li de algum lugar que a direção mais variável deve ser a direção do primeiro vetor eigen.

No entanto, lendo o código do biplot em R. A linha sobre as setas é:

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

Onde yestá realmente a matriz de cargas, que é a matriz do vetor próprio. Parece que a 1ª seta está realmente apontando de (0, 0)para (y[1, 1], y[1, 2]). Entendo que estamos tentando plotar uma flecha de alta dimensão em um plano 2D. É por isso que estamos pegando o primeiro e o segundo elemento do y[1, ]vetor. No entanto, o que eu não entendo é:

A 1ª direção do vetor próprio não deveria ser o vetor indicado por y[, 1], em vez de y[1, ]? (Novamente, aqui yestá a matriz de vetor próprio, obtida por PCA ou por composição automática de t(x) %*% x.) Ou seja, os vetores próprios devem ser vetores de coluna, não esses vetores horizontais.

Apesar de estarmos plotando-os no plano 2D, devemos desenhar a 1ª direção para (0, 0)apontar (y[1, 1], y[2, 1])?

Luna
fonte
2
Considere também tentar utilizar a formatação disponível para as perguntas no site, consulte a ajuda avançada de descontos . Vejo que nenhuma de suas perguntas anteriores tem respostas e, se você as editar para ficar um pouco mais legíveis, elas aparecerão no topo da lista e poderão atrair respostas.
21712 Andy W
@Andy W Excelentes referências
conjugateprior
@ Andy W: Depois de ler suas excelentes referências, ainda acho que o código R biplot.princomp tem um bug: a matriz de carregamento (matriz de vetores próprios) deve ser transposta antes de ser enviada para o biplot.princomp ... Alguma idéia?
25412 Luna
Parece que não há bug .
28412 chl
@ Andy W: você deseja colocar seus comentários em uma "resposta" para que eu possa aceitar sua resposta? Essa é ótima! Muito obrigado!
Luna

Respostas:

9

Bem, parece que Kevin Wright deve receber a maior parte do crédito para tentar explicar a confusão (na lista de e-mails da R-help );

As setas não estão apontando na direção mais variável dos dados. Os principais componentes estão apontando na direção mais variável dos dados. Mas você não está plotando os dados na escala original, está plotando os dados na escala rotacionada e, portanto, o eixo horizontal é a direção mais variável dos dados.

As setas estão apontando na direção das variáveis, conforme projetadas no plano 2-d do biplot.

Não há bug.

Kevin Wright

Michael Greenacre tem um excelente livro on-line gratuito sobre biplots, Biplots in Practice , e a simples leitura do primeiro capítulo deve ajudar a motivar de onde as coordenadas das setas são retiradas. Também existem várias outras perguntas no site que são semelhantes e você pode estar interessado, consulte Interpretação de biplots na análise de componentes principais em R e Gráfico de fatores de interpretação de MDS para dois exemplos. Observe também as perguntas com biplot na pesquisa no site , pois há um pouco mais de interesse em potencial (parece que talvez até fazer uma tag biplot seja útil nesse momento, dado o número de perguntas em que ele surgiu).

Andy W
fonte