Próbowałem odtworzyć niektóre badania (używając PCA) z SPSS w R. Z mojego doświadczenia wynika, że principal()
funkcja z pakietu psych
była jedyną funkcją, która się zbliżyła (lub jeśli moja pamięć służy mi dobrze, martwa), aby dopasować wynik. Aby dopasować te same wyniki co w SPSS, musiałem użyć parametru principal(..., rotate = "varimax")
. Widziałem artykuły mówiące o tym, jak zrobili PCA, ale w oparciu o wyniki SPSS i użycie rotacji, to bardziej przypomina analizę czynnikową.
Pytanie: Czy PCA, nawet po rotacji (użyciu varimax
), nadal jest PCA? Miałem wrażenie, że może to być analiza czynnikowa ... Jeśli nie, jakich szczegółów brakuje?
r
spss
pca
factor-analysis
factor-rotation
Roman Luštrik
źródło
źródło
principal
funkcji, o którą pytałeś. Jeśli jego odpowiedź rzeczywiście odpowiedziała na twoje pytanie, być może twoje pytanie nie zostało odpowiednio sformułowane; czy rozważysz edycję? W przeciwnym razie uważam, że odpowiedź doktoratu jest znacznie bliższa odpowiedzi na twoje pytanie. Pamiętaj, że możesz zmienić zaakceptowaną odpowiedź w dowolnym momencie.Odpowiedzi:
To pytanie dotyczy głównie definicji PCA / FA, więc opinie mogą się różnić. Uważam, że PCA + varimax nie powinien być nazywany ani PCA, ani FA, ale raczej wyraźnie określany np. Jako „PCA z rotacją varimax”.
Powinienem dodać, że jest to dość mylący temat. W tej odpowiedzi chcę wyjaśnić, czym właściwie jest rotacja ; będzie to wymagać trochę matematyki. Przypadkowy czytelnik może przejść bezpośrednio do ilustracji. Tylko wtedy możemy omówić, czy rotacja PCA + powinna być nazywana „PCA”.
Jednym z odniesień jest książka Jolliffe'a „Principal Component Analysis”, sekcja 11.1 „Rotation of Principal Components”, ale uważam, że może być jaśniejsza.
Niech będzie macierzą danych, która, jak zakładamy, jest wyśrodkowana. PCA sprowadza się ( patrz moja odpowiedź tutaj ) do dekompozycji liczby pojedynczej: . Istnieją dwa równoważne, ale komplementarne widoki tego rozkładu: widok „projekcyjny” w stylu PCA i widok „ukrytych zmiennych” w stylu FA. n × p X = U S V ⊤X n×p X=USV⊤
Zgodnie z widokiem w stylu PCA znaleźliśmy kilka kierunków ortogonalnych (są to wektory własne macierzy kowariancji, zwane także „głównymi kierunkami” lub „osiami”) i „głównymi składnikami” ( zwane również „wynikami” głównego składnika) to rzuty danych w tych kierunkach. Główne komponenty są nieskorelowane, pierwszy ma maksymalnie możliwą wariancję itp. Możemy napisać:U S X = U S ⋅ V ⊤ = Wyniki ⋅ Główne kierunki .V US
Zgodnie z poglądem w stylu FA znaleźliśmy pewne nieskorelowane „czynniki ukryte” wariancji jednostkowej, które powodują obserwowane zmienne poprzez „obciążenia”. Rzeczywiście, są znormalizowanymi składnikami głównymi (nieskorelowanymi i z wariancją jednostek), a jeśli zdefiniujemy ładunki jako , a następnie (Zauważ, że .) Oba widoki są równoważne. Zauważ, że ładunki są wektorami własnymi skalowanymi przez odpowiednie wartości własne ( są wartościami własnymi macierzy kowariancji).L=VS/ √U˜=n−1−−−−−√U X= √L=VS/n−1−−−−−√ S ⊤=SS/ √
(Powinienem dodać w nawiasach, że PCA FA≠ ; FA wyraźnie dąży do znalezienia ukrytych czynników, które są liniowo mapowane do obserwowanych zmiennych poprzez ładunki; jest bardziej elastyczny niż PCA i daje różne ładunki. Dlatego wolę nazywać to powyższym „Widok w stylu FA na PCA”, a nie FA, nawet jeśli niektórzy uważają, że jest to jedna z metod FA).
Co robi rotacja? Np. Obrót prostopadły, taki jak varimax. Po pierwsze, pod uwagę tylko komponenty , tj .:Następnie bierze kwadratową ortogonalną macierzy i podłącza do tego rozkładu: gdzie obrócone ładunki są podawane przezX ≈ U k S k V ⊤ k = ˜ U k L ⊤ k . k × k T T T ⊤ = I X ≈ U k S k V ⊤ k = U k T T ⊤ S k V ⊤ k = ˜ U r o t L ⊤ r o t ,k<p
Zauważ, że obracane są: (1) znormalizowane wyniki, (2) ładunki. Ale nie surowe wyniki, a nie główne kierunki! Zatem obrót odbywa się w ukrytej przestrzeni, a nie w pierwotnej przestrzeni. To jest absolutnie niezbędne.
Z punktu widzenia stylu FA niewiele się wydarzyło. (A) Ukryte czynniki są nadal nieskorelowane i znormalizowane. (B) Nadal są one mapowane na obserwowane zmienne poprzez (obrócone) obciążenia. (C) Wielkość wariancji zarejestrowanej przez każdy składnik / współczynnik jest dana przez sumę kwadratów wartości odpowiedniej kolumny obciążeń w . (D) Geometrycznie ładunki nadal obejmują tę samą wymiarową podprzestrzeń w (podprzestrzeń rozciągnięta przez pierwsze wektorów własnych PCA). (E) Przybliżenie do i błąd rekonstrukcji w ogóle się nie zmieniły. (F) Macierz kowariancji jest nadal równie dobrze aproksymowana: k R p k XLrot k Rp k X
Ale punkt widzenia w stylu PCA praktycznie się załamał. Obrócone obciążenia nie odpowiadają już ortogonalnym kierunkom / osiom w , tj. Kolumny nie są ortogonalne! Co gorsza, jeśli [ortogonalnie] rzutujesz dane na kierunki podane przez obrócone obciążenia, otrzymasz skorelowane (!) Prognozy i nie będziesz w stanie odzyskać wyników. [Zamiast tego, aby obliczyć znormalizowane wyniki po obrocie, należy pomnożyć macierz danych przez pseudo-odwrotność obciążeń . Alternatywnie można po prostu obrócić oryginalne standardowe wyniki za pomocą macierzy rotacji:L r o t ˜ U r o t = X ( L + r o t ) ⊤ ˜ U r o t = ˜ U TRp Lrot U˜rot=X(L+rot)⊤ U˜rot=U˜T ] Ponadto obrócone komponenty nie przechwytują kolejno maksymalnej ilości wariancji: wariancja jest rozdzielana między komponenty (nawet chociaż wszystkie obróconych komponentów przechwytuje dokładnie taką samą wariancję jak wszystkie oryginalnych głównych elementów).kk k
Oto ilustracja. Dane są elipsą 2D rozciągniętą wzdłuż głównej przekątnej. Pierwszy główny kierunek to główna przekątna, drugi jest do niej ortogonalny. Wektory obciążające PCA (wektory własne skalowane wartościami własnymi) są pokazane na czerwono - skierowane w obu kierunkach, a także rozciągnięte przez stały współczynnik widoczności. Następnie zastosowałem obrót prostopadły o do obciążeń. Wynikowe wektory ładowania są pokazane w kolorze magenta. Zwróć uwagę, że nie są one ortogonalne (!).30∘
Oto intuicja w stylu FA: wyobraź sobie „utajoną przestrzeń”, w której punkty wypełniają mały okrąg (pochodzą z Gaussa 2D z odchyleniami jednostek). Ten rozkład punktów jest następnie rozciągany wzdłuż ładunków PCA (czerwony), aby stać się elipsą danych, którą widzimy na tej figurze. Jednak ten sam rozkład punktów można obracać, a następnie rozciągać wzdłuż obróconych ładunków PCA (magenta), aby uzyskać tę samą elipsę danych .
[Aby faktycznie zobaczyć, że ortogonalny obrót obciążeń jest obrotem , należy spojrzeć na dwójkę PCA; tam wektory / promienie odpowiadające oryginalnym zmiennym po prostu się obracają.]
Podsumujmy. Po rotacji ortogonalnej (takiej jak varimax) osie „obrócone-główne” nie są ortogonalne, a rzuty na nie ortogonalne nie mają sensu. Dlatego należy raczej upuścić cały punkt widzenia w osiach / rzutach. Dziwnie byłoby nadal nazywać to PCA (dotyczy to projekcji o maksymalnej wariancji itp.).
Z punktu widzenia stylu FA po prostu obróciliśmy nasze (znormalizowane i nieskorelowane) czynniki ukryte, co jest prawidłową operacją. W FA nie ma „prognoz”; zamiast tego czynniki utajone generują obserwowane zmienne poprzez obciążenia. Ta logika jest nadal zachowana. Zaczęliśmy jednak od głównych składników, które tak naprawdę nie są czynnikami (ponieważ PCA nie jest tym samym co FA). Dziwnie byłoby też nazywać to FA.
Zamiast zastanawiać się, czy należy „nazwać” PCA, czy FA, sugerowałbym skrupulatność w określaniu dokładnie stosowanej procedury: „PCA, po której następuje rotacja varimax”.
Post Scriptum. Jest to możliwe pod alternatywną procedurę obrotu, w którym wprowadzane są między i . Spowodowałoby to obrót surowych wyników i wektorów własnych (zamiast standardowych wyników i ładowań). Największym problemem związanym z tym podejściem jest to, że po takiej „rotacji” wyniki nie będą już nieskorelowane, co jest dość śmiertelne dla PCA. Można to zrobić, ale nie tak rozumie się i stosuje rotacje.U S V ⊤TT⊤ US V⊤
źródło
PCA loading vectors... are shown in red
,stretched along the rotated PCA loadings (magenta)
. Zastanawiam się, jak „ładunki” lub ich „wektor” mogą być pokazane jako osie na wykresie rozrzutu danych. Czy możesz to wyjaśnić? A pomysł „rozciągania”? Dzięki.Analiza głównych składników (PCA) i analiza wspólnych czynników (CFA) to odrębne metody. Często dają one podobne wyniki, a PCA jest używana jako domyślna metoda ekstrakcji w procedurach analizy współczynnika SPSS. To niewątpliwie powoduje wiele nieporozumień co do rozróżnienia między nimi.
Najważniejsze jest to, że są to dwa różne modele, koncepcyjnie. W PCA komponenty są rzeczywistymi liniowymi kombinacjami ortogonalnymi, które maksymalizują całkowitą wariancję. W FA czynniki są kombinacjami liniowymi, które maksymalizują wspólną część wariancji - leżące u podstaw „ukrytych konstrukcji”. Dlatego FA jest często nazywany „analizą wspólnego czynnika”. FA korzysta z różnych procedur optymalizacji, a wynik, w przeciwieństwie do PCA, zależy od zastosowanej procedury optymalizacji i punktów początkowych dla tych procedur. Po prostu nie ma jednego unikalnego rozwiązania.
W R funkcja factanal () zapewnia CFA wyodrębnienie maksymalnego prawdopodobieństwa. Nie należy więc oczekiwać, że odtworzy wynik SPSS oparty na ekstrakcji PCA. To po prostu inny model lub logika. Nie jestem pewien, czy uzyskasz ten sam wynik, jeśli użyjesz ekstrakcji Maksymalnego Prawdopodobieństwa SPSS, ponieważ mogą nie używać tego samego algorytmu.
Dla lepszego lub gorszego w R można jednak odtworzyć pomieszaną „analizę czynnikową”, którą SPSS zapewnia jako domyślną. Oto proces w R. Za pomocą tego kodu jestem w stanie odtworzyć wynik „analizy czynnikowej” głównego komponentu SPSS przy użyciu tego zestawu danych. (Z wyjątkiem znaku, który jest nieokreślony). Ten wynik można również obrócić za pomocą dowolnej z dostępnych metod rotacji Rs.
źródło
prcomp
lubprincomp
robi w porównaniu do pomieszanego podejścia SPSS? Co właściwie robi SPSS przez ekstrakcję?zz <- scale(attitude,T,T)
ipc1 <- zz %*% solve(cor(attitude),lamba[,1])
. Gdzie lambda jest wynikiem ostatniej linii przykładu @Brett Magills.Ta odpowiedź ma na celu przedstawienie, w formie wykresu ścieżkowego, rzeczy, o których @amoeba rozumował w swojej głębokiej (ale nieco skomplikowanej) odpowiedzi w tym wątku (w pewnym sensie zgadzam się z tym w 95%) i jak mi się wydają .
PCA w swojej właściwej, minimalnej formie jest specyficznym ortogonalnym obrotem skorelowanych danych do jego nieskorelowanej postaci, przy czym główne składniki skimmują kolejno coraz mniej ogólnej zmienności. Jeśli chcemy jedynie zmniejszenia wymiarów, zwykle nie obliczamy obciążeń i czegokolwiek, co ciągną za sobą. Jesteśmy zadowoleni z (RAW) głównych punktów składowych . [Uwaga: notacje na wykresie nie są dokładnie zgodne z @ amoebą, - Trzymam się tego, co przyjmuję w niektórych innych odpowiedziach.]P
Na wykresie biorę prosty przykład dwóch zmiennych
p=2
i używam obu wyodrębnionych głównych składników. Chociaż zwykle przechowujemy tylko kilka pierwszychm<p
elementów, dla rozważanego pytania teoretycznego („Czy PCA z rotacją jest PCA czy co?”) Nie ma znaczenia, czy zachować,m
czy wszystkiep
; przynajmniej w mojej konkretnej odpowiedzi.Sztuczka ładunków polega na ściągnięciu skali (wielkości, zmienności, bezwładności ) ze składników (surowe wyniki) i na współczynniki (wektory własne), pozostawiając pierwszą z nich jako „szkielet” (standaryzowany pr . punkty składowe), a ten drugi mięsisty (obciążenia). Dane przywracasz równie dobrze za pomocą obu: . Ale ładunki otwierają perspektywy: (i) interpretację komponentów; (ii) do obracania; (iii) przywrócenie korelacji / kowariancji zmiennych. Wynika to z faktu, że zmienność danych została zapisana w ładunkach, jako ich ładunkach.V P z A X = P V ′ = P z A ′L V Pz A X=PV′=PzA′
I mogą przywrócić to obciążenie z powrotem do punktów danych w dowolnym momencie - teraz lub po obrocie . Jeśli pomyślimy o rotacji ortogonalnej, takiej jak varimax, oznacza to, że chcemy, aby komponenty pozostały nieskorelowane po wykonaniu rotacji. Tylko dane z sferyczną macierzą kowariancji, gdy są obracane ortogonalnie, zachowują nieskorelację. I voila, znormalizowane główne składniki (które w uczeniu maszynowym często nazywane są „danymi bielonymi PCA”) to te magiczne dane ( są w rzeczywistości proporcjonalne do lewej, tj. własne danych). Gdy szukamy macierzy rotacji varimaxP z QPz Pz Q aby ułatwić interpretację ładunków, punkty danych biernie oczekują swojej czystej kulistości i tożsamości (lub „bieli”).
Po znalezieniu obrót o jest równoważny zwykłemu obliczeniu znormalizowanych wyników składowych głównych przez uogólnioną odwrotność macierzy obciążeń, tym razem obróconych obciążeń, (patrz tabela ). Wynikowe główne elementy obrócone varimax, są nieskorelowane, tak jak tego chcieliśmy, a dane są przez nie przywracane tak ładnie, jak przed rotacją: . Możemy następnie podać je z powrotem na ich rozmiar osadza (i odpowiednio obraca się) w - ich unstandardize: .P oo R C z X = P oo ' = C z ' r A r CQ Pz Ar Cz X=PzA′=CzA′r Ar C
Powinniśmy mieć świadomość, że „główne składniki obracane varimax” nie są już głównymi składnikami: do podkreślenia tego użyłem notacji Cz, C zamiast Pz, P. Są tylko „komponentami”. Główne składniki są unikalne, ale składników może być wiele. Rotacje inne niż Varimax przyniesie inne nowe zmienne zwane również komponenty i również skorelowane, oprócz naszych nich.C
Mówiąc też, elementy podstawowe (obrócone w varimax (lub inaczej ortogonalnie obrócone)) (teraz tylko „elementy”), choć pozostają nieskorelowane, ortogonalne, nie oznaczają, że ich obciążenia są również nadal ortogonalne. Kolumny są wzajemnie ortogonalne (podobnie jak wektory własne ), ale nie kolumny (patrz także przypis tutaj ).V A rA V Ar
I wreszcie - obracanie surowych głównych komponentów pomocą naszego nie jest użyteczną akcją. Otrzymamy skorelowane zmienne o problematycznym znaczeniu. pojawił się do optymalizacji (w pewien określony sposób) konfiguracji obciążenia który zaabsorbował całą skalę w nich . nigdy nie został przeszkolony do obracania punktów danych z zachowaniem całej skali. Obracanie z będzie równoważne obracaniu wektorów własnych z (wQ " C " Q P Q V Q V r " C " = X V rP Q "C" Q Q P Q V Q Vr ), a następnie obliczenie wyników surowego komponentu jako . Te „ścieżki” odnotowane przez @amoeba w Postscriptum."C"=XVr
Te ostatnio opisane działania (w większości bezcelowe) przypominają nam, że wektory własne, nie tylko ładunki, mogą być ogólnie obracane. Na przykład można zastosować do nich procedurę varimax, aby uprościć ich strukturę. Ale ponieważ wektory własne nie są tak pomocne w interpretacji znaczenia składników, jak ładunki, obrót wektorów własnych jest rzadko wykonywany.
Tak więc PCA z późniejszą rotacją varimax (lub inną) wynosi
W tej odpowiedzi nie odniosłem się do analizy czynnikowej. Wydaje mi się, że użycie słowa „utajona przestrzeń” przez @ amoeba jest nieco ryzykowne w kontekście zadanego pytania. Zgodzę się jednak, że rotacja analityczna PCA + może być nazwana „ widokiem w stylu FA na PCA”.
źródło
W
psych::principal()
można robić różne rodzaje obr / przekształceń do wydobytego główny składnik (ów) lub „” PC „” za pomocąrotate=
argumentu, jak:"none"
,"varimax"
(domyślnie),"quatimax"
,"promax"
,"oblimin"
,"simplimax"
, i"cluster"
. W razie potrzeby musisz empirycznie zdecydować, który z nich powinien mieć sens, w zależności od własnej oceny i wiedzy na temat badanego przedmiotu. Kluczowe pytanie, które może dać ci wskazówkę: które z nich jest bardziej zrozumiałe (ponownie w razie potrzeby)?W pomocy mogą okazać się również pomocne:
źródło
Rozumiem, że rozróżnienie między analizą PCA a analizą czynnikową polega przede wszystkim na tym, czy występuje termin błędu. Zatem PCA może i będzie wiernie reprezentować dane, podczas gdy analiza czynnikowa jest mniej wierna w stosunku do danych, na których jest trenowana, ale próbuje reprezentować leżące u podstaw trendy lub wspólnotowość danych. Zgodnie ze standardowym podejściem PCA nie jest rotowane, ale matematycznie jest to możliwe, więc ludzie robią to od czasu do czasu. Zgadzam się z komentatorami, że „znaczenie” tych metod jest nieco do uchwycenia i że prawdopodobnie rozsądnie jest upewnić się, że funkcja, której używasz, robi to, co zamierzasz - na przykład, jak zauważysz, R ma pewne funkcje, które wykonują inny rodzaj PCA niż użytkownicy SPSS są zaznajomieni.
źródło
Dzięki chaosowi w definicjach obu są one właściwie synonimami. Nie wierz słowom i zajrzyj głęboko do doków, aby znaleźć równania.
źródło
Chociaż to pytanie ma już zaakceptowaną odpowiedź, chciałbym dodać coś do sedna pytania.
„PCA” - jeśli dobrze pamiętam - oznacza „analizę głównych składników”; tak długo, jak analizujesz główne składniki, może to być bez rotacji lub z rotacją, wciąż jesteśmy w trakcie analizy „głównych komponentów” (które zostały znalezione przez odpowiedni początkowy rozkład macierzy).
Sformułowałbym, że po obróceniu „varimax” na pierwszych dwóch głównych składnikach, że mamy „rozwiązanie varimax dwóch pierwszych komputerów” (lub coś innego), ale nadal są w ramach analizy głównych składników, lub krótsze, są w ramach „pca”.
Aby wyjaśnić moją kwestię jeszcze bardziej: nie wydaje mi się, aby proste pytanie o rotację wprowadzało problem rozróżnienia między EFA i CFA (ten ostatni wspomniany / wprowadzony do problemu na przykład w odpowiedzi Bretta)
źródło
Uważam, że jest to najbardziej pomocne: Abdi i Williams, 2010, Analiza głównych składników .
(patrz papier dla definicji Q).
źródło