Qual è la differenza tra summary () e loadings () per l'oggetto princomp () in R?


11

Codice di esempio:

(pc.cr <- princomp(USArrests))  
summary(pc.cr)
loadings(pc.cr)  ## note that blank entries are small but not zero

Ricevo output diversi da ciascuno e non sono sicuro di capire quale sia la differenza.

Ecco l'output:

> summary(pc.cr)
Importance of components:
                           Comp.1      Comp.2      Comp.3       Comp.4
Standard deviation     82.8908472 14.06956001 6.424204055 2.4578367034
Proportion of Variance  0.9655342  0.02781734 0.005799535 0.0008489079
Cumulative Proportion   0.9655342  0.99335156 0.999151092 1.0000000000


> loadings(pc.cr)  ## note that blank entries are small but not zero

...

               Comp.1 Comp.2 Comp.3 Comp.4
SS loadings      1.00   1.00   1.00   1.00
Proportion Var   0.25   0.25   0.25   0.25
Cumulative Var   0.25   0.50   0.75   1.00

PS: come posso accedere alla tabella creata dal riepilogo (pc.cr) ?? (Non riesco a trovarlo in str.)


Per la seconda domanda, intendi gli autovettori o il riepilogo dei caricamenti dei componenti?
chl

Ciao chl - intendo l'output di "summary (pc.cr)" - per qualche motivo, non riesco a trovarlo. (facendo qualcosa come il sommario (pc.cr) [[1]] mi porterà solo una parte del tavolo)
Tal Galili,

Perché hai # inappropriatecommenti nella prima riga?
ameba dice di reintegrare Monica

@amoeba - Onestamente non ricordo. L'ho rimosso. :)
Tal Galili,

Risposte:


4

Il primo output è quello corretto e più utile. Richiamare loadings()l'oggetto restituisce semplicemente un riepilogo in cui le SS sono sempre uguali a 1, quindi la varianza% è solo i caricamenti delle SS divisi per il numero di variabili. Ha senso solo quando si utilizza l'analisi fattoriale (come in factanal). Non uso mai princompné la sua alternativa basata su SVD ( prcomp) e preferisco il pacchetto FactoMineR o ade4 che sono di gran lunga più potenti!

Per quanto riguarda la tua seconda domanda, la summary()funzione restituisce solo la SD per ciascun componente ( pc.cr$sdevnel tuo caso), e il resto della tabella sembra essere successivamente calcolato (tramite il metodo printo show, non ho studiato questo in dettaglio).

> getS3method("summary","princomp")
function (object, loadings = FALSE, cutoff = 0.1, ...)
{
    object$cutoff <- cutoff
    object$print.loadings <- loadings
    class(object) <- "summary.princomp"
    object
}
<environment: namespace:stats>

Ciò che princomp()si fa può essere visualizzato usando getAnywhere("princomp.default").


+1 Uso anche FactoMineR ma ricordo che quando ho provato il metodo PCA su un set di dati davvero grande, non ho mai ottenuto risultati.
George Dontas,

@ gd047 Non è riuscito anche per me, anche se si basa su un SVD (potrebbe essere ottimizzato per gestire un set di dati di grandi dimensioni :)
chl
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.