Co oznaczają strzałki w biplocie PCA?

14

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)

wprowadź opis zdjęcia tutaj

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 yjest 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])?

Luna
źródło
2
Zastanów się także, czy nie skorzystać z formatowania dostępnego w przypadku pytań w witrynie, zobacz zaawansowaną pomoc dotyczącą znakowania . Widzę, że żadne z twoich poprzednich pytań nie ma odpowiedzi, a jeśli je edytujesz, aby były nieco bardziej czytelne, pojawią się one na górze listy i mogą przyciągnąć odpowiedzi.
Andy W
@Andy W Doskonałe referencje
sprzężonyprior
@Andy W: Po przeczytaniu doskonałych referencji nadal uważam, że kod R biplot.princomp ma błąd: macierz ładująca (macierz własna) powinna zostać transponowana przed wysłaniem do biplot.princomp ... Jakieś myśli?
Luna,
Wygląda na to, że nie ma błędu .
chl
@Andy W: czy chcesz zamieścić swoje komentarze w „odpowiedzi”, abym mógł zaakceptować twoją odpowiedź? To wspaniale! Dzięki wielkie!
Luna

Odpowiedzi:

9

Wygląda na to, że Kevinowi Wrightowi należy się najwięcej zasług, aby pomóc wyjaśnić zamieszanie (z listy mailowej R-help );

Strzałki nie wskazują najbardziej zróżnicowanego kierunku danych. Główne elementy wskazują najbardziej zróżnicowany kierunek danych. Ale nie drukujesz danych na oryginalnej skali, drukujesz dane na obróconej skali, a zatem oś pozioma jest najbardziej zmiennym kierunkiem danych.

Strzałki wskazują w kierunku zmiennych, jak rzutowane na 2-d płaszczyznę biplota.

Nie ma błędu.

Kevin Wright

Michael Greenacre ma bardzo doskonałą darmową książkę online o biplotach, Biplots in Practice , a samo czytanie pierwszego rozdziału powinno pomóc w motywowaniu, skąd pochodzą współrzędne strzałek. Istnieje również kilka innych pytań na stronie, które są podobne i możesz być zainteresowany, zobacz Interpretacja analizy dwupłatów w analizie głównych składników w R i Interpretacja wykresu współczynnika MDS dla dwóch przykładów. Przejrzyj również pytania z biplotem podczas wyszukiwania w witrynie , ponieważ istnieje kilka potencjalnych zainteresowań (wydaje się, że może nawet przydanie się tagu biplot byłoby przydatne w tym momencie, biorąc pod uwagę liczbę pytań, na które się pojawiło).

Andy W.
źródło