Które zmienne wyjaśniają, które komponenty PCA i odwrotnie?

15

Korzystanie z tych danych:

head(USArrests)
nrow(USArrests)

Mogę zrobić PCA w następujący sposób:

plot(USArrests)
otherPCA <- princomp(USArrests)

Mogę pobrać nowe komponenty

otherPCA$scores

oraz odsetek wariancji wyjaśniony przez składniki z

summary(otherPCA)

Ale co jeśli chcę wiedzieć, które zmienne są w większości wyjaśnione przez które główne składniki? I odwrotnie: czy np. PC1 lub PC2 jest głównie wyjaśnione przez murder? W jaki sposób mogę to zrobić?

Czy mogę na przykład powiedzieć, że PC1 jest w 80% wyjaśnione przez murderlub assault?

Myślę, że obciążenia mi tu pomagają, ale pokazują one kierunkowość, a nie wyjaśnioną wariancję, tak jak ją rozumiem, np

otherPCA$loadings

Loadings:
         Comp.1 Comp.2 Comp.3 Comp.4
Murder                         0.995
Assault  -0.995                     
UrbanPop        -0.977 -0.201       
Rape            -0.201  0.974   
użytkownik1320502
źródło
2
Zauważ, że znaki obciążeń są dowolne. Wszystkie trzy zmienne przestępcze są ze sobą pozytywnie skorelowane, ale mądrze byłoby pracować na podstawie powyższych znaków obciążeń.
Nick Cox,
Niestety uważam, że zaakceptowana odpowiedź na to pytanie jest nieprawidłowa. Poniżej zamieściłem własną odpowiedź.
ameba mówi Przywróć Monikę

Odpowiedzi:

11

Masz rację, ładunki mogą ci w tym pomóc. Można ich użyć do obliczenia korelacji między zmiennymi a głównymi składnikami. Co więcej, suma kwadratowych obciążeń jednej zmiennej we wszystkich głównych składnikach jest równa 1. Stąd, kwadratowe ładunki informują o proporcji wariancji jednej zmiennej wyjaśnionej przez jeden główny składnik.

Problem z princomp polega na tym, że pokazuje on tylko „bardzo wysokie” obciążenia. Ale ponieważ obciążenia są tylko wektorami własnymi macierzy kowariancji, wszystkie obciążenia można uzyskać za pomocą eigenpolecenia w R:

 loadings <- eigen(cov(USArrests))$vectors
 explvar <- loadings^2

Teraz masz żądane informacje w matrycy explvar.

losowa osoba
źródło
dziękuję ci losowo, czy mógłbyś mi pokazać na przykład, assaultczy urban popmożemy to zrobić? częściowo zdezorientowany, ponieważ w macierzy występuje tylko jedna korelacja dlaassault
user1320502
1
Przepraszamy, poprawiłem odpowiedź i nie zauważyłem, że skomentowałeś już mój post. ładunek szturmowy z -0,995 na PC1. Można zatem stwierdzić, że po podniesieniu do kwadratu tej wartości PC1 wyjaśnia 99% wariancji ataku zmiennego. Po podniesieniu wartości popu miejskiego do kwadratu można stwierdzić, że PC3 wyjaśnia 4%, a PC2 95,5% wariancji popu miejskiego.
random_guy
1
Czy OP nie pyta o to, ile PCA można przypisać zmiennej? Twoja odpowiedź dotyczy tego, jak dużą część zmiennej można wytłumaczyć CPA
Heisenberg
2
Wracając do tego pytania, myślę, że ta odpowiedź jest zła. Rozważ 10 zmiennych, które są wysoce (99%) skorelowane między sobą i wszystkie są skalowane do wariancji jednostkowej. Pierwszy komputer będzie w zasadzie średnią między nimi. Zatem pierwszym wektorem własnym będzie o długości , a pierwsza wartość własna wynosi prawie , powiedzmy . Teraz każda zmienna jest prawie w pełni wyjaśniona przez pierwszy komputer. Pierwszy komputer jest prawie w pełni wyjaśniony przez każdą zmienną. Ale w jaki sposób zamierzasz wywnioskować jeden lub drugi z kwadratowych elementów które są równe ? 1 10 9.9 w 0.1w=(0.3,0.3,...0.3)1109.9w0.1
Ameba mówi Przywróć Monikę
2
Przepraszam za naleganie, ale czy uważasz, że się mylę w powyższym komentarzu? Jeśli nie, możesz edytować swoją odpowiedź, aby usunąć potencjalne zamieszanie, byłoby to bardzo pomocne dla przyszłych czytelników. Właśnie opublikowałem odpowiedź, próbując bardziej szczegółowo wyjaśnić te problemy.
ameba mówi Przywróć Monikę
9

Myślę, że przyjęta odpowiedź może być niebezpiecznie myląca (-1). Istnieją co najmniej cztery różne pytania zmieszane razem w PO. Rozważę je jeden po drugim.


  • Pytanie 1 Ile wariancji danego komputera tłumaczy oryginalna zmienna? Ile wariancji danej zmiennej oryginalnej wyjaśnia dany komputer?

Te dwa pytania są równoważne, a odpowiedzi udziela kwadrat współczynnika korelacji między zmienną a komputerem. Jeśli PCA jest wykonywane na korelacjach, wówczas współczynnik korelacji jest podawany ( patrz tutaj ) przez odpowiedni element obciążeń . PC jest związany z wektorem własnym macierzy korelacji i odpowiednią wartością własną . Wektor jest podany przez . Jego elementami są korelacje tego komputera z odpowiednimi oryginalnymi zmiennymi. r ir2riVisiLiLi=(si)1/2Vi

Zauważ, że wektory własne i ładunki to dwie różne rzeczy! W R wektory własne są myląco nazywane „ładunkami”; należy zachować ostrożność: ich elementy nie są pożądanymi korelacjami. [Aktualnie akceptowana odpowiedź w tym wątku dezorientuje oba.]ViLi

Ponadto, jeśli PCA jest wykonywane na kowariancjach (a nie na korelacjach), wówczas ładunki dadzą również kowariancje, a nie korelacje. Aby uzyskać korelacje, należy je obliczyć ręcznie, zgodnie z PCA. [Aktualnie akceptowana odpowiedź na ten temat jest niejasna.]

  • Q2 Ile wariancji danej oryginalnej zmiennej wyjaśnia dany podzbiór komputerów? Jak wybrać ten podzbiór, aby wyjaśnić np. wariancji?80%

Ponieważ komputery PC są ortogonalne (tj. Nieskorelowane), można po prostu dodać indywidualne wartości (patrz Q1), aby uzyskać globalną wartość .r2R2

Aby wybrać podzbiór, można dodawać komputery o najwyższych korelacjach ( ) z daną pierwotną zmienną, aż do osiągnięcia pożądanej ilości wyjaśnionej wariancji ( ).r2R2

  • Pytanie 3 Ile wariancji danego komputera tłumaczy dany podzbiór oryginalnych zmiennych? Jak wybrać ten podzbiór, aby wyjaśnić np. wariancji?80%

Odpowiedź na to pytanie nie jest udzielana automatycznie przez PCA! Np. Jeśli wszystkie oryginalne zmienne są bardzo silnie skorelowane z parami , wówczas korelacje między pierwszym komputerem a wszystkimi zmiennymi będą wokół . Nie można dodać tych liczb aby obliczyć odsetek wariancji tego komputera wyjaśniony, powiedzmy, pięcioma zmiennymi oryginalnymi (spowodowałoby to nonsensowny wynik ). Zamiast tego należałoby zrestartować komputer na tych zmiennych i uzyskać wielokrotną wartość .R = 0.9 R 2 R 2 = 0,9 0,9 5 > 1 R 2r=0.9r=0.9r2R2=0.90.95>1R2

Jak wybrać podzbiór wyjaśniający daną wielkość wariancji, zasugerował @FrankHarrell (+1).

ameba mówi Przywróć Monikę
źródło
+1, to powinna być zaakceptowana odpowiedź.
gented
8

Możesz dokonać wyboru zmiennych krokowych do tyłu lub do przodu, przewidując składnik lub liniową kombinację składników na podstawie ich zmiennych składowych. będzie 1,0 w pierwszym etapie, jeśli korzystają z tyłu Stepdown. Chociaż regresja krokowa jest katastrofą podczas przewidywania , może działać dobrze, gdy przewidywanie jest mechanistyczne, jak ma to miejsce w tym przypadku. Możesz dodawać lub usuwać zmienne, dopóki nie wyjaśnisz 0,8 lub 0,9 (na przykład) informacji w głównych komponentach. YR2Y

Frank Harrell
źródło
6

Dane dotyczące aresztowań USA w pakiecie z R są tutaj tylko przykładem, ale zauważam, że obliczenia ładunków w pytaniu pochodzą z PCA macierzy kowariancji . Jest to gdzieś pomiędzy arbitralnym a nonsensownym, ponieważ zmienne są mierzone w różnych skalach.

Populacja miejska wygląda jak procent. Kalifornia jest 91% i najwyższa.

Trzy zmienne dotyczące przestępczości wydają się być liczbą aresztowań za przestępstwa wyrażoną w stosunku do liczby ludności (przypuszczalnie przez pewien okres czasu). Prawdopodobnie jest to gdzieś udokumentowane, niezależnie od tego, czy jest aresztowaniem na 1000, 10000 czy cokolwiek innego.

Średnia zmiennej szturmowej w danych jednostkach wynosi około 171, a średnia liczba zabójstw wynosi około 8. Zatem wyjaśnienie twoich obciążeń jest takie, że w dużej mierze wzór jest artefaktem: zależy od bardzo różnej zmienności zmiennych.

Tak więc, chociaż dane mają sens w tym, że jest o wiele więcej aresztowań za napaści niż za morderstwa itp., Ten znany (lub nie zaskakujący) fakt dominuje w analizie.

To pokazuje, że jak każde inne miejsce w statystykach, musisz pomyśleć o tym, co robisz w PCA.

Jeśli pójdziesz dalej:

  1. Twierdziłbym, że lepiej jest pominąć procent urbanizacji. Bycie miejskim nie jest przestępstwem; może oczywiście służyć jako proxy dla zmiennych wpływających na przestępczość.

  2. Moim zdaniem PCA oparty na macierzy korelacji miałby większy sens. Inną możliwością jest praca z logarytmami wskaźników aresztowań, a nie wskaźników aresztowań (wszystkie wartości są dodatnie; patrz poniżej).

Uwaga: Odpowiedź @ random_guy celowo wykorzystuje macierz kowariancji.

Oto kilka statystyk podsumowujących. Użyłem Staty, ale to dość niematerialne.

    Variable |       Obs        Mean    Std. Dev.       Min        Max
-------------+--------------------------------------------------------
   urban_pop |        50       65.54    14.47476         32         91
      murder |        50       7.788     4.35551         .8       17.4
        rape |        50      21.232    9.366384        7.3         46
     assault |        50      170.76    83.33766         45        337
Nick Cox
źródło