Scelta del numero di componenti principali da conservare


10

Un metodo che mi è stato suggerito è quello di guardare un diagramma ghiaione e verificare la presenza di "gomito" per determinare il numero corretto di PC da utilizzare. Ma se la trama non è chiara, R ha un calcolo per determinare il numero?

fit <- princomp(mydata, cor=TRUE)

3
Non che io sappia. Innanzitutto, se fai riferimento all'autovalore sopra 1 regola empirica o alla cosiddetta regola di Kayser, probabilmente troverai il numero di PC che soddisfano questo aspetto (tieni presente che generalmente sopravvaluta il numero di dimensioni) osservando più precisamente nella trama del ghiaione. In secondo luogo, l'analisi parallela è un modo migliore per determinare il numero di componenti; vedere il pacchetto psyo psychin R, e SPSS, SAS e programmi MATLAB per determinare il numero di componenti e fattori. Utilizzo dell'analisi parallela e del test MAP di Velicer in generale.
chl

Risposte:


10

Il seguente articolo: La conservazione dei componenti nell'analisi dei componenti principali con l'applicazione ai dati di microarray di cDNA di Cangelosi e Goriely offre una panoramica piuttosto piacevole della regola standard dei pollici per rilevare il numero di componenti in uno studio. (Diagramma di ghiaione, Spiegazione della proporzione della varianza totale, Regola degli autovalori medi, Diagramma degli autovalori log, ecc.) Molti di questi sono abbastanza semplici da implementare in R.

In generale, se la trama del ghiaione è molto inconcludente, devi solo "raccogliere il tuo veleno". Non esiste un diritto o un errore assoluto per i dati poiché in realtà il numero di PC da utilizzare dipende in realtà dalla comprensione del problema. L'unico set di dati di cui puoi "veramente" conoscere la dimensionalità è quello che hai costruito tu stesso. :-) I componenti principali alla fine della giornata forniscono la decomposizione ottimale dei dati in base a una metrica RSS (dove come sottoprodotto si ottiene che ciascun componente rappresenti una modalità principale di variazione) e includendo o escludendo un determinato numero di componenti determina la tua percezione della dimensionalità del tuo problema.

Per quanto riguarda le preferenze personali, mi piace l'approccio di Minka su questa scelta automatica di dimensionalità per PCA che si basa su un'interpretazione probabilistica di PCA ma poi di nuovo, ti metti in gioco nel tentativo di modellare la probabilità dei tuoi dati per una data dimensionalità. (Link fornisce il codice Matlab se si desidera seguire questa logica.)

Cerca di capire di più i tuoi dati. per esempio. Credi davvero che il 99,99% della variazione del tuo set di dati sia dovuto alle covariate del tuo modello? In caso contrario, probabilmente non è necessario includere dimensioni che presentano una proporzione così piccola della varianza totale. Pensi che in realtà un componente rifletta una variazione al di sotto di una soglia di differenze appena evidenti? Questo probabilmente significa che c'è poca rilevanza nell'includere quel componente per la tua analisi.

In ogni caso, buona fortuna e controlla attentamente i tuoi dati. (Tracciarli fa anche meraviglie.)


Puoi indicare il codice matlab, non riesco a trovarlo.
MrGloom l'


Yeap! Questo era il collegamento a cui mi riferivo.
usεr11852,

Mi chiedo se l'approccio di Minka è ormai applicato in R? Supponiamo che i PC più importanti siano stati determinati in uno studio con metodi diversi, sappiamo che dovrebbero essere la parte del segnale dei dati. Sai per caso se c'è qualche limitazione nella varianza% spiegata da questi PC, sotto la quale è considerato un No-Go per ulteriori analisi? ogni riferimento sarà molto apprezzato.
dottorato il

6

Negli ultimi anni ci sono stati lavori molto piacevoli su questo problema da quando questa domanda è stata inizialmente posta e risposta. Consiglio vivamente il seguente articolo di Gavish e Donoho: la soglia ottimale ottimale per i valori singolari è 4 / sqrt (3)

Il loro risultato si basa sull'analisi asintotica (ovvero esiste una soluzione ottimale ben definita man mano che la matrice dei dati diventa infinitamente grande), ma mostrano risultati numerici impressionanti che mostrano che la procedura asintoticamente ottimale funziona per set di dati piccoli e realistici, anche con rumore diverso Modelli.

σn×n

λ=4σn3

Spiegano anche il caso non quadrato nel documento. Hanno un buon supplemento di codice (in MATLAB) qui, ma gli algoritmi sarebbero facili da implementare in R o altrove: https://purl.stanford.edu/vg705qn9070

Avvertenze:

  • Se hai dei dati mancanti, non sono sicuro che funzionerà
  • Se ogni funzione nel tuo set di dati ha intensità di rumore diverse, non sono sicuro che funzionerà (anche se lo sbiancamento potrebbe probabilmente aggirare questo in base a determinati presupposti)
  • Sarebbe interessante vedere se risultati simili valgono per altre fattorizzazioni di matrice di basso rango (ad es. Fattorizzazione di matrice non negativa).

+1, wow questo documento sembra estremamente interessante. Grazie mille per averlo menzionato.
amoeba,

4

Il problema con il criterio di Kaiser (tutti gli autovalori maggiori di uno) è che il numero di fattori estratti è di solito circa un terzo del numero di elementi o scale nella batteria, indipendentemente dal fatto che molti dei fattori aggiuntivi siano rumore. L'analisi parallela e il criterio del ghiaione sono generalmente procedure più accurate per determinare il numero di fattori da estrarre (secondo i testi classici di Harmon e Ledyard Tucker, nonché i lavori più recenti di Wayne Velicer.

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.