Was ist der Unterschied zwischen summary () und loadings () für das princomp () -Objekt in R?

11

Beispielcode:

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

Ich erhalte von jedem unterschiedliche Ausgänge und bin mir nicht sicher, ob ich den Unterschied verstehe.

Hier ist die Ausgabe:

> 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: Wie kann ich auf die von summary (pc.cr) erstellte Tabelle zugreifen? (Ich kann es nicht in str finden.)

Tal Galili
quelle
Für die 2. Frage meinen Sie die Eigenvektoren oder die Zusammenfassung der Komponentenladungen?
Chl
Hallo chl - ich meine die Ausgabe von "summary (pc.cr)" - aus irgendeinem Grund kann ich sie nicht finden. (Wenn ich so etwas wie Zusammenfassung (pc.cr) [[1]] mache, bekomme ich nur einen Teil der Tabelle)
Tal Galili
Warum hast du einen # inappropriateKommentar in der ersten Zeile?
Amöbe sagt Reinstate Monica
@amoeba - Ich erinnere mich ehrlich gesagt nicht. Ich habe es entfernt. :)
Tal Galili

Antworten:

4

Die erste Ausgabe ist die richtige und nützlichste. Wenn Sie loadings()Ihr Objekt aufrufen, wird nur eine Zusammenfassung zurückgegeben, bei der die SS immer gleich 1 ist. Daher ist die prozentuale Varianz nur die SS-Ladung geteilt durch die Anzahl der Variablen. Dies ist nur bei Verwendung der Faktoranalyse (wie in factanal) sinnvoll . Ich benutze princompoder seine SVD-basierte Alternative ( prcomp) nie und bevorzuge das FactoMineR- oder ade4- Paket, die bei weitem leistungsfähiger sind!

Bei Ihrer zweiten Frage gibt die summary()Funktion nur die SD für jede Komponente zurück ( pc.cr$sdevin Ihrem Fall), und der Rest der Tabelle scheint anschließend berechnet zu werden (über die Methode printoder habe showich dies nicht im Detail untersucht).

> 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>

Was princomp()selbst tut, kann mit angesehen werden getAnywhere("princomp.default").

chl
quelle
+1 Ich verwende auch FactoMineR, aber ich erinnere mich, dass ich beim Ausprobieren der PCA-Methode für einen wirklich großen Datensatz nie Ergebnisse erhalten habe.
George Dontas
@ gd047 Es ist auch für mich fehlgeschlagen, obwohl es auf einer SVD basiert (möglicherweise optimiert, um große Datenmengen zu verarbeiten :)
chl