Qual é a diferença entre as funções R prcomp e princomp?


70

Comparei ?prcompe ?princompencontrei algo sobre a análise de componentes principais (QA) e modo Q (modo principal) (PCA). Mas honestamente - eu não entendo. Alguém pode explicar a diferença e talvez até explicar quando aplicar qual?


2
A pergunta é sobre a diferença entre as funções prcomp e princomp em R ou sobre a diferença entre "Q-mode" e "R-mode PCA"? Os dois não são relacionados.
Brett

Faz algum tempo. Mas vou verificar assim que tiver tempo. IIRC Eu realmente tive algumas diferenças ...
hans0l0

Respostas:


50

A diferença entre eles não tem nada a ver com o tipo de PCA que eles executam, apenas o método que eles usam. Como a página de ajuda para prcompdiz:

O cálculo é feito por uma decomposição de valor singular da matriz de dados (centralizada e possivelmente em escala), não usando eigena matriz de covariância. Geralmente, esse é o método preferido para precisão numérica.

Por outro lado, a princomp página de ajuda diz:

O cálculo é feito usando eigena matriz de correlação ou covariância, conforme determinado por cor. Isso é feito para compatibilidade com o resultado do S-PLUS. Um método preferido de cálculo é a utilização svdde x, como é feito em prcomp."

Portanto, prcompé preferível , embora na prática seja improvável que você veja muita diferença (por exemplo, se você executar os exemplos nas páginas de ajuda, deverá obter resultados idênticos).


11
Existem alguns detalhes técnicos horríveis sobre as diferentes rotinas subjacentes de álgebra linear e LAPACK usadas em minha resposta para Por que os principais componentes do PCA (vetores próprios da matriz de covariância) são mutuamente ortogonais?
Silverfish

11
Além disso, consulte Por que o PCA de dados por meio do SVD dos dados? para uma discussão sobre por que o SVD na matriz de dados, conforme implementado por prcomp, é um método preferido.
ameba diz Restabelecer Monica

22

Normalmente, uma análise multivariada (correlações de computação, extraindo latentes, etc.) é feita de colunas de dados que são características ou perguntas, - enquanto unidades amostrais, as linhas, são r espondents. Portanto, esse caminho é chamado de análise de modo R. Às vezes, porém, você pode querer fazer uma análise multivariada de responsents, enquanto q ERGUNTAS são tratados como unidades amostrais. Essa seria a análise da maneira Q.

Não há diferença formal entre os dois, para que você possa gerenciar os dois com a mesma função, apenas transponha seus dados. Existem diferenças, no entanto, nas questões de padronização e interpretação dos resultados.

Esta é uma resposta geral: não toco especificamente nas funções R prcompe princompporque não sou um usuário R e não estou ciente das possíveis diferenças entre elas.


5

Uma documentação útil e específica de Gregory B. Anderson , intitulada PRINCIPAL COMPONENT ANALYSIS IN R AN EXAMINATION OF THE DIFFERENT FUNCTIONS AND METHODS TO PERFORM PCA, forneceu mais informações sobre este tópico.

Os dois parágrafos a seguir foram extraídos da introdução:

Em R, existem dois métodos gerais para executar PCA sem nenhum valor faltante: (1) decomposição espectral (modo R [também conhecido como eigendecomposition]) e (2) decomposição de valor singular (modo Q; Q Development Core Team 2011). Ambos os métodos podem ser executados à mão usando as funções eigen (modo R) e svd (modo Q), respectivamente, ou podem ser executados usando as muitas funções PCA encontradas no pacote de estatísticas e outros pacotes adicionais disponíveis. O método de análise de decomposição espectral examina as covariâncias e correlações entre variáveis, enquanto o método de decomposição de valor singular analisa as covariâncias e correlações entre as amostras. Embora ambos os métodos possam ser facilmente executados em R, o método de decomposição de valor singular (ou seja,

Este documento se concentra na comparação dos diferentes métodos para executar o PCA em R e fornece técnicas de visualização apropriadas para examinar a normalidade dentro do pacote estatístico. Mais especificamente, este documento compara seis funções diferentes criadas para ou podem ser usadas para PCA: eigen, princomp, svd, prcomp, PCA e pca. Em todo o documento, o código R essencial para executar essas funções é incorporado ao texto usando a fonte Courier New e é codificado por cores usando a técnica fornecida em Tinn-R ( https://sourceforge.net/projects/tinn-r ). Além disso, os resultados das funções são comparados usando o procedimento de simulação para verificar se os diferentes métodos diferem nos valores próprios, vetores próprios e pontuações fornecidos a partir da saída.


2
As respostas são melhores quando são independentes, porque os links tendem a ficar quebrados (por exemplo, se a página for movida ou excluída). Você se importaria de tentar expandir sua resposta?
Patrick Coulombe

@PatrickCoulombe, já foi feito. Obrigado por sua sugestão. Notarei isso no futuro.
Pengchy

1

prcompn-1 1princompn

Abaixo estão os resultados dos meus testes:

> 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

Dados de teste:

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.