Rozważ następujący dwupłat PCA:
library(mvtnorm)
set.seed(1)
x <- rmvnorm(2000, rep(0, 6), diag(c(5, rep(1,5))))
x <- scale(x, center=T, scale=F)
pc <- princomp(x)
biplot(pc)
Zostało narysowanych kilka czerwonych strzałek, co one oznaczają? Wiedziałem, że pierwsza strzałka oznaczona „Var1” powinna wskazywać najbardziej zróżnicowany kierunek zbioru danych (jeśli uważamy, że to 2000 punktów danych, z których każdy jest wektorem wielkości 6). Czytałem też skądś, najbardziej zmiennym kierunkiem powinien być kierunek pierwszego wektora własnego.
Jednak wczytywanie kodu biplota w R. Linia wokół strzałek brzmi:
if(var.axes)
arrows(0, 0, y[,1L] * 0.8, y[,2L] * 0.8, col = col[2L],
Gdzie y
jest faktycznie macierz ładunków, która jest macierzą wektorów własnych. Wygląda więc na to, że pierwsza strzałka faktycznie wskazuje od (0, 0)
do (y[1, 1], y[1, 2])
. Rozumiem, że próbujemy narysować strzałkę o dużych wymiarach na płaszczyźnie 2D. Dlatego bierzemy pierwszy i drugi element y[1, ]
wektora. Nie rozumiem jednak:
Czy pierwszy kierunek wektora własnego nie powinien być wektorem oznaczonym przez y[, 1]
zamiasty[1, ]
? (Ponownie, tutaj y
jest macierz wektorów własnych, otrzymana przez PCA lub przez składanie eigend z t(x) %*% x
.), Tj. Wektory własne powinny być wektorami kolumnowymi, a nie wektorami poziomymi.
Mimo że rysujemy je na płaszczyźnie 2D, powinniśmy narysować pierwszy kierunek od (0, 0)
wskazywania na (y[1, 1], y[2, 1])
?