Quali sono i quattro assi sul biplot PCA?


18

Quando si costruisce un biplot per un'analisi PCA, si hanno punteggi PC1 del componente principale sull'asse xe punteggi PC2 sull'asse y. Ma quali sono gli altri due assi a destra e nella parte superiore dello schermo?


1
Come possiamo sapere di quale schermo stai parlando?
FairMiles,

@ttnphns ha avuto un'ottima risposta qui
Haitao Du,

Risposte:


12

Intendi, ad esempio, nella trama che ritorna il seguente comando?

biplot(prcomp(USArrests, scale = TRUE))

biplot USA arresta

In caso affermativo, l'asse superiore e quello destro devono essere utilizzati per l'interpretazione delle frecce rosse (punti che rappresentano le variabili) nel grafico.

Se sai come funziona l'analisi del componente principale e puoi leggere il codice R, il codice qui sotto ti mostra come i risultati prcomp()vengono inizialmente trattati biplot.prcomp()prima della stampa finale biplot.default(). Queste due funzioni vengono chiamate in background quando si stampa con biplot(), e il seguente estratto di codice modificato proviene da 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)

In breve, nell'esempio sopra, la matrice dei carichi variabili ( x$rotation) viene ridimensionata in base alla deviazione standard dei componenti principali ( x$sdev) per radice quadrata del numero di osservazioni. Questo imposta la scala per gli assi superiore e destro rispetto a ciò che si vede sulla trama.

Esistono anche altri metodi per ridimensionare i caricamenti variabili. Questi sono offerti, ad esempio, dal pacchetto R vegan.


5
+1. Mi sono preso la libertà di inserire la figura nella tua risposta.
ameba dice di reintegrare Monica il

Inoltre, penso che sarebbe molto utile per i riferimenti futuri, se si potrebbe aggiungere alla tua risposta che i punteggi per PC (assi a sinistra e in basso) vengono scalati all'unità somma dei quadrati: sono non "raw" Punteggi PC.
ameba dice di reintegrare Monica il

Inoltre, si dovrebbe dire che le frecce sono tracciate in modo tale che il centro dell'etichetta di testo sia dove dovrebbe essere! Le frecce vengono quindi moltiplicate per prima della stampa, ovvero tutte le frecce sono più corte di quanto dovrebbero essere, presumibilmente per evitare la sovrapposizione con l'etichetta di testo (vedere il codice per ). Trovo che sia estremamente confuso. 0.8biplot.default
ameba dice Ripristina Monica il

1
Inoltre, vedi anche questo thread successivo: Posizionamento delle frecce su un biplot PCA .
ameba dice di reintegrare Monica il

11

Ho una visualizzazione migliore per il biplot. Si prega di controllare la figura seguente.

Nell'esperimento, sto cercando di mappare i punti 3d in 2d (set di dati simulato).

Il trucco per capire il biplot in 2d è trovare l'angolazione corretta per vedere la stessa cosa in 3d. Tutti i punti dati sono numerati, puoi vedere chiaramente la mappatura.

inserisci qui la descrizione dell'immagine

Ecco il codice per riprodurre i risultati.

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. Tuttavia, nota che nella tua figura 3D ruotata la nuvola di punti ha la varianza conservata (la proiezione orizzontale, cioè PC1, ha una varianza maggiore di quella verticale, cioè PC2) mentre le frecce rosse hanno tutte una lunghezza unitaria (in 3D). Questo non è il caso del biplot prodotto dal biplotcomando in R e riprodotto nella tua figura sul lato destro: lì la nuvola di punti è standardizzata ma le frecce hanno lunghezze corrispondenti alle varianze.
ameba dice Reinstate Monica il

@amoeba buon punto. Ho appena disegnato le frecce manualmente e ho dimenticato che la lunghezza della freccia ha anche significati specifici.
Haitao Du,

Penso che il tuo "biplot" manuale 3D / 2D corrisponda maggiormente a ciò che la funzione biplotproduce con scale=0argomento.
ameba dice Ripristina Monica il
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.