일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 데이터 병합
- R 프로그래밍
- 조건문
- 분석 프로세스
- R merge
- 데이터 스케일링
- R 데이터프레임
- 변수선택
- 데이터 개념
- 주성분행렬
- 정보 생산량
- 데이터 과학
- R 통계분석
- R프로그래밍
- 데이터 분석 프로세스
- 비정형 데이터
- 데이터 분석 정의
- 스크리산점도
- 데이터 분석 과정
- R 부분합
- 반정형 데이터
- 데이터 특징
- 데이터 분석 순서
- prcomp
- 데이터 정제
- 데이터프레임 생성
- 데이터란
- princomp
- 정형 데이터
- 변수축소
- Today
- Total
D-과학 이야기
[R 프로그래밍] 주성분 분석 이해와 변수 축소/ 다중공선성/스크리 산점도/상관관계/ princomp /prcomp 본문
[R 프로그래밍] 주성분 분석 이해와 변수 축소/ 다중공선성/스크리 산점도/상관관계/ princomp /prcomp
타민희 2020. 11. 27. 17:25
# R 프로그래밍 / 주성분 분석 이해와 변수 축소/ 다중공선성/ 스크리 산점도/ 상관관계/ 데이터 과학
1. 주성분 분석에 대한 이해
주성분 분석이란, 데이터를 축소하는 기법으로, 데이터 내에서 서로 상관성이 높은 변수들의 선형결합으로 이루어진 주성분이라는 새 변수를 생성한다. 주성분으로 전체 변동을 가장 많이 설명할 수 있도록 해야하며, 각 주성분은 서로 독립이어야 한다. 첫번째 주성분으로는 전체 변동을 가장 많이 설명 가능해야 한다.
다중공선성이란, 독립변수들 간에 강한 상관관계가 존재하는 성질이다. 즉, 다중공선성이 크면, 독립변수들이 서로 독립이어야 한다는 회귀분석의 가정을 위배하는 경우라고 판단할 수 있다. 다중공선성이 존재하면, 주성분 분석을 통해 변수를 축소하여야 한다.
주성분(Principal Component)의 기여율은 총 변동에 대한 주성분의 설명력을 의미한다. 기여율은 0~1사이의 값이며, 1에 가까울수록 설명력이 큰 것으로 볼 수 있다. 특히, 누적 기여율이 85% 이상이면 해당 지점까지 주성분의 수로 결정하게 된다.
스크리 산점도(Scree Plot)란, 주성분을 x축, 주성분의 고유값(주성분의 분산)을 y축에 둔 그래프로, 고유값이 급격히 완만해지는 지점의 바로 전 단계가 주성분의 수가 된다.
* 주성분 분석 전, 산점도를 통한 변수 간 상관관계를 파악하는 것이 좋다!
library(datasets)
data(USArrests)
head(USArrests)
pairs(USArrests, panel=panel.smooth, main="USArrests data")
USArrests 산점도를 살펴보면, Murder와 Assault와는 비교적 큰 상관관계가 있음으로 보이고, Murder과 UrbanPop과의 상관관계는 낮아보인다. 이처럼 먼저 pairs 함수로 산점도를 그려 상관관계를 살펴본 후 , 주성분 분석을 실시하도록 한다.
2. princomp 함수
- princomp는 공분산행렬의 고유벡터를 구하여 주성분을 분석하는 함수이다.
- princomp(데이터명, cor=TRUE, scores=FALSE, ...)
- cor=TRUE 옵션은 상관행렬로 주성분 분석을 수행하며, FALSE인 경우에 공분산행렬로 주성분 분석을 수행함
* 공분산행렬은 변수의 측정 단위를 반영한 것이고, 상관행렬은 변수의 측정단위를 표준화함
- scores 옵션은 각 주성분의 점수를 계산해야 하는지 여부
- (예) USA_princomp<-princomp(USArrests, cor=TRUE)
summary(USA_princomp)
plot(USA_princomp,type='l')
- summary() 함수 결과의 standard deviation은 주성분의 표준편차, proportion of variance는 주성분의 기여율, Cumulative Proportion은 누적기여율을 의미함
- 예시의 cumulative proportion 누적기여율이 85% 이상인 주성분 2까지 선택하는 게 좋다. 주성분 2까지 86.75% 정도의 설명율을 가지기 때문이다.
- 스크리 플랏을 통해 살펴보면, 플랏의 기울기(분산의 변화정도)가 주성분 3부터 급격히 감소하므로, 3에서 1을 뺀 주성분 2까지 주성분을 선택하는 게 좋다.
- 주성분분석 결과의 loadings 을 살펴보면, 각 주성분의 가중치를 살펴볼 수 있다. 주성분 2는 0.418*Murder+0.188*Assault-0.873*Urbanpop-0.167*Rape 임을 알 수 있다.
- USA_princomp$loadings
- Scores을 활용하여, 주성분 점수를 알 수 있는데, 주성분 점수는 주성분을 통해 계산된 각 행별 좌표를 의미한다.
- USA_princomp$scores
- biplot(USA_princomp, scale=0)
- biplot 함수를 이용하면 제1,2주성분에 의한 행렬도를 그려볼 수 있다. 각 데이터 행의 주성분 점수를 산점도로 나타내고 각 변수에 대한 주성분 계수를 화살표로 시각화한 그래프다.
- 여기서 화살표의 방향이 비슷한 변수일수록 서로간의 상관관계가 있다고 판단가능하다. 또한, 상대적 가중치(loadings)가 높을수록 화살표의 방향이 수평에 가까우며 가중치가 낮을수록 화살표의 방향이 x축과 수직에 가깝다(예: UrbanPop).
3. prcomp 함수
- prcomp는 자료 행렬을 특이값 분해하여 주성분을 분석하는 함수이다.
- prcomp(데이터명, center=TRUE, scale.=TRUE, ...)
- 데이터명에는 주성분 분석을 수행할 행렬 또는 데이터 프레임명을 입력
- center=TRUE 옵션은 데이터의 중심이 0이 되게 함
- scale.=TRUE 옵션은 데이터를 표준화함
- (예)
- prcomp을 통해 주성분분석을 한 결과, 주성분 1부터 누적 기여율이 85%를 상회하므로, 주성분 1을 선택한다.
- 마찬가지로 스크리 플랏에서도 주성분 2에서 기울기가 급격히 변화하는 것을 알 수 있으며, 따라서 주성분 1까지 선택한다.
▼ R 프로그래밍 데이터 변환/파생변수 생성/ within, transform ▼
[R] 프로그래밍 데이터 변환 /파생변수 생성 within transform /데이터프레임 생성
* 파생변수란, 기존의 변수를 더하거나 빼는 등 다양한 조건이나 함수를 활용하여 생성한 변수 1. transform 함수 - 데이터프레임에 새로운 변수 추가 - transform(데이터프레임명, 파생변수=생성식,
datasciencee.tistory.com
▼ R 프로그래밍 제어문, 반복문 while, for, repeat 함수 ▼
[R] 제어문 2. 반복문 while, for, repeat 함수
1. while - 반복 횟수 지정 없이 주어진 조건이 만족하는동안 계속해서 반복을 수행 - 변수 초기값 설정/ while(조건문) {실행문} * 단, 실행문은 주어진 조건문이 참일 경우에만 실행된다. - (예) y
datasciencee.tistory.com
'PROGRAMMING > R studio' 카테고리의 다른 글
[R 프로그래밍] 데이터 병합 및 요약/ merge/ aggregate/ subset/ 부분합/ 도수분포표 (0) | 2020.11.30 |
---|---|
[R 프로그래밍] 데이터 표준화/ 정규화/ 스케일링/ scale/ 사용자 정의 함수/ transform (0) | 2020.11.30 |
[R] 프로그래밍 데이터 변환 /파생변수 생성 within transform /데이터프레임 생성 (0) | 2020.11.27 |
[R] 제어문 2. 반복문 while, for, repeat 함수 (0) | 2020.11.26 |
[R] 제어문 1. 조건문 if/else 와 ifelse 함수 (0) | 2020.11.26 |