Q 모드와 R 모드 주요 구성 요소 분석 (PCA)에 대해 비교 ?prcomp
하고 ?princomp
찾았습니다. 그러나 정직하게 – 나는 그것을 이해하지 못한다. 아무도 차이점을 설명하고 언제 적용 할 것인지 설명 할 수 있습니까?
Q 모드와 R 모드 주요 구성 요소 분석 (PCA)에 대해 비교 ?prcomp
하고 ?princomp
찾았습니다. 그러나 정직하게 – 나는 그것을 이해하지 못한다. 아무도 차이점을 설명하고 언제 적용 할 것인지 설명 할 수 있습니까?
답변:
이들의 차이점은 수행하는 PCA 유형과는 아무런 관련이 없으며 사용하는 방법뿐입니다. 에 대한 도움말 페이지prcomp
는 다음 과 같이 말합니다.
eigen
공분산 행렬 을 사용하지 않고 (중심 및 가능한 스케일 된) 데이터 행렬의 단일 값 분해로 계산이 수행됩니다 . 이것은 일반적으로 수치 정확도에 선호되는 방법입니다.
반면에 princomp
도움말 페이지 는 다음과 같이 말합니다.
계산은
eigen
에 의해 결정된 상관 또는 공분산 행렬을 사용하여 수행 됩니다cor
. 이는 S-PLUS 결과와의 호환성을 위해 수행됩니다. " 에서 수행하는 것처럼 선호하는 계산 방법은에 사용svd
하는x
것입니다prcomp
."
따라서 실제로는 큰 차이가 없을 것 같지만 prcomp
선호됩니다 (예를 들어 도움말 페이지에서 예제를 실행하면 동일한 결과를 얻을 수 있음).
보통 다변량 분석 기능 또는 질문들을 데이터 열로 이루어진다 (등 latents을 추출하는 상관 관계 계산) - 샘플 단위 동안 행이다 R의 espondents이. 따라서이 방법을 R 방법 분석 이라고 합니다. 그러나 응답자는 다변량 분석을 수행하는 반면 질문 은 샘플 단위로 처리 될 수 있습니다. 그것은 Q 방법 분석 일 것입니다.
둘 사이에는 공식적인 차이가 없으므로 동일한 기능으로 둘 다 관리 할 수 있으며 데이터를 전치 할 수 있습니다. 그러나 표준화 및 결과 해석 문제에는 차이가 있습니다.
이것은 일반적인 대답이다 : 나는 특히 R 기능을 만지지 마십시오 prcomp
과 princomp
내가 R 사용자 아니에요과 그들 사이의 가능한 차이점을 인식하지이기 때문에.
유용한 특정 그레고리 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 ) 에서 제공하는 기술을 사용하여 색상으로 코딩됩니다 . 또한 함수의 결과를 시뮬레이션 절차를 사용하여 비교하여 출력에서 제공된 고유 값, 고유 벡터 및 점수가 다른 방법이 다른지 확인합니다.
아래는 내 테스트 결과입니다.
> 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