Posizionamento delle frecce su un biplot PCA


18

Sto cercando di implementare un biplot per l'analisi dei componenti principali (PCA) in JavaScript. La mia domanda è: come posso determinare le coordinate delle frecce dall'uscita della decomposizione vettoriale singolare (SVD) della matrice di dati?U,V,D

Ecco un esempio di biplot prodotto da R:

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

Biplot del set di dati Iris

Ho provato a cercarlo nell'articolo di Wikipedia sul biplot ma non è molto utile. O corretto. Non so quale.


3
Il biplot è un grafico a dispersione sovrapposto che mostra sia i valori U che i valori V. O UD e V. O U e VD '. O UD e VD '. In termini di PCA, UD sono chiamati punteggi dei componenti principali grezzi e VD 'sono chiamati caricamenti di componenti variabili.
ttnphns,

2
Nota anche che la scala delle coordinate dipende da come inizialmente normalizzi i dati. In PCA, ad esempio, si dividono normalmente i dati per sqrt (r) o sqrt (r-1) [r è il numero di righe]. Ma nel vero "biplot" nel senso stretto della parola si dividono normalmente i dati per sqrt (rc) [c è il numero di colonne] e quindi de-normalizza gli U e V. ottenuti
ttnphns

Perché i dati devono essere ridimensionati di ? 1n1
ktdrv,

1
@ttnphns: in seguito ai tuoi commenti sopra, ho scritto una risposta a questa domanda, con l'obiettivo di fornire qualcosa di simile a una panoramica delle normalizzazioni del biplot PCA. Tuttavia, la mia conoscenza di questo argomento è puramente teorica e credo che tu abbia molta più esperienza pratica con i bipoti di me. Quindi sarei grato per eventuali commenti.
ameba dice di reintegrare Monica il

1
Una ragione per implementare le cose, @Aleksandr, è sapere esattamente cosa si sta facendo. Come puoi vedere, non è così facile capire cosa succede esattamente quando si corre biplot(). Inoltre, perché preoccuparsi dell'integrazione di R-JS per qualcosa che richiede solo un paio di righe di codice.
ameba dice Reinstate Monica il

Risposte:


40

Esistono molti modi diversi per produrre un biplot PCA e quindi non esiste una risposta unica alla tua domanda. Ecco una breve panoramica.

Partiamo dal presupposto che la matrice di dati ha n punti di dati in righe ed è centrata (ovvero i mezzi di colonna sono tutti zero). Per ora, non assumiamo che sia stato standardizzato, ovvero consideriamo il PCA sulla matrice di covarianza (non sulla matrice di correlazione). PCA equivale a una scomposizione del valore singolare X = U S V , puoi vedere la mia risposta qui per i dettagli: Relazione tra SVD e PCA. Come utilizzare SVD per eseguire PCA?Xn

X=USV,

In un biplot PCA, due primi componenti principali vengono tracciati come un diagramma a dispersione, ovvero la prima colonna di viene tracciata contro la sua seconda colonna. Ma la normalizzazione può essere diversa; ad esempio si può usare:U

  1. Colonne di : sono componenti principali ridimensionati in base alla somma unitaria dei quadrati;U
  2. Colonne di : sono componenti principali standardizzati (varianza unitaria);n1U
  3. Colonne di : sono componenti principali "grezzi" (proiezioni sulle direzioni principali).US

Inoltre, le variabili originali sono tracciate come frecce; cioè coordinate di un i -esimo freccia endpoint sono nei valore -esimo nella prima e nella seconda colonna di V . Ma ancora una volta, si possono scegliere diverse normalizzazioni, ad esempio:(x,y)iiV

  1. Colonne di : Non so quale potrebbe essere un'interpretazione qui;VS
  2. Colonne di : sono caricamenti;VS/n1
  3. Colonne di : questi sono assi principali (aka direzioni principali, aka autovettori).V

Ecco come appare tutto ciò per il set di dati Fisher Iris:

Fisher Iris biplot, PCA sulla covarianza

9XUSαβVS(1α)/β9 sono "bipoti propri": vale a dire una combinazione di qualsiasi sottotrama dall'alto con quella direttamente sotto.

[Qualunque combinazione si usi, potrebbe essere necessario ridimensionare le frecce in base a un fattore costante arbitrario in modo che sia le frecce sia i punti dati appaiano approssimativamente sulla stessa scala.]

VS/n1Un1

È probabile che questa [scelta particolare] fornisca un aiuto grafico molto utile nell'interpretazione di matrici multivariate di osservazioni, purché ovviamente queste possano essere adeguatamente approssimate al secondo posto.

USV

US

biplotUVSbiplot0.8biplotn/(n1)1Frecce delle variabili sottostanti nel biplot PCA in R. )

PCA su matrice di correlazione

X1

Biplot di Fisher Iris, PCA sulle correlazioni

1R=1


Ulteriori letture:


1
+6, questo merita più di 3 voti.
gung - Ripristina Monica

3
Ho appena notato che? Ca :: plot.ca ha una bella panoramica delle diverse possibili normalizzazioni: distinguono la riga principale (forma biplot = righe nei principali coord, cols in standard coords), col principal (covarianza biplot = cols nei principali coords, righe in coords standard), biplot simmetrico (righe e colonne ridimensionate per avere varianze uguali ai valori singolari (radici quadrate di autovalori)), rowgab e colgab (righe in coords principali e cols in coords standard moltiplicate per la massa del punto corrispondente o viceversa) e rowgreen e colgreen (come rowgab e colgab ma con sqrt (masse))
Tom Wenseleers,

2
Questi ultimi sono anche chiamati "contributi biplot"; il libro di M. Greenacre "I bipoti in pratica" offre anche una bella panoramica di tutto ciò; questi modi di ridimensionamento si applicano a tutti i metodi basati su SVD (es. biplot CA, biplot PCA, biplot LDA ecc.); per un esempio di come funziona vedere il codice sorgente ca ::: plot.ca e l'argomento "map"
Tom Wenseleers,

1
n1

1
@AntoniParellada Ho modificato e inserito un paio di collegamenti.
ameba dice di reintegrare Monica
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.