Quelle est la différence entre summary () et loadings () pour l'objet princomp () dans R?

11

Exemple de code:

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

J'obtiens des sorties différentes de chacun, et je ne suis pas sûr de comprendre quelle est la différence.

Voici la sortie:

> 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: comment accéder au tableau créé par summary (pc.cr) ?? (Je n'arrive pas à le trouver dans str.)

Tal Galili
la source
Pour la 2e question, vous voulez dire les vecteurs propres ou le résumé des chargements des composants?
chl
Salut chl - je veux dire la sortie de "résumé (pc.cr)" - pour une raison quelconque, je ne le trouve pas. (faire quelque chose comme résumé (pc.cr) [[1]] ne me donnera qu'une partie du tableau)
Tal Galili
Pourquoi avez-vous un # inappropriatecommentaire à la première ligne?
amibe dit Réintégrer Monica
@amoeba - Honnêtement, je ne m'en souviens pas. Je l'ai enlevé. :)
Tal Galili

Réponses:

4

La première sortie est la bonne et la plus utile. Appeler loadings()sur votre objet renvoie juste un résumé où les SS sont toujours égaux à 1, donc le% de variance est juste les chargements SS divisés par le nombre de variables. Cela n'a de sens que lorsque vous utilisez l'analyse factorielle (comme dans factanal). Je n'utilise jamais princompou son alternative basée sur SVD ( prcomp), et je préfère le package FactoMineR ou ade4 qui sont de loin plus puissants!

À propos de votre deuxième question, la summary()fonction renvoie simplement la SD pour chaque composant ( pc.cr$sdevdans votre cas), et le reste du tableau semble être calculé par la suite (via la méthode printou show, je n'ai pas étudié cela en détail).

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

Ce qu'il princomp()fait peut être visualisé en utilisant getAnywhere("princomp.default").

chl
la source
+1 J'utilise également FactoMineR mais je me souviens que lorsque j'ai essayé sa méthode PCA sur un très grand ensemble de données, je n'ai jamais obtenu de résultats.
George Dontas
@ gd047 Il a échoué pour moi aussi, bien qu'il soit basé sur un SVD (pourrait être optimisé pour gérer un grand ensemble de données :)
chl