R 함수 prcomp와 princomp의 차이점은 무엇입니까?


69

Q 모드와 R 모드 주요 구성 요소 분석 (PCA)에 대해 비교 ?prcomp하고 ?princomp찾았습니다. 그러나 정직하게 – 나는 그것을 이해하지 못한다. 아무도 차이점을 설명하고 언제 적용 할 것인지 설명 할 수 있습니까?


4
아, 이건 정말 실망 스럽습니다. :)
Roman Luštrik

2
R에서 prcomp와 princomp 기능의 차이 또는 "Q- 모드"와 "R- 모드 PCA"의 차이에 대한 질문이 있습니까? 두 사람은 관련이 없습니다.
Brett

오랜만이야. 하지만 시간이 있으면 바로 확인하겠습니다. IIRC 나는 실제로 약간의 차이가 있었다
hans0l0

답변:


50

이들의 차이점은 수행하는 PCA 유형과는 아무런 관련이 없으며 사용하는 방법뿐입니다. 에 대한 도움말 페이지prcomp 는 다음 과 같이 말합니다.

eigen공분산 행렬 을 사용하지 않고 (중심 및 가능한 스케일 된) 데이터 행렬의 단일 값 분해로 계산이 수행됩니다 . 이것은 일반적으로 수치 정확도에 선호되는 방법입니다.

반면에 princomp 도움말 페이지 는 다음과 같이 말합니다.

계산은 eigen에 의해 결정된 상관 또는 공분산 행렬을 사용하여 수행 됩니다 cor. 이는 S-PLUS 결과와의 호환성을 위해 수행됩니다. " 에서 수행하는 것처럼 선호하는 계산 방법은에 사용 svd하는 x것입니다 prcomp."

따라서 실제로는 큰 차이가 없을 것 같지만 prcomp선호됩니다 (예를 들어 도움말 페이지에서 예제를 실행하면 동일한 결과를 얻을 수 있음).



1
또한 데이터의 SVD를 통해 왜 PCA가 데이터입니까?를 참조하십시오 . 로 구현 된 데이터 매트릭스의 SVD prcomp가 바람직한 방법 인 이유에 대한 설명 .
amoeba 2019

22

보통 다변량 분석 기능 또는 질문들을 데이터 열로 이루어진다 (등 latents을 추출하는 상관 관계 계산) - 샘플 단위 동안 행이다 R의 espondents이. 따라서이 방법을 R 방법 분석 이라고 합니다. 그러나 응답자는 다변량 분석을 수행하는 반면 질문 은 샘플 단위로 처리 될 수 있습니다. 그것은 Q 방법 분석 일 것입니다.

둘 사이에는 공식적인 차이가 없으므로 동일한 기능으로 둘 다 관리 할 수 ​​있으며 데이터를 전치 할 수 있습니다. 그러나 표준화 및 결과 해석 문제에는 차이가 있습니다.

이것은 일반적인 대답이다 : 나는 특히 R 기능을 만지지 마십시오 prcompprincomp내가 R 사용자 아니에요과 그들 사이의 가능한 차이점을 인식하지이기 때문에.


5

유용한 특정 그레고리 B. 앤더슨에서 문서 제목은, PRINCIPAL COMPONENT ANALYSIS IN R AN EXAMINATION OF THE DIFFERENT FUNCTIONS AND METHODS TO PERFORM PCA이 주제에 대한 자세한 정보를 제공하고있다.

소개에서 다음 두 단락이 추출되었습니다.

R에는 누락 된 값없이 PCA를 수행하는 두 가지 일반적인 방법이 있습니다. (1) 스펙트럼 분해 (R 모드 [고유 분해]라고도 함) 및 (2) 단일 값 분해 (Q- 모드; R 개발 핵심 팀 2011). 이 두 가지 방법은 각각 고유 (R- 모드) 및 svd (Q- 모드) 기능을 사용하여 장기적으로 수행하거나 통계 패키지 및 기타 사용 가능한 추가 패키지에있는 많은 PCA 기능을 사용하여 수행 할 수 있습니다. 분석의 스펙트럼 분해 방법은 변수 간의 공분산과 상관을 검사하는 반면, 단일 값 분해 방법은 샘플 간의 공분산과 상관을 살펴 봅니다. 두 방법 모두 R 내에서 쉽게 수행 될 수 있지만, 특이 값 분해 방법 (즉,

이 문서는 R에서 PCA를 수행하기 위해 여러 가지 방법을 비교하는 데 중점을두고 통계 패키지 내의 정규성을 검사하기위한 적절한 시각화 기술을 제공합니다. 보다 구체적으로이 문서는 고유, princomp, svd, prcomp, PCA 및 pca의 6 가지 기능을 PCA 용으로 작성하거나 PCA에 사용할 수있는 기능과 비교합니다. 문서 전체에서 이러한 기능을 수행하는 데 필요한 R 코드는 Courier New 글꼴을 사용하여 텍스트에 포함되며 Tinn-R ( https://sourceforge.net/projects/tinn-r ) 에서 제공하는 기술을 사용하여 색상으로 코딩됩니다 . 또한 함수의 결과를 시뮬레이션 절차를 사용하여 비교하여 출력에서 ​​제공된 고유 값, 고유 벡터 및 점수가 다른 방법이 다른지 확인합니다.


2
링크가 끊어지는 경향이 있기 때문에 (예 : 페이지가 이동하거나 삭제되는 경우) 독립형 일 때 응답이 더 좋습니다. 답을 넓히려 고 노력 하시겠습니까?
Patrick Coulombe

@PatrickCoulombe, 완료되었습니다. 제안 해 주셔서 감사합니다. 나는 이것을 앞으로 주목할 것이다.
pengchy

1

prcomp1princomp

아래는 내 테스트 결과입니다.

> 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

테스트 데이터 :

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.