Wenn Sie einen Biplot für eine PCA-Analyse erstellen, haben Sie die Hauptkomponente PC1-Scores auf der x-Achse und PC2-Scores auf der y-Achse. Aber was sind die anderen beiden Achsen rechts und oben auf dem Bildschirm?
Wenn Sie einen Biplot für eine PCA-Analyse erstellen, haben Sie die Hauptkomponente PC1-Scores auf der x-Achse und PC2-Scores auf der y-Achse. Aber was sind die anderen beiden Achsen rechts und oben auf dem Bildschirm?
Antworten:
Meinen Sie zB im Plot, dass der folgende Befehl zurückgibt?
biplot(prcomp(USArrests, scale = TRUE))
Wenn ja, sollen die obere und die rechte Achse zur Interpretation der roten Pfeile (Punkte, die die Variablen darstellen) in der Darstellung verwendet werden.
Wenn Sie wissen, wie die Hauptkomponentenanalyse funktioniert, und Sie R-Code lesen können, zeigt Ihnen der folgende Code, wie die Ergebnisse prcomp()
von biplot.prcomp()
vor dem endgültigen Plotten von zunächst behandelt werden biplot.default()
. Diese beiden Funktionen werden im Hintergrund aufgerufen, wenn Sie mit zeichnen biplot()
, und der folgende geänderte Code-Auszug stammt von 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)
Kurz gesagt, im obigen Beispiel wird die Matrix der variablen Ladungen ( x$rotation
) mit der Standardabweichung der Hauptkomponenten ( x$sdev
) multipliziert mit der Quadratwurzel der Anzahl der Beobachtungen skaliert . Dadurch wird der Maßstab für die obere und die rechte Achse auf das festgelegt, was auf dem Plot angezeigt wird.
Es gibt auch andere Methoden, um die variablen Ladungen zu skalieren. Diese werden zB vom R-Paket vegan angeboten.
Ich habe eine bessere Visualisierung für den Biplot. Bitte überprüfen Sie die folgende Abbildung.
Im Experiment versuche ich, 3D-Punkte in 2D (simulierter Datensatz) abzubilden.
Der Trick, um Biplot in 2d zu verstehen, besteht darin, den richtigen Winkel zu finden, um dasselbe in 3d zu sehen. Alle Datenpunkte sind nummeriert, Sie können die Zuordnung deutlich sehen.
Hier ist der Code, um die Ergebnisse zu reproduzieren.
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
Befehl in R erzeugt und in Ihrer Abbildung auf der rechten Seite wiedergegeben wurde: Dort ist die Punktwolke standardisiert, aber die Pfeile haben Längen, die den Varianzen entsprechen.
biplot
mit scale=0
Argument erzeugt .