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?
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?
Risposte:
Intendi, ad esempio, nella trama che ritorna il seguente comando?
biplot(prcomp(USArrests, scale = TRUE))
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.
biplot.default
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.
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()
biplot
comando in R e riprodotto nella tua figura sul lato destro: lì la nuvola di punti è standardizzata ma le frecce hanno lunghezze corrispondenti alle varianze.
biplot
produce con scale=0
argomento.