Base R로 스크리 플롯 만들기

R-Blogger · 블로그·해설 · 2023-10-17

R-Blogger블로그·해설한국어2023-10-17

Base R로 스크리 플롯 만들기

Base R에서 스크리 플롯 만들기소개스키 플롯은 주성분 분석(PCA)에서 각 주성분(PC)이 설명하는 고유값 또는 분산을 선 그래프로 나타낸 것입니다. PCA 모델에서 유지할 주성분의 개수를 결정하는 데 유용한 도구입니다.스키 플롯의 원리주성분마다 고유값(eigenvalue)을 구하고, 이를 내림차순으로 정렬한 뒤 그래프로 표시하면, 급격히 감소하는 구간(‘엘보우’)이 나타나는 지점을 기준으로 적절한 차원의 수를 선택할 수 있습니다.Base R을 이용한 스키 플롯 그리기다음은 prcomp()함수를 사용해 PCA를 수행하고, 기본 그래픽 함수로 스키 플롯을 그리는 예시입니다.# 데이터 준비 (예: iris 데이터셋) df <- iris[, 1:4] # PCA 수행 (스케일링 포함) pca_res <- prcomp(df, scale. = TRUE) # 고유값(분산) 추출 eig_vals <- pca_res$sdev ^ 2 # 누적 분산 비율 계산 cum_var <- cumsum(eig_vals) / sum(eig_vals) # 스키 플롯 그리기 plot(eig_vals, type = "b", xlab = "주성분 번호", ylab = "고유값", main = "스키 플롯") abline(h = 1, col = "gray", lty = 2) # Kaiser 기준선 (고유값 = 1) # 누적 분산 비율 표시 (옵션) lines(cum_var * max(eig_vals), type = "b", col = "red") legend("topright", legend = c("고유값", "누적 분산 비율"), col = c("black", "red"), lty = 1, pch = 1)코드 설명prcomp()는 데이터 행렬을 입력으로 받아 PCA를 수행합니다. scale. = TRUE옵션은 각 변수의 표준편차가 1이 되도록 스케일링합니다.pca_res$sdev는 각 주성분의 표준편차이며, 이를 제곱하면 고유값(분산)인 eig_vals를 얻습니다.plot()에서 type = "b"는 점과 선을 동시에 표시합니다.고유값이 1보다 큰 주성분만 선택하는 ‘Kaiser 기준’을 시각적으로 표시하기 위해 abline()을 사용했습니다.누적 분산 비율을 동일한 축에 빨간 색 선으로 겹쳐 보여 주어, 전체 변동 중 어느 정도를 설명하는지 한눈에 파악할 수 있습니다.실제 적용 예시위 코드를 실행하면 다음과 같은 스키 플롯이 나타납니다. 첫 번째 주성분에서 급격히 고유값이 감소하고, 이후 완만해지는 구간이 보이면 ‘엘보우’ 지점을 기준으로 2~3개의 주성분을 선택하는 것이 일반적입니다. 또한 cum_var를 통해 80 % 이상의 누적 분산을 설명하는 최소 차원을 확인할 수 있습니다.
원문 URL
전체 글은 원문 페이지에서 이어서 읽을 수 있습니다.
원문에서 전체 글 읽기
작성자
R-Blogger
출처
R-Blogger
플랫폼
R-Blogger
분류
블로그·해설
언어
한국어
발행일
2023-10-17