Quelle est la différence entre les fonctions R prcomp et princomp?


70

J'ai comparé ?prcompet ?princomptrouvé quelque chose à propos de l'analyse en composantes principales (ACP) en mode Q et en mode R. Mais honnêtement, je ne comprends pas. Quelqu'un peut-il expliquer la différence et peut-être même expliquer quand appliquer laquelle?


2
La question est-elle souvent posée sur la différence entre les fonctions prcomp et princomp dans R ou sur la différence entre "Q-mode" et "R-mode PCA"? Les deux sont indépendants.
Brett

Cela fait longtemps. Mais je vérifierai dès que j'en aurai le temps. IIRC j'ai eu quelques différences ...
hans0l0

Réponses:


50

La différence entre eux n’a rien à voir avec le type d’ACP qu’ils effectuent, mais avec la méthode qu’ils utilisent. Comme le dit la page d'aide pour prcomp:

Le calcul est effectué par une décomposition en valeurs singulières de la matrice de données (centrée et éventuellement mise à l'échelle), et non par une utilisation eigensur la matrice de covariance. C'est généralement la méthode privilégiée pour la précision numérique.

D'autre part, la princomp page d'aide dit:

Le calcul est effectué en utilisant eigenla matrice de corrélation ou de covariance, déterminée par cor. Ceci est fait pour la compatibilité avec le résultat S-PLUS. Une méthode de calcul préférée consiste à utiliser svdon x, comme dans prcomp"."

C'est donc prcomppréférable , bien qu'en pratique, il est peu probable que vous constatiez une grande différence (par exemple, si vous exécutez les exemples sur les pages d'aide, vous obtiendrez des résultats identiques).


1
Il y a quelques détails techniques macabres sur les différentes routines sous-jacentes d'algèbre linéaire et de LAPACK utilisées dans ma réponse à Pourquoi les composantes principales de la PCA (vecteurs propres de la matrice de covariance) sont-elles orthogonales?
Silverfish

1
Voir aussi Pourquoi PCA des données au moyen de la SVD des données? pour une discussion sur les raisons pour lesquelles SVD sur la matrice de données, telle que mise en œuvre par prcomp, est une méthode préférée.
amibe dit de réintégrer Monica le

22

En général , une analyse à plusieurs variables (corrélations de calcul, extraction des empreintes latentes, etc.) est fait de colonnes de données qui sont des caractéristiques ou des questions, - tandis que les unités d' échantillonnage, les lignes sont r es répondants. Cette méthode s'appelle donc l' analyse de la méthode R. Parfois, cependant, vous pouvez faire une analyse multivariée de responsents, tandis que q uestions sont traités comme des échantillons. Ce serait une analyse Q way.

Il n'y a pas de différence formelle entre les deux, vous pouvez donc gérer les deux avec la même fonction, ne transposez que vos données. Il existe toutefois des différences entre les questions de normalisation et d’interprétation des résultats.

C'est une réponse générale: je ne touche pas spécifiquement aux fonctions R prcompet princompparce que je ne suis pas un utilisateur R et que je ne suis pas au courant des différences possibles entre elles.


5

Une documentation utile et spécifique de Gregory B. Anderson , intitulée PRINCIPAL COMPONENT ANALYSIS IN R AN EXAMINATION OF THE DIFFERENT FUNCTIONS AND METHODS TO PERFORM PCAa donné plus d’informations sur ce sujet.

Les deux paragraphes suivants ont été extraits de l'introduction:

Dans R, il existe deux méthodes générales pour effectuer une ACP sans aucune valeur manquante: (1) décomposition spectrale (mode R [également connu sous le nom de eigendecomposition]) et (2) décomposition en valeurs singulières (mode Q; R Development Core Team 2011). Ces deux méthodes peuvent être exécutées de manière longue en utilisant respectivement les fonctions eigen (mode R) et svd (Q-mode), ou en utilisant les nombreuses fonctions PCA présentes dans le package de statistiques et d'autres packages disponibles supplémentaires. La méthode d'analyse par décomposition spectrale examine les covariances et les corrélations entre variables, tandis que la méthode de décomposition en valeurs singulières examine les covariances et les corrélations entre les échantillons. Bien que les deux méthodes puissent être facilement exécutées dans R, la méthode de décomposition en valeurs singulières (c.-à-d.,

Ce document se concentre sur la comparaison des différentes méthodes d’exécution de PCA in R et fournit des techniques de visualisation appropriées pour examiner la normalité au sein du progiciel statistique. Plus précisément, ce document compare six fonctions différentes créées ou utilisables pour PCA: eigen, princomp, svd, prcomp, PCA et pca. Tout au long du document, le code R essentiel pour exécuter ces fonctions est incorporé dans le texte à l'aide de la police Courier New et son code couleur utilise la technique fournie dans Tinn-R ( https://sourceforge.net/projects/tinn-r ). En outre, les résultats des fonctions sont comparés à l'aide d'une procédure de simulation pour déterminer si les différentes méthodes diffèrent par les valeurs propres, les vecteurs propres et les scores fournis à partir du résultat.


2
Les réponses sont meilleures lorsqu'elles sont autonomes, car les liens ont tendance à être brisés (par exemple, si la page est déplacée ou supprimée). Cela vous dérangerait-il d'essayer de développer votre réponse?
Patrick Coulombe

@ PatrickCoulombe, cela a été fait. Merci pour votre suggestion. J'en prendrai note à l'avenir.
Pengchy

1

prcompn-1princompn

Voici mes résultats de test:

> 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

Données de test:

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.