Was ist der Unterschied zwischen den R-Funktionen prcomp und princomp?


70

Ich habe etwas über Q-Mode- und R-Mode-Hauptkomponentenanalyse (PCA) verglichen ?prcompund ?princompgefunden. Aber ehrlich - ich verstehe es nicht. Kann jemand den Unterschied erklären und vielleicht sogar erklären, wann welche Anwendung anzuwenden ist?


2
Ist die Frage nach dem Unterschied zwischen den Funktionen prcomp und princomp in R oder nach dem Unterschied zwischen "Q-mode" und "R-mode PCA"? Die beiden haben nichts miteinander zu tun.
Brett

Es ist eine Weile her. Aber ich werde nachsehen, sobald ich Zeit habe. IIRC Ich hatte tatsächlich einige Unterschiede ...
hans0l0

Antworten:


50

Der Unterschied zwischen ihnen hat nichts mit der Art der PCA zu tun, die sie durchführen, sondern nur mit der Methode, die sie verwenden. Wie die Hilfeseite für prcompsagt:

Die Berechnung erfolgt durch eine Singulärwertzerlegung der (zentrierten und möglicherweise skalierten) Datenmatrix, nicht durch Verwendung eigender Kovarianzmatrix. Dies ist im Allgemeinen die bevorzugte Methode für die numerische Genauigkeit.

Auf der princomp Hilfeseite heißt es dagegen:

Die Berechnung erfolgt mit Hilfe eigender Korrelations- oder Kovarianzmatrix, die von bestimmt wird cor. Dies erfolgt aus Kompatibilitätsgründen mit dem S-PLUS-Ergebnis. Eine bevorzugte Berechnungsmethode ist die Verwendung svdvon x, wie in prcomp. "

Dies prcompwird bevorzugt , obwohl Sie in der Praxis wahrscheinlich keinen großen Unterschied feststellen werden (wenn Sie beispielsweise die Beispiele auf den Hilfeseiten ausführen, sollten Sie identische Ergebnisse erzielen).


1
Es gibt einige grausame technische Details zu den verschiedenen zugrunde liegenden linearen Algebra- und LAPACK-Routinen, die in meiner Antwort auf Warum sind Hauptkomponenten in PCA (Eigenvektoren der Kovarianzmatrix) zueinander orthogonal?
Silverfish

1
Siehe auch Warum PCA von Daten mittels SVD der Daten? um zu diskutieren, warum SVD in der Datenmatrix, wie sie von implementiert wird prcomp, eine bevorzugte Methode ist.
Amöbe sagt Reinstate Monica

22

Normalerweise wird eine multivariate Analyse (Rechen Korrelationen, Extrahieren Spuren, etc.) wird der Datenspalten durchgeführt, die Merkmale oder Fragen, - während die Probeneinheiten, die Reihen sind r espondents. Daher wird dieser Weg als R- Weg-Analyse bezeichnet. Manchmal jedoch können Sie multivariate Analyse von responsents zu tun, während q ragen als Probeneinheiten behandelt werden. Das wäre eine Q- Way-Analyse.

Es gibt keinen formalen Unterschied zwischen den beiden, so dass Sie beide mit der gleichen Funktion verwalten können, nur Ihre Daten transponieren. Es gibt jedoch Unterschiede in Bezug auf die Normung und die Interpretation der Ergebnisse.

Dies ist eine allgemeine Antwort: Ich berühre die R-Funktionen nicht speziell prcompund princompweil ich kein R-Benutzer bin und mir möglicher Unterschiede zwischen ihnen nicht bewusst bin.


5

Eine nützliche und spezifische Dokumentation von Gregory B. Anderson mit dem Titel " PRINCIPAL COMPONENT ANALYSIS IN R AN EXAMINATION OF THE DIFFERENT FUNCTIONS AND METHODS TO PERFORM PCAWeitere Informationen zu diesem Thema".

Die folgenden zwei Absätze wurden aus der Einleitung extrahiert:

In R gibt es zwei allgemeine Methoden, um PCA ohne fehlende Werte durchzuführen: (1) spektrale Zerlegung (R-Mode [auch bekannt als eigendecomposition]) und (2) singuläre Wertezerlegung (Q-Mode; R Development Core Team 2011). Beide Methoden können mit den Funktionen eigen (R-Mode) und svd (Q-Mode) oder mit den vielen PCA-Funktionen ausgeführt werden, die im Paket stats und in anderen zusätzlich verfügbaren Paketen enthalten sind. Die Spektralzerlegungsmethode der Analyse untersucht die Kovarianzen und Korrelationen zwischen Variablen, während die Singularwertzerlegungsmethode die Kovarianzen und Korrelationen zwischen den Proben untersucht. Während beide Methoden leicht innerhalb von R durchgeführt werden können, ist die Singulärwertzerlegungsmethode (dh

Dieses Dokument konzentriert sich auf den Vergleich der verschiedenen Methoden zur Durchführung von PCA in R und bietet geeignete Visualisierungstechniken, um die Normalität innerhalb des Statistikpakets zu untersuchen. Insbesondere werden in diesem Dokument sechs verschiedene Funktionen verglichen, die entweder für PCA erstellt wurden oder für PCA verwendet werden können: eigen, princomp, svd, prcomp, PCA und pca. Im gesamten Dokument ist der für die Ausführung dieser Funktionen erforderliche R-Code mit der Schriftart Courier New in den Text eingebettet und mit der in Tinn-R ( https://sourceforge.net/projects/tinn-r ) bereitgestellten Technik farbcodiert . Darüber hinaus werden die Ergebnisse der Funktionen mithilfe von Simulationsverfahren verglichen, um festzustellen, ob sich die verschiedenen Methoden in den vom Ausgang bereitgestellten Eigenwerten, Eigenvektoren und Bewertungen unterscheiden.


2
Antworten sind besser, wenn sie eigenständig sind, da Verknüpfungen häufig beschädigt werden (z. B. wenn die Seite verschoben oder gelöscht wird). Würde es Ihnen etwas ausmachen, Ihre Antwort zu erweitern?
Patrick Coulombe

@PatrickCoulombe, es wurde getan. Danke für Ihren Vorschlag. Ich werde dies in Zukunft zur Kenntnis nehmen.
Pengchy

1

prcompn-1princompn

Unten sind meine Testergebnisse:

> 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

Testdaten:

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.