주성분 분석 예제(R)

(1) 89구역 54식물종 분석 (단위: 그램)

  • 참조: The R Book: R로 배우는 데이터 분석 기술 (Page 942-945)
pgdata <- read.table("data/pgfull.txt", header = T)
names(pgdata)
##  [1] "AC"      "AE"      "AM"      "AO"      "AP"      "AR"      "AS"     
##  [8] "AU"      "BH"      "BM"      "CC"      "CF"      "CM"      "CN"     
## [15] "CX"      "CY"      "DC"      "DG"      "ER"      "FM"      "FP"     
## [22] "FR"      "GV"      "HI"      "HL"      "HP"      "HS"      "HR"     
## [29] "KA"      "LA"      "LC"      "LH"      "LM"      "LO"      "LP"     
## [36] "OR"      "PL"      "PP"      "PS"      "PT"      "QR"      "RA"     
## [43] "RB"      "RC"      "SG"      "SM"      "SO"      "TF"      "TG"     
## [50] "TO"      "TP"      "TR"      "VC"      "VK"      "plot"    "lime"   
## [57] "species" "hay"     "pH"

총 변수는 59개임

실험조건에 해당하는 55열(plot)과 공변량에 해당하는 56~58열(lime, species richness(종), hay biomass(건초량), pH(토양 산성도))는 그대로 둠

총 변수에서 1~54열까지만 별도로 추출하여 데이터를 만듬

pgdata2 <- pgdata[, 1:54]
head(pgdata2)
  AC<dbl>AE<dbl>AM<dbl>AO<dbl>AP<dbl>AR<dbl>AS<dbl>AU<dbl>BH<dbl>
12.511.180.450.910.470.0000.000
26.850.100.581.020.350.0000.000
310.580.110.211.850.000.0000.000
413.650.000.006.460.000.0000.000
54.840.001.490.360.100.0600.020
64.300.321.721.610.090.0300.000

6 rows | 1-10 of 55 columns

총 변수에서 1~54열까지만 별도로 추출하여 데이터를 만듬

R에서는 prcomp함수를 사용함

54개의 식물종마다 분산은 유의하게 다르기 때문에 scale = TRUE 옵션을 사용함

require(graphics)
model <- prcomp(pgdata2, scale = TRUE)
summary(model)
## Importance of components:
##                           PC1    PC2    PC3     PC4     PC5     PC6
## Standard deviation     3.0048 2.3358 1.9317 1.78562 1.73303 1.51187
## Proportion of Variance 0.1672 0.1010 0.0691 0.05904 0.05562 0.04233
## Cumulative Proportion  0.1672 0.2682 0.3373 0.39639 0.45201 0.49434
##                            PC7     PC8     PC9    PC10    PC11    PC12
## Standard deviation     1.50878 1.37586 1.32441 1.27318 1.21950 1.19792
## Proportion of Variance 0.04216 0.03506 0.03248 0.03002 0.02754 0.02657
## Cumulative Proportion  0.53649 0.57155 0.60403 0.63405 0.66159 0.68816
##                           PC13    PC14    PC15    PC16    PC17    PC18
## Standard deviation     1.17227 1.13551 1.09308 1.06783 1.00572 0.95504
## Proportion of Variance 0.02545 0.02388 0.02213 0.02112 0.01873 0.01689
## Cumulative Proportion  0.71361 0.73749 0.75961 0.78073 0.79946 0.81635
##                           PC19    PC20    PC21    PC22    PC23    PC24
## Standard deviation     0.91853 0.89466 0.86437 0.84970 0.76898 0.75135
## Proportion of Variance 0.01562 0.01482 0.01384 0.01337 0.01095 0.01045
## Cumulative Proportion  0.83198 0.84680 0.86063 0.87401 0.88496 0.89541
##                           PC25    PC26    PC27    PC28    PC29    PC30
## Standard deviation     0.74191 0.70653 0.69475 0.67325 0.62565 0.56800
## Proportion of Variance 0.01019 0.00924 0.00894 0.00839 0.00725 0.00597
## Cumulative Proportion  0.90560 0.91485 0.92379 0.93218 0.93943 0.94540
##                           PC31    PC32    PC33    PC34    PC35    PC36
## Standard deviation     0.56269 0.53857 0.52670 0.49524 0.48706 0.46638
## Proportion of Variance 0.00586 0.00537 0.00514 0.00454 0.00439 0.00403
## Cumulative Proportion  0.95127 0.95664 0.96177 0.96632 0.97071 0.97474
##                           PC37   PC38    PC39    PC40    PC41    PC42
## Standard deviation     0.44471 0.4025 0.37661 0.35794 0.34381 0.31452
## Proportion of Variance 0.00366 0.0030 0.00263 0.00237 0.00219 0.00183
## Cumulative Proportion  0.97840 0.9814 0.98403 0.98640 0.98859 0.99042
##                           PC43    PC44    PC45    PC46    PC47    PC48
## Standard deviation     0.29639 0.26849 0.25825 0.23467 0.22753 0.21756
## Proportion of Variance 0.00163 0.00133 0.00124 0.00102 0.00096 0.00088
## Cumulative Proportion  0.99205 0.99338 0.99462 0.99564 0.99660 0.99747
##                           PC49    PC50    PC51    PC52    PC53    PC54
## Standard deviation     0.19922 0.17755 0.16758 0.15581 0.11255 0.01721
## Proportion of Variance 0.00073 0.00058 0.00052 0.00045 0.00023 0.00001
## Cumulative Proportion  0.99821 0.99879 0.99931 0.99976 0.99999 1.00000

Standard Deviation: 표준편차

Propertion of Variance: 분산비율, 각 주성분의 차지하는 비율을 말하며 클 수록 영향도가 그만큼 높다는 의미

Cumulative Proportion: 분산의 누적 합계

일반적으로 전체 변화량의 90%가량을 설명하는 주성분을 선택하며, 여기서는 분산의 누적 합계를 볼 때 PC24까지의 성분 선택을 볼 수 있음

screeplot(model, main = "", col = "green", type = "lines", pch = 1, npcs = length(model$sdev))

이 그래프는 PCA에서 사용하는 스크리 플롯(scree plot)이라고 함

그래프가 완만해 지는 부분 이전까지만 활용하는 것이 바람직함

biplot(model)

각 개체에 대한 첫번째, 두번째 주성분 점수 및 행렬도(biplot)임

가까운 거리와 방향일수록 변수들의 상관성이 높아짐

그림 오른쪽에 AP, AE, HS 종은 PC1에 대한 강한 양의 부하량을 갖고 있고, 그림 왼쪽 LC, PS, LO는 강한 음의 부하량을 갖고 있음

그림 위쪽에 AC와 AO 종은 PC2에 대한 강한 양의 부하량을 갖고 있고, 그림 아래쪽 TF, PL, RA는 PC2에 강한 음의 부하량을 갖고 있음

yv <- predict(model)[, 1]
yv2 <- predict(model)[, 2]
par(mfrow = c(1,2))
plot(pgdata$hay, yv, pch = 16, xlab = "biomass", ylab = "PC 1", col = "red")
plot(pgdata$pH, yv2, pch = 16, xlab = "soil pH", ylab = "PC 2", col = "blue")
par(mfrow = c(1,1))

보다시피, PC1과 바이오매스 사이에, PC2와 흙의 pH 사이에 매우 강한 관계가 있음을 알 수 있음

첫 번째 주성분은 바이오매스가 증가하는 것(빛을 얻기 위한 경쟁 증가)과 연관이 있고, 두 번째 주성분은 흙의 pH가 감소하는 것(산도의 증가)와 연관이 있는 것으로 보임

출처 : RPub

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중