Jakie są cztery osie na biplocie PCA?

18

Kiedy konstruujesz biplot do analizy PCA, masz wyniki składowej głównej PC1 na osi x i oceny PC2 na osi y. Ale jakie są pozostałe dwie osie po prawej i na górze ekranu?

Nils
źródło
1
Skąd możemy wiedzieć, o którym ekranie mówisz?
FairMiles,
@ttnphns miał tutaj
Haitao Du

Odpowiedzi:

12

Czy masz na myśli na przykład wykres, który zwraca następujące polecenie?

biplot(prcomp(USArrests, scale = TRUE))

biplot USA aresztuje

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.

JTT
źródło
5
+1. Pozwoliłem sobie wstawić cyfrę do twojej odpowiedzi.
ameba mówi Przywróć Monikę
Ponadto myślę, że byłoby to bardzo przydatne dla odniesienia w przyszłości, jeśli można dodać do swojej odpowiedzi, że zdobywa PC (osie po lewej stronie i na dole) są skalowane do jednostki suma-of-kwadratów: są nie „raw” Wyniki na PC.
ameba mówi Przywróć Monikę
0,8biplot.default
1
Co więcej, zobacz także ten późniejszy wątek: Umieszczanie strzałek na biplocie PCA .
ameba mówi Przywróć Monikę
11

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.

wprowadź opis zdjęcia tutaj

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()
Haitao Du
źródło
2
+1. Zauważ jednak, że na obróconej figurze 3D chmura kropek ma zachowaną wariancję (projekcja pozioma, tj. PC1, ma większą wariancję niż pionowa, tj. PC2), podczas gdy wszystkie czerwone strzałki mają długość jednostkową (w 3D). Nie dzieje się tak w przypadku dwupłatu utworzonego przez biplotpolecenie 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.
ameba mówi Przywróć Monikę
@amoeba dobry punkt. Po prostu narysowałem strzałki ręcznie i zapomniałem, że długość strzałki ma również określone znaczenie.
Haitao Du
Myślę, że twój ręczny „dwupłat” 3D / 2D bardziej odpowiada temu, co funkcja biplotgeneruje z scale=0argumentem.
ameba mówi Przywróć Monikę