Odpowiedzi:
Czy masz na myśli na przykład wykres, który zwraca następujące polecenie?
biplot(prcomp(USArrests, scale = TRUE))
Jeśli tak, to górna i prawa oś służą do interpretacji czerwonych strzałek (punktów przedstawiających zmienne) na wykresie.
Jeśli wiesz, jak działa analiza głównego składnika i umiesz czytać kod R, poniższy kod pokazuje, jak wyniki prcomp()
są traktowane na początku biplot.prcomp()
przed końcowym wykreśleniem biplot.default()
. Te dwie funkcje są wywoływane w tle podczas drukowania biplot()
, a następujący fragment kodu został zmodyfikowanybiplot.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)
W skrócie, w powyższym przykładzie, macierz zmiennych obciążeń (x$rotation
) jest skalowana przez odchylenie standardowe głównych składników ( x$sdev
) razy pierwiastek kwadratowy z liczby obserwacji. To ustawia skalę dla górnej i prawej osi do tego, co widać na wykresie.
Istnieją również inne metody skalowania obciążeń zmiennych. Są one oferowane np. Przez pakiet R wegański.
Mam lepszą wizualizację dla biplota. Sprawdź poniższy rysunek.
W eksperymencie próbuję odwzorować punkty 3d na 2D (symulowany zestaw danych).
Sztuką, aby zrozumieć biplot w 2D, jest znalezienie odpowiedniego kąta, aby zobaczyć to samo w 3D. Wszystkie punkty danych są ponumerowane, można wyraźnie zobaczyć mapowanie.
Oto kod do odtworzenia wyników.
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
polecenie w R i odtworzonego na twojej figurze po prawej stronie: tam chmura kropek jest znormalizowana, ale strzałki mają długości odpowiadające wariancjom.
biplot
generuje z scale=0
argumentem.