728x90
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%를 설명하는 것을 보이고 있습니다.

 

*주성분분석에 대해서 궁금하신 부분이 있으시면 댓글에 글을 남겨 주시면

제가 아는 범위내에서 설명드리도록 하겠습니다.

+ Recent posts