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   

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.


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.9⋅0.9⋅5>1R2

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


+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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.