Jaka jest różnica między funkcjami R prcomp i princomp?

69

Porównałem ?prcompi ?princompznalazłem coś na temat analizy głównego składnika w trybie Q i R (PCA). Ale szczerze mówiąc - nie rozumiem tego. Czy ktoś może wyjaśnić różnicę, a może nawet wyjaśnić, kiedy zastosować?

hans0l0
źródło
4
Och, to naprawdę frustrujące. :)
Roman Luštrik,
2
Czy powstaje pytanie o różnicę między funkcjami prcomp i princomp w R, czy o różnicę między „trybem Q” a „trybem PCA w trybie R”? Oba są ze sobą niezwiązane.
Brett,
Minęło trochę czasu. Ale sprawdzę, jak tylko będę miał czas. IIRC Właściwie miałem pewne różnice ...
hans0l0

Odpowiedzi:

50

Różnica między nimi nie ma nic wspólnego z rodzajem PCA, które wykonują, tylko z metodą, której używają. Jak mówi strona pomocy dla prcomp:

Obliczenia dokonuje się przez rozkład wartości w liczbie pojedynczej (wyśrodkowanej i prawdopodobnie skalowanej) macierzy danych, a nie przez zastosowanie eigenmacierzy kowariancji. Jest to ogólnie preferowana metoda dokładności numerycznej.

Z drugiej strony princomp strona pomocy mówi:

Obliczenia wykonuje się za pomocą eigenmacierzy korelacji lub kowariancji, określonej przez cor. Odbywa się to w celu zapewnienia zgodności z wynikiem S-PLUS. Korzystny sposób obliczania jest użycie svdna x, podobnie jak w prcomp„.

Tak więc, prcompkorzystne jest , choć w praktyce jest mało prawdopodobne, aby zobaczyć dużej różnicy (na przykład, jeśli uruchomić przykłady na stronach pomóc powinien dostać identyczne wyniki).

Dave
źródło
1
Istnieje kilka makabrycznych szczegółów technicznych na temat różnych leżących u podstaw algebry liniowej i procedur LAPACK używanych w mojej odpowiedzi na pytanie: Dlaczego główne składniki PCA (wektory własne macierzy kowariancji) są wzajemnie ortogonalne?
Silverfish
1
Zobacz także Dlaczego PCA danych za pomocą SVD danych? do dyskusji na temat tego, dlaczego SVD na matrycy danych, w implementacji prcomp, jest preferowaną metodą.
ameba
22

Zazwyczaj analiza wieloczynnikowa (obliczanie korelacji, wydobywania śladów, itd.) Odbywa się z kolumn danych, które funkcje lub pytania, - podczas próbek, wiersze, są r espondents. W ten sposób nazywa się to analizą R. Czasem jednak może chcesz zrobić wieloczynnikowej analizy responsents, natomiast q ytania są traktowane jako próbek. To byłaby analiza Q- way.

Nie ma między nimi żadnej formalnej różnicy, więc możesz zarządzać obiema za pomocą tej samej funkcji, tylko transponować swoje dane. Istnieją jednak różnice w kwestiach standaryzacji i interpretacji wyników.

To jest ogólna odpowiedź: nie dotykam konkretnie funkcji R prcompi princompponieważ nie jestem użytkownikiem R i nie jestem świadomy możliwych różnic między nimi.

ttnphns
źródło
5

Przydatna i szczegółowa dokumentacja Gregory'ego B. Andersona , zatytułowana, PRINCIPAL COMPONENT ANALYSIS IN R AN EXAMINATION OF THE DIFFERENT FUNCTIONS AND METHODS TO PERFORM PCAzawiera więcej informacji na ten temat.

Ze wstępu wyodrębniono dwa akapity:

W R istnieją dwie ogólne metody przeprowadzania PCA bez żadnych brakujących wartości: (1) rozkład widmowy (tryb R [znany również jako składanie eigend]) i (2) rozkład wartości pojedynczych (tryb Q; R Development Core Team 2011). Obie te metody mogą być wykonywane ręcznie przy użyciu funkcji eigen (tryb R) i svd (tryb Q), lub mogą być wykonywane przy użyciu wielu funkcji PCA znajdujących się w pakiecie statystyk i innych dodatkowych dostępnych pakietach. Metoda analizy widmowej dekompozycji bada kowariancje i korelacje między zmiennymi, natomiast metoda dekompozycji liczby pojedynczej analizuje kowariancje i korelacje między próbkami. Podczas gdy obie metody można łatwo wykonać w obrębie R, metoda dekompozycji liczby pojedynczej (tj.

Ten dokument koncentruje się na porównaniu różnych metod przeprowadzania PCA w R i zapewnia odpowiednie techniki wizualizacji w celu zbadania normalności w pakiecie statystycznym. Mówiąc dokładniej, ten dokument porównuje sześć różnych funkcji utworzonych dla PCA lub z których można korzystać: eigen, princomp, svd, prcomp, PCA i pca. W całym dokumencie niezbędny kod R do wykonywania tych funkcji jest osadzony w tekście za pomocą czcionki Courier New i jest kodowany kolorami przy użyciu techniki podanej w Tinn-R ( https://sourceforge.net/projects/tinn-r ). Ponadto wyniki funkcji są porównywane przy użyciu procedury symulacyjnej, aby sprawdzić, czy różne metody różnią się wartościami własnymi, wektorami własnymi i wynikami uzyskanymi z danych wyjściowych.

pengchy
źródło
2
Odpowiedzi są lepsze, gdy są samodzielne, ponieważ linki często się psują (np. Gdy strona się poruszy lub zostanie usunięta). Czy mógłbyś spróbować rozwinąć swoją odpowiedź?
Patrick Coulombe,
@PatrickCoulombe, zostało zrobione. Dzięki za Twoją sugestię. Zauważę to w przyszłości.
pengchy
1

prcompn-1princompn

Poniżej są moje wyniki testu:

> job<-read.table("./job_perf.txt", header=TRUE, sep="")
> pc.cr<-prcomp(job, scale=TRUE, cor=TRUE, scores=TRUE)
> pc.cr1<-princomp(job, scale=TRUE, cor=TRUE, scores=TRUE)
> pc.cr$scale
    commun probl_solv    logical      learn   physical appearance
  5.039841   1.689540   2.000000   4.655398   3.770700   4.526689
> pc.cr1$scale
    commun probl_solv    logical      learn   physical appearance
  4.805300   1.610913   1.906925   4.438747   3.595222   4.316028

Dane testowe:

commun probl_solv logical learn physical appearance 12 52 20 44 48 16 12 57 25 45 50 16 12 54 21 45 50 16 13 52 21 46 51 17 14 54 24 46 51 17 22 52 25 54 58 26 22 56 26 55 58 27 17 52 21 45 52 17 15 53 24 45 53 18 23 54 23 53 57 24 25 54 23 55 58 25

Yanlong Li
źródło