Describe 레만투_주성분분석 here
R에는 princomp와 prcomp 두 가지 주성분분석 함수가 있다. 사용법이나 결과가 거의 비슷하지만 내부 알고리듬이 다르다. princomp는 교과서에 많이 나오는 방법처럼 공분산행렬의 고유벡터를 구하는 방법을 사용하고, prcomp는 자료 행렬을 특이값 분해(SVD:
Singular Value Decomposition)하는 방법을 사용한다. 보통 prcomp를 더 선호하며 princomp는 S-Plus와 호환을 위해 존재한다.
USArrests 자료를 사용해보자. 미국의 각 주별로 도시인구비율(
UrbanPop)과 인구 10만명 중 살인(Murder), 폭력(Assault), 강간(Rape) 혐의로 체포된 사람의 수에 대한 자료이다. 아래에서 scale 옵션을 TRUE로 한 이유는 도시인구비율과 체포된 사람 수가 서로 단위가 다르기 때문이다. princomp에서는 상관행렬의 PCA를 구한다.
> p1 = prcomp(USArrests, scale=TRUE)
> p2 = princomp(USArrests, cor=TRUE)
prcomp의 경우 print 함수는 변환행렬, summary 함수는 주성분별 정보를 보여준다.
> print(p1)
Standard deviations:
[1] 1.5748783 0.9948694 0.5971291 0.4164494
Rotation:
PC1 PC2 PC3 PC4
Murder -0.5358995 0.4181809 -0.3412327 0.64922780
Assault -0.5831836 0.1879856 -0.2681484 -0.74340748
UrbanPop -0.2781909 -0.8728062 -0.3780158 0.13387773
Rape -0.5434321 -0.1673186 0.8177779 0.08902432
> summary(p1)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 1.57 0.995 0.5971 0.4164
Proportion of Variance 0.62 0.247 0.0891 0.0434
Cumulative Proportion 0.62 0.868 0.9566 1.0000
biplot 함수는
PC1과
PC2를 축으로 하는 2차원 평면에 원래 자료를 투영시켜서 보여준다. 아래 명령은 이 글 맨 위의 그림을 그린다.
> biplot(p1)
> #plot 함수는 scree plot을 그려준다.
> plot(p1)
설명 감사합니다
많은 도움이 됩니다 안동대 정보통계학과 정현복 입니다. -- 정현복 2016-11-11 21:03:22