R을 이용하면 (SAS에 비해) 프로그램을 훨씬 간단하게 작성할 수 있습니다. SAS에 익숙하신 분들은 PROC PRINCOMP를 사용하고 OUTPUT 문을 이용하여 SAS 데이터셋으로 저장하는 과정을 거칩니다. 물론 SAS와 R의 작업 프로세스는 같지만, R로는 훨씬 효율적으로 프로그램을 작성할 수 있습니다. 주성분분석에 많이 사용되는 함수로는 princomp( )와 prcomp( )가 있는데 제가 테스트를 해 보니 주성분loading 을 구하는 경우, 두 함수의 차이가 있었는데 prcomp 의 결과가 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));
out <-princomp(dataf01,cor=F,scores=T)
names(out)
out$score
out$loadings
summary(out)
(1) dataf01 <- data.frame(x1,x2) 변수 x1, x2를 데이터프레임으로 묶습니다.
(2) princomp(dataf01,cor=F,scores=T)의 객체 out를 만듭니다.
주성분분석으로 princomp 함수를 사용합니다.
첫 인자 dataf01 은 분석에 사용되는 데이터이고
cor=F 상관계수행렬을 사용하지 않고 공분산행렬을 사용하겠다는 의미
scores=T 는 주성분점수를 계산하겠다는 의미
names(out) 를 보면 score 라는 변수가 있는 것을 확인할 수 있습니다.
(3) 주성분점수를 출력합니다. 객체 out의 score 객체에 저장되어 있습니다.
(4) 주성분점수를 구하는 계수를 구합니다.
comp1= 0.599 X x1 - 0.801 X x2
comp2 = 0.801 X x1 + 0.599 X x2
(5) 주성분 1과 2가 설명하는 설명력을 출력합니다.
summary( )함수를 사용하면 주성분들이 각 변수의 변량을 얼마나 설명하는지 비율을 구할 수 있습니다.
제1주성분이 70.78%를 설명하고, 제2주성분이 29.21%를 설명하는 것을 보이고 있습니다.
*주성분분석에 대해서 궁금하신 부분이 있으시면 댓글에 글을 남겨 주시면
제가 아는 범위내에서 설명드리도록 하겠습니다.
'SAS강좌와 통계컨설팅 - 통계편 > 26. 주성분분석' 카테고리의 다른 글
(S,R)제25강(02)_주성분분석 실습 - SAS와 R 비교 (0) | 2021.12.24 |
---|---|
(R)제25강(07)_주성분 분석 - 상관행렬 이용하기 (0) | 2021.12.24 |
(S)제25강(00)_주성분분석 목차 (0) | 2021.12.24 |
(S)제25강(01)_주성분분석이란? (0) | 2021.12.21 |