¿Cuál es la diferencia entre las funciones R prcomp y princomp?


70

Comparé ?prcompy ?princompencontré algo sobre el análisis de componentes principales (PCA) en modo Q y modo R. Pero honestamente, no lo entiendo. ¿Alguien puede explicar la diferencia y tal vez incluso explicar cuándo aplicar cuál?


2
¿Se hace la pregunta sobre la diferencia entre las funciones prcomp y princomp en R o sobre la diferencia entre "Q-mode" y "R-mode PCA"? Los dos no están relacionados.
Brett

Ha sido un tiempo. Pero lo comprobaré tan pronto como tenga tiempo. IIRC En realidad tuve algunas diferencias ...
hans0l0

Respuestas:


50

La diferencia entre ellos no tiene nada que ver con el tipo de PCA que realizan, solo con el método que usan. Como la página de ayuda para prcompdice:

El cálculo se realiza mediante una descomposición de valor singular de la matriz de datos (centrada y posiblemente escalada), no mediante el uso eigende la matriz de covarianza. Este es generalmente el método preferido para la precisión numérica.

Por otro lado, la princomp página de ayuda dice:

El cálculo se realiza utilizando eigenla matriz de correlación o covarianza, según lo determinado por cor. Esto se hace por compatibilidad con el resultado S-PLUS. Un método preferido de cálculo es usar svden x, como se hace en prcomp".

Por lo tanto, prcompes preferible , aunque en la práctica es poco probable que vea mucha diferencia (por ejemplo, si ejecuta los ejemplos en las páginas de ayuda, debería obtener resultados idénticos).


1
Hay algunos detalles técnicos horripilantes sobre las diferentes rutinas de álgebra lineal subyacente y LAPACK utilizadas en mi respuesta a ¿Por qué los componentes principales en PCA (vectores propios de la matriz de covarianza) son mutuamente ortogonales?
Silverfish

1
Además, vea ¿Por qué PCA de datos mediante SVD de los datos? para una discusión de por qué SVD en la matriz de datos, implementado por prcomp, es un método preferido.
ameba dice Reinstate Monica

22

Por lo general, un análisis multivariante (correlaciones de cálculo, la extracción de huellas latentes, etc.) se realiza de columnas de datos que son características o preguntas, - mientras que las unidades de muestra, las filas, son r espondents. Por lo tanto, esta forma se llama análisis de la forma R. A veces, sin embargo, es posible que desee hacer un análisis multivariado de responsents, mientras q reguntas se tratan como unidades de muestreo. Ese sería el análisis de Q way.

No existe una diferencia formal entre los dos, por lo que puede administrar ambos con la misma función, solo transponer sus datos. Hay diferencias, sin embargo, en cuestiones de estandarización e interpretación de resultados.

Esta es una respuesta general: no toco específicamente las funciones R prcompy princompporque no soy un usuario R y no soy consciente de las posibles diferencias entre ellas.


5

Una documentación útil y específica de Gregory B. Anderson , titulada, PRINCIPAL COMPONENT ANALYSIS IN R AN EXAMINATION OF THE DIFFERENT FUNCTIONS AND METHODS TO PERFORM PCAha brindado más información sobre este tema.

Los siguientes dos párrafos fueron extraídos de la introducción:

En R hay dos métodos generales para realizar PCA sin ningún valor perdido: (1) descomposición espectral (modo R [también conocido como descomposición propia]) y (2) descomposición de valores singulares (modo Q; R Development Core Team 2011). Ambos métodos se pueden realizar de forma manual utilizando las funciones eigen (modo R) y svd (modo Q), respectivamente, o se pueden realizar utilizando las muchas funciones de PCA que se encuentran en el paquete de estadísticas y otros paquetes adicionales disponibles. El método de análisis de descomposición espectral examina las covarianzas y correlaciones entre variables, mientras que el método de descomposición de valores singulares examina las covarianzas y correlaciones entre las muestras. Si bien ambos métodos se pueden realizar fácilmente dentro de R, el método de descomposición de valores singulares (es decir,

Este documento se centra en comparar los diferentes métodos para realizar PCA en R y proporciona técnicas de visualización apropiadas para examinar la normalidad dentro del paquete estadístico. Más específicamente, este documento compara seis funciones diferentes creadas para PCA o que pueden usarse para ellas: eigen, princomp, svd, prcomp, PCA y pca. A lo largo del documento, el código R esencial para realizar estas funciones está incrustado dentro del texto usando la fuente Courier New y está codificado por colores usando la técnica proporcionada en Tinn-R ( https://sourceforge.net/projects/tinn-r ). Además, los resultados de las funciones se comparan mediante el procedimiento de simulación para ver si los diferentes métodos difieren en los valores propios, los vectores propios y las puntuaciones proporcionadas por la salida.


2
Las respuestas son mejores cuando son independientes, porque los enlaces tienden a romperse (por ejemplo, si la página se mueve o se elimina). ¿Te importaría tratar de ampliar tu respuesta?
Patrick Coulombe

@PatrickCoulombe, se ha hecho. Gracias por tu sugerencia. Tomaré nota de esto en el futuro.
pengchy

1

prcompnorte-1princompnorte

A continuación se encuentran los resultados de mi prueba:

> job<-read.table("./job_perf.txt", header=TRUE, sep="")
> pc.cr<-prcomp(job, scale=TRUE, cor=TRUE, scores=TRUE)
> pc.cr1<-princomp(job, scale=TRUE, cor=TRUE, scores=TRUE)
> pc.cr$scale
    commun probl_solv    logical      learn   physical appearance
  5.039841   1.689540   2.000000   4.655398   3.770700   4.526689
> pc.cr1$scale
    commun probl_solv    logical      learn   physical appearance
  4.805300   1.610913   1.906925   4.438747   3.595222   4.316028

Datos de prueba:

commun probl_solv logical learn physical appearance 12 52 20 44 48 16 12 57 25 45 50 16 12 54 21 45 50 16 13 52 21 46 51 17 14 54 24 46 51 17 22 52 25 54 58 26 22 56 26 55 58 27 17 52 21 45 52 17 15 53 24 45 53 18 23 54 23 53 57 24 25 54 23 55 58 25

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.