¿Cuál es la diferencia entre summary () y loadings () para el objeto princomp () en R?


11

Código de ejemplo:

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

Estoy obteniendo diferentes resultados de cada uno, y no estoy seguro de entender cuál es la diferencia.

Aquí está la salida:

> 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

PD: ¿cómo puedo obtener acceso a la tabla creada por resumen (pc.cr)? (Parece que no puedo encontrarlo en str.)


Para la segunda pregunta, ¿te refieres a los vectores propios o al resumen de cargas de componentes?
chl

Hola chl, me refiero a la salida de "summary (pc.cr)", por alguna razón, no puedo encontrarlo. (hacer algo como resumen (pc.cr) [[1]] solo me dará una parte de la tabla)
Tal Galili

¿Por qué tienes # inappropriatecomentarios en la primera línea?
ameba dice Reinstate Monica

@amoeba - Sinceramente no lo recuerdo. Lo quité. :)
Tal Galili

Respuestas:


4

El primer resultado es el correcto y más útil. Llamar loadings()a su objeto solo devuelve un resumen donde las SS siempre son iguales a 1, por lo tanto, el% de varianza es solo la carga de SS dividida por el número de variables. Tiene sentido solo cuando se usa el Análisis Factorial (como en factanal). ¡Nunca uso princompo su alternativa basada en SVD ( prcomp), y prefiero el paquete FactoMineR o ade4 que son mucho más potentes!

Acerca de su segunda pregunta, la summary()función solo devuelve la SD para cada componente ( pc.cr$sdeven su caso), y el resto de la tabla parece calcularse después (a través del método printo show, no investigé esto en detalles).

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

Lo que princomp()hace se puede ver usando getAnywhere("princomp.default").


También uso FactoMineR, pero recuerdo que cuando probé su método PCA en un conjunto de datos realmente grande, nunca obtuve resultados.
George Dontas

@ gd047 Fracasó también para mí, a pesar de que se basa en un SVD (podría ser optimizado para manejar gran cantidad de datos :)
CHL
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.