Quali variabili spiegano quali componenti PCA e viceversa?


14

Utilizzando questi dati:

head(USArrests)
nrow(USArrests)

Posso fare un PCA in questo modo:

plot(USArrests)
otherPCA <- princomp(USArrests)

Posso ottenere i nuovi componenti

otherPCA$scores

e la percentuale di varianza spiegata dai componenti con

summary(otherPCA)

E se volessi sapere quali variabili sono principalmente spiegate da quali componenti principali? E viceversa: ad esempio PC1 o PC2 sono principalmente spiegati murder? Come posso fare questo?

Posso dire ad esempio che PC1 è spiegato all'80% da murdero assault?

Penso che i caricamenti mi aiutino qui, ma mostrano la direzionalità non la varianza spiegata come la capisco, ad es

otherPCA$loadings

Loadings:
         Comp.1 Comp.2 Comp.3 Comp.4
Murder                         0.995
Assault  -0.995                     
UrbanPop        -0.977 -0.201       
Rape            -0.201  0.974   

2
Si noti che i segni dei carichi sono arbitrari. Le tre variabili del crimine sono tutte correlate positivamente l'una con l'altra, ma saresti intelligente a farlo dai segni dei caricamenti sopra.
Nick Cox,

Purtroppo, ritengo che la risposta accettata a questa domanda sia errata. Ho pubblicato la mia risposta qui sotto.
ameba dice di reintegrare Monica il

Risposte:


10

Hai ragione, i caricamenti possono aiutarti qui. Possono essere utilizzati per calcolare la correlazione tra le variabili e i componenti principali. Inoltre, la somma dei carichi quadrati di una variabile su tutti i componenti principali è uguale a 1. Quindi, i carichi quadrati indicano la proporzione di varianza di una variabile spiegata da un componente principale.

Il problema con princomp è che mostra solo i caricamenti "molto alti". Ma poiché i caricamenti sono solo gli autovettori della matrice di covarianza, si possono ottenere tutti i caricamenti usando il eigencomando in R:

 loadings <- eigen(cov(USArrests))$vectors
 explvar <- loadings^2

Ora hai le informazioni desiderate nella matrice explvar.


grazie ragazzo a caso, potresti mostrarmi per esempio assaulto urban poppotremmo farlo? parzialmente confuso perché nella matrice è presente solo una correlazione perassault
user1320502

1
Spiacenti, ho migliorato la mia risposta e non ho notato che hai già commentato il mio post. carichi d'assalto con -0,995 su PC1. Quindi, si può concludere dopo la quadratura di questo valore PC1 spiega il 99% della varianza dell'assalto variabile. Dopo aver squadrato i valori del pop urbano, puoi concludere che PC3 spiega il 4% e PC2 il 95,5% della varianza del pop urbano.
random_guy,

1
OP non chiede su quanto del PCA possa essere attribuito a una variabile? La tua risposta riguarda la quantità di una variabile che può essere spiegata da un CPA
Heisenberg

2
w=(0.3,0.3,...0.3)1109.9 variabile. Ma come hai intenzione di concludere l'uno o l'altro dagli elementi quadrati diw0.1

2
Mi dispiace insistere, ma pensi che mi sbagli nel mio commento sopra? Altrimenti, potresti modificare la tua risposta per rimuovere la potenziale confusione, questo sarebbe molto utile per i futuri lettori. Ho appena pubblicato una risposta, cercando di spiegare questi problemi in modo più dettagliato.
ameba dice di reintegrare Monica il

9

Penso che la risposta accettata possa essere pericolosamente fuorviante (-1). Ci sono almeno quattro domande diverse mescolate insieme nel PO. Li considererò uno dopo l'altro.


  • Q1. Quanto della varianza di un determinato PC è spiegata da una determinata variabile originale? Quanto della varianza di una determinata variabile originale è spiegata da un determinato PC?

r2riVisiLiLi=(si)1/2Vi. I suoi elementi sono correlazioni di questo PC con le rispettive variabili originali.

ViLi

Inoltre, se la PCA viene eseguita sulle covarianze (e non sulle correlazioni), i caricamenti ti daranno anche covarianze, non correlazioni. Per ottenere correlazioni, è necessario calcolarle manualmente, seguendo la PCA. [La risposta attualmente accettata non è chiara al riguardo.]

  • 80%

r2R2 valore .

r2R2 ).

  • 80% della varianza?

r=0.9r=0.9r2 numeri per calcolare la percentuale di varianza di questo PC spiegata, diciamo, da cinque variabili originali (ciò comporterebbe un risultato senza sensoR2=0.90.95>1). Invece, bisognerebbe regredire questo PC su queste variabili e ottenere il multiploR2 valore.

Come selezionare un sottoinsieme che spiega la quantità di varianza data, è stato suggerito da @FrankHarrell (+1).


+1, questa dovrebbe essere la risposta accettata.
salutato il

8

È possibile effettuare una selezione di variabili graduale all'indietro o in avanti, predicendo un componente o una combinazione lineare di componenti dalle loro variabili costitutive. IlR2sarà 1.0 al primo passaggio se si utilizza il passaggio all'indietro. Anche se la regressione graduale è praticamente un disastro quando si prevedeYpuò funzionare bene quando la previsione è meccanicistica, come nel caso qui. È possibile aggiungere o rimuovere variabili fino a quando non si spiegano 0,8 o 0,9 (ad esempio) delle informazioni nei componenti principali.


6

Gli Stati Uniti arrestano i dati in bundle con R sono solo un esempio qui, ma noto che i calcoli dei caricamenti nella domanda provengono da un PCA della matrice di covarianza . Questo è un punto tra arbitrario e senza senso, poiché le variabili sono misurate su scale diverse.

La popolazione urbana sembra una percentuale. La California è il 91% e la più alta.

Le tre variabili criminali sembrano essere il numero di arresti per crimini espressi in relazione alla dimensione della popolazione (presumibilmente per un certo periodo di tempo). Presumibilmente è documentato da qualche parte se si tratta di arresti per 1000 o 10000 o altro.

La media della variabile d'assalto nelle unità date è di circa 171 e l'omicidio medio di circa 8. Quindi, la spiegazione dei tuoi caricamenti è che in gran parte il modello è un artefatto: dipende dalla variabilità molto diversa delle variabili.

Quindi, sebbene i dati abbiano senso in quanto vi sono molti più arresti per aggressioni che per omicidi, ecc., Il fatto noto (o non sorprendente) domina l'analisi.

Ciò dimostra che, come qualsiasi altro posto nelle statistiche, devi pensare a cosa stai facendo in un PCA.

Se vai oltre:

  1. Direi che il percento urbano è meglio escluso dall'analisi. Non è un crimine essere urbani; potrebbe ovviamente servire da proxy per le variabili che influenzano il crimine.

  2. Un PCA basato su una matrice di correlazione avrebbe più senso a mio avviso. Un'altra possibilità è quella di lavorare con i logaritmi dei tassi di arresto, non con i tassi di arresto (tutti i valori sono positivi; vedi sotto).

Nota: la risposta di @ random_guy usa deliberatamente la matrice di covarianza.

Ecco alcune statistiche riassuntive. Ho usato Stata, ma è abbastanza irrilevante.

    Variable |       Obs        Mean    Std. Dev.       Min        Max
-------------+--------------------------------------------------------
   urban_pop |        50       65.54    14.47476         32         91
      murder |        50       7.788     4.35551         .8       17.4
        rape |        50      21.232    9.366384        7.3         46
     assault |        50      170.76    83.33766         45        337
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.