Posicionando as setas em um biplot PCA

18

Eu estou olhando para implementar um biplot para análise de componentes principais (PCA) em JavaScript. Minha pergunta é: como determinar as coordenadas das setas da saída da decomposição de vetor singular (SVD) da matriz de dados?U,V,D

Aqui está um exemplo de biplot produzido por R:

biplot(prcomp(iris[,1:4]))

Biplot do conjunto de dados Iris

Tentei procurar no artigo da Wikipedia sobre biplot, mas não é muito útil. Ou correto. Não tenho certeza qual.

ktdrv
fonte
3
Biplot é um gráfico de dispersão de sobreposição que mostra os valores U e V. Ou UD e V. Ou U e VD '. Ou UD e VD '. Em termos de PCA, os UD são chamados de pontuações brutas dos componentes principais e os VD 'são chamados de cargas de componentes variáveis.
ttnphns
2
Observe também que a escala das coordenadas depende de como você normaliza os dados inicialmente. No PCA, por exemplo, normalmente se divide os dados por sqrt (r) ou sqrt (r-1) [r é o número de linhas]. Mas no verdadeiro "biplot", no sentido estrito da palavra, normalmente se divide os dados por sqrt (rc) [c é o número de colunas] e depois desnormaliza os U e V. obtidos
ttnphns
Por que os dados precisam ser dimensionados por ? 1n1
ktdrv
1
@ttnphns: Após seus comentários acima, escrevi uma resposta a essa pergunta, com o objetivo de fornecer algo como uma visão geral das normalizações de biplot do PCA. No entanto, meu conhecimento deste tópico é puramente teórico e acredito que você tenha muito mais experiência prática com biplots do que eu. Então, eu ficaria grato por quaisquer comentários.
Ameba diz Reinstate Monica
1
Uma razão para implementar as coisas, @Aleksandr, é saber exatamente o que está sendo feito. Como você pode ver, não é tão fácil descobrir o que exatamente acontece quando alguém roda biplot(). Além disso, por que se preocupar com a integração do R-JS para algo que requer apenas algumas linhas de código.
Ameba diz Reinstate Monica

Respostas:

40

Existem muitas maneiras diferentes de produzir um biplot de PCA e, portanto, não há uma resposta exclusiva para sua pergunta. Aqui está uma breve visão geral.

Assumimos que a matriz de dados possui pontos de dados nas linhas e está centralizada (ou seja, as médias das colunas são zero). Por enquanto, não assumimos que ele tenha sido padronizado, ou seja, consideramos o PCA na matriz de covariância (não na matriz de correlação). O PCA equivale a uma decomposição de valor singular você pode ver minha resposta aqui para obter detalhes: Relacionamento entre SVD e PCA. Como usar o SVD para executar o PCA? n X = U S V ,Xn

X=USV,

Em um biplot de PCA, dois primeiros componentes principais são plotados como um gráfico de dispersão, ou seja, a primeira coluna de é plotada contra sua segunda coluna. Mas a normalização pode ser diferente; por exemplo, pode-se usar:U

  1. Colunas de : esses são os principais componentes dimensionados para a soma unitária dos quadrados;U
  2. Colunas de : esses são componentes principais padronizados (variação de unidade);n1U
  3. Colunas de : estes são componentes principais "brutos" (projeções nas direções principais).US

Além disso, as variáveis ​​originais são plotadas como setas; ou seja, as coordenadas de um -simo seta ponto final são dados pela valor -ésimo na primeira e segunda coluna de . Mas, novamente, pode-se escolher diferentes normalizações, por exemplo:i i V(x,y)iiV

  1. Colunas de : Eu não sei o que poderia ser uma interpretação aqui;VS
  2. Colunas de : estes são carregamentos;VS/n1
  3. Colunas de : estes são eixos principais (também conhecidos como direções principais, também conhecidos como vetores próprios).V

Aqui está como tudo isso se parece com o conjunto de dados Fisher Iris:

Fisher Iris biplots, PCA sobre covariância

Combinar qualquer subtrama de cima com qualquer subtrama de baixo resultaria em possíveis normalizações. Mas, de acordo com a definição original de um biplot introduzida em Gabriel, 1971, A exibição gráfica de biplot de matrizes com aplicação à análise de componentes principais (este artigo tem 2 mil citações, por sinal), as matrizes usadas para biplot devem, quando multiplicadas juntas, aproximar-se (esse é o ponto). Portanto, um "biplot adequado" pode usar, por exemplo, e . Portanto, apenas três dos são "biplots adequados": ou seja, uma combinação de qualquer subparcela de cima com a diretamente abaixo.X U S α β V S ( 1 - α ) / β 99XUSαβVS(1α)/β9

[Qualquer que seja a combinação usada, pode ser necessário escalar as setas por algum fator constante arbitrário, para que as setas e os pontos de dados apareçam aproximadamente na mesma escala.]

O uso de carregamentos, por exemplo, , para setas tem um grande benefício, pois eles têm interpretações úteis (veja também aqui sobre carregamentos). O comprimento das setas de carregamento aproxima o desvio padrão das variáveis ​​originais (o comprimento ao quadrado aproxima a variação), os produtos escalares entre duas setas aproximam a covariância entre eles e os cossenos dos ângulos entre as setas aproximam as correlações entre as variáveis ​​originais. Para fazer um "biplot adequado", deve-se escolher , ou seja, PCs padronizados, para pontos de dados. Gabriel (1971) chama isso de "PCA biplot" e escreve que UVS/n1Un1

É provável que esta [escolha particular] forneça uma ajuda gráfica mais útil na interpretação de matrizes multivariadas de observações, desde que, é claro, que elas possam ser adequadamente aproximadas no segundo posto.

O uso de e permite uma boa interpretação: setas são projeções dos vetores de base originais no plano do PC, veja esta ilustração em @ hxd1011 .VUSV

Pode-se até optar por plotar PCs brutos junto com os carregamentos. Este é um "biplot impróprio", mas foi feito por @vqv no biplot mais elegante que já vi: Visualizando um milhão, edição PCA - mostra o PCA do conjunto de dados do wine.US

A figura que você postou (resultado padrão da biplotfunção R ) é um "biplot adequado" com e . A função dimensiona duas subparcelas, de modo que abranjam a mesma área. Infelizmente, a função faz uma escolha estranha de reduzir todas as setas em um fator de e exibir os rótulos de texto onde os pontos finais das setas deveriam estar. (Além disso, não recebe o dimensionamento corretamente e em extremidades fato se traçando pontuação com soma dos quadrados, em vez de Ver esta investigação detalhada por @AntoniParellada:. Setas de subjacentes variáveis em PCA biplot em R . )V S 0,8 n / ( n - 1 ) 1UVSbiplot0.8biplotn/(n1)1

PCA na matriz de correlação

Se ainda assumirmos que a matriz de dados foi padronizada para que os desvios padrão da coluna sejam todos iguais a , então estamos executando o PCA na matriz de correlação. Aqui está como a mesma figura se parece: 1X1

Fisher Iris biplots, PCA em correlações

Aqui, as cargas são ainda mais atraentes, porque (além das propriedades acima mencionadas), elas fornecem exatamente (e não aproximadamente) coeficientes de correlação entre variáveis ​​originais e PCs. As correlações são todas menores que e as setas de carregamento precisam estar dentro de um "círculo de correlação" de raio , que às vezes também é desenhado em um biplot (plotei-o na subtrama correspondente acima). Observe que o biplot de @vqv (link acima) foi feito para um PCA na matriz de correlação e também possui um círculo de correlação.R = 11R=1


Leitura adicional:

ameba diz Restabelecer Monica
fonte
1
+6, isso merece mais de 3 votos positivos.
gung - Restabelece Monica
3
Apenas notei que? Ca :: plot.ca tem uma boa visão geral das diferentes normalizações possíveis: elas distinguem o principal da linha (forma biplot = linhas nas cordas principais, cols nas cordas padrão), col principal (covariância biplot = cols nas cordas principais, linhas em cordas padrão), biplot simétrico (linhas e colunas dimensionadas para ter variações iguais aos valores singulares (raízes quadradas de valores próprios)), rowgab e colgab (linhas nas cordas principais e colunas nas cordas padrão multiplicadas pela massa do ponto correspondente ou vice-versa) e rowgreen e colgreen (como rowgab e colgab mas com massas sQRT ())
Tom Wenseleers
2
Estes últimos também são chamados de "biplots de contribuição"; o livro de M. Greenacre "Biplots na prática" também oferece uma boa visão geral de tudo isso; essas formas de dimensionamento se aplicam a todos os métodos baseados no SVD (por exemplo, biplots de CA, biplots de PCA, biplots de LDA etc.); para um exemplo de como funciona ver o código fonte ca ::: plot.ca e o "mapa" argumento
Tom Wenseleers
1
n1
1
@AntoniParellada Eu editei e inseri alguns links.
Ameba diz Reinstate Monica