Qual è la differenza tra le funzioni R prcomp e princomp?


70

Ho confrontato ?prcompe ?princomptrovato qualcosa sull'analisi dei componenti principali in modalità Q e modalità R (PCA). Ma onestamente, non lo capisco. Qualcuno può spiegare la differenza e forse anche spiegare quando applicare quale?


2
La domanda è sulla differenza tra le funzioni prcomp e princomp in R o sulla differenza tra "Q-mode" e "R-mode PCA"? I due non sono correlati.
Brett,

È passato un po 'di tempo. Ma controllerò non appena avrò tempo. IIRC In realtà avevo alcune differenze ...
hans0l0

Risposte:


50

La differenza tra loro non ha nulla a che fare con il tipo di PCA che eseguono, solo il metodo che usano. Come dice la pagina di aiuto per prcomp:

Il calcolo viene effettuato mediante una scomposizione del valore singolare della matrice di dati (centrata e possibilmente ridimensionata), non utilizzando eigenla matrice di covarianza. Questo è generalmente il metodo preferito per l'accuratezza numerica.

D'altra parte, la princomp pagina di aiuto dice:

Il calcolo viene eseguito utilizzando eigenla matrice di correlazione o covarianza, come determinato da cor. Questo viene fatto per compatibilità con il risultato S-PLUS. Un metodo preferito di calcolo deve usare svdsu x, come avviene in prcomp".

Pertanto, prcompè preferibile , anche se in pratica è improbabile che si notino molte differenze (ad esempio, se si eseguono gli esempi nelle pagine della guida, si dovrebbero ottenere risultati identici).


1
Ci sono alcuni raccapriccianti dettagli tecnici sulle diverse routine di algebra lineare e LAPACK sottostanti utilizzate nella mia risposta a Perché i componenti principali in PCA (autovettori della matrice di covarianza) si mutuano ortogonalmente?
Silverfish,

1
Inoltre, vedi Perché PCA dei dati tramite SVD dei dati? per una discussione sul perché SVD sulla matrice di dati, come implementato da prcomp, è un metodo preferito.
ameba dice di reintegrare Monica il

22

Di solito un'analisi multivariata (correlazioni di calcolo, l'estrazione di impronte latenti, etc.) è fatto di colonne di dati che sono caratteristiche o domande, - mentre le unità di campionamento, le righe, sono r espondents. Quindi in questo modo si chiama analisi della R. A volte, però, si consiglia di fare l'analisi multivariata di responsents, mentre q OMANDE sono trattati come unità di campionamento. Sarebbe un'analisi Q way.

Non c'è alcuna differenza formale tra i due, quindi puoi gestirli entrambi con la stessa funzione, solo trasporre i tuoi dati. Vi sono tuttavia differenze nelle questioni relative alla standardizzazione e all'interpretazione dei risultati.

Questa è una risposta generale: non tocco specificamente le funzioni R prcompe princompperché non sono un utente R e non sono consapevole delle possibili differenze tra loro.


5

Una documentazione utile e specifica di Gregory B. Anderson , intitolata, PRINCIPAL COMPONENT ANALYSIS IN R AN EXAMINATION OF THE DIFFERENT FUNCTIONS AND METHODS TO PERFORM PCAha fornito ulteriori informazioni su questo argomento.

I seguenti due paragrafi sono stati estratti dall'introduzione:

In R ci sono due metodi generali per eseguire la PCA senza alcun valore mancante: (1) decomposizione spettrale (R-mode [anche conosciuta come eigendecomposition]) e (2) singular value decomposition (Q-mode; R Development Core Team 2011). Entrambi questi metodi possono essere eseguiti manualmente usando le funzioni eigen (R-mode) e svd (Q-mode), rispettivamente, oppure possono essere eseguiti usando le molte funzioni PCA presenti nel pacchetto stats e altri pacchetti disponibili aggiuntivi. Il metodo di analisi della decomposizione spettrale esamina le covarianze e le correlazioni tra le variabili, mentre il metodo di decomposizione a valore singolare esamina le covarianze e le correlazioni tra i campioni. Mentre entrambi i metodi possono essere facilmente eseguiti all'interno di R, il metodo di decomposizione del valore singolare (ovvero

Questo documento si concentra sul confronto tra i diversi metodi per eseguire PCA in R e fornisce tecniche di visualizzazione appropriate per esaminare la normalità all'interno del pacchetto statistico. Più specificamente questo documento mette a confronto sei diverse funzioni create per o utilizzabili per PCA: eigen, princomp, svd, prcomp, PCA e pca. In tutto il documento il codice R essenziale per eseguire queste funzioni è incorporato nel testo usando il font Courier New ed è codificato a colori usando la tecnica fornita in Tinn-R ( https://sourceforge.net/projects/tinn-r ). Inoltre, i risultati delle funzioni vengono confrontati usando la procedura di simulazione per vedere se i diversi metodi differiscono in autovalori, autovettori e punteggi forniti dall'output.


2
Le risposte sono migliori quando sono autonome, perché i collegamenti tendono a rompersi (ad esempio se la pagina si sposta o viene eliminata). Ti dispiacerebbe provare a espandere la tua risposta?
Patrick Coulombe,

@PatrickCoulombe, è stato fatto. Grazie per il tuo suggerimento Ne prenderò nota in futuro.
pengchy,

1

prcompn-1princompn

Di seguito sono riportati i risultati dei miei test:

> 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

Dati di test:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.