주성분분석을 R과 SAS를 비교해 보았습니다. 데이터는 변수가 2개(x1, x2)로 구성된 8개의 관측치입니다. 예전의 "SAS강좌와 통계컨설팅"에서는 10개의 데이터 였는데 8개로 줄였습니다. SAS에서는 PROC PRINCOMP 프로시져를 이용하였고 R에서는 패키지 {stats}의 princomp함수를 이용하였습니다. 결과는 동일하게 나왔습니다. |
* 주성분분석 실행하는 SAS 프로그램; |
(1-1) SAS 프로그램 결과(상관행렬 이용)
PROC PRINCOMP ;VAR x1 x2;RUN; 의 결과 (default로 상관행렬을 이용함)
아무런 옵션이 없이 그냥 PROC PRINCOMP를 이용하면 상관행렬을 이용합니다.
주성분1 Prin1 = 0.707107 X x1 - 0.707107 X x2
주성분2 Prin2 = 0.707107 X x1 + 0.707107 X x2 로 구할 수 있습니다.
주성분1이 설명하는 변량은 1.40148이고
주성분2가 설명하는 변량은 0.59852입니다.
다음은 주성분갯수를 선택하는데 도움이 되는 Scree 플롯인데 변수가 2개이라서 별로 의미가 없어 보이지만
변수가 여러 개인 경우에는 주성분의 갯수를 결정하는 데 도움이 됩니다.
(1-2) R 프로그램 결과(상관행렬 이용)
# 주성분분석을 실행하는 R 프로그램 x1 <- c( 4, 6, 7, 8, 9, 11, 12, 13); x2 <- c(15,16,11,10, 6, 8, 10, 14); (dataf01 <- data.frame(x1,x2)); princomp(dataf01,cor=T) # default |
prin_cor <-princomp(dataf01,cor=T) # 상관계수 이용, prin_cor 객체 생성
summary(prin_cor) # 객체 통계량을 보면 주성분의 표준편차와 설명력을 출력
prin_cor$sdev ^2 #3 표준폍차를 제곱해 보면 주성분의 설명력 출력
prin_cor$loadings # loadings 를 출력해 보면 고유벡터를 확인해 볼 수 있습니다.
주성분1 Prin1 = 0.707107 X x1 - 0.707107 X x2
주성분2 Prin2 = 0.707107 X x1 + 0.707107 X x2 로 구할 수 있습니다.
주성분1이 설명하는 변량은 1.40148이고
주성분2가 설명하는 변량은 0.59852입니다.
* 참고 R 을 이용한 고유치와 고유벡터의 결과
상관행렬을 구한 다음 eigen( ) 함수를 이용하면 고유벡터와 고유치를 확인할 수 있습니다.
> eigen(cor(dataf01))
SAS와 비교하면 주성분계수의 부호가 음과 양으로 바뀌어 있고
주성분의 고유치(eigen value, 설명하는 변량)는 동일한 것을 볼 수 있습니다.
(2-1) SAS 프로그램 결과(공분산행렬 이용)
PROC PRINCOMP COV;VAR x1 x2;RUN; 의 결과 (COV 옵션에 의해) 공분산행렬을 이용함
공분산을 사용하려면 PROC PRINCOMP에 cov 옵션을 이용합니다.
주성분1 Prin1 = -0.598741 X x1 + 0.800942 X x2
주성분2 Prin2 = 0.800942 X x1 + 0.598741 X x2 로 구할 수 있습니다.
주성분1이 설명하는 변량은 15.47145이고
주성분2가 설명하는 변량은 6.38569입니다.
(2-2) R 프로그램 결과(공분산행렬 이용)
* 참고 R 의 결과 - SAS와 같은 결과
x1 <- c( 4, 6, 7, 8, 9, 11, 12, 13);
x2 <- c(15,16,11,10, 6, 8, 10, 14);
(dataf01 <- data.frame(x1,x2));
eigen(cov(dataf01))
성분1 Prin1 = -0.598741 X x1 + 0.800942 X x2
주성분2 Prin2 = 0.800942 X x1 - 0.598741 X x2 로 구할 수 있습니다.
주성분1이 설명하는 변량은 15.47145이고
주성분2가 설명하는 변량은 6.38569입니다.
AS와 비교하면 주성분계수의 부호가 음과 양으로 바뀌어 있고
주성분의 고유치(eigen value, 설명하는 변량)는 동일한 것을 볼 수 있습니다.
'SAS강좌와 통계컨설팅 - 통계편 > 26. 주성분분석' 카테고리의 다른 글
(R)제25강(07)_주성분 분석 - 상관행렬 이용하기 (0) | 2021.12.24 |
---|---|
(R)제25강(02)_주성분분석 실습 (0) | 2021.12.24 |
(S)제25강(00)_주성분분석 목차 (0) | 2021.12.24 |
(S)제25강(01)_주성분분석이란? (0) | 2021.12.21 |