본문 바로가기
공부/R & Python

15-2. 주성분 회귀분석(Principle Component Regression)

by 드인 2020. 3. 6.

15-2. 주성분 회귀분석

(Principle Component Regression)


1) 주성분회귀 (Principle Component Regression)

- 독립변수들의 차원을 줄이기 위해 사용가능, 주성분을 이용하여 타겟변수(Y)의 설명력(예측력)을 높일 수 있다.

- 독립변수들의 전체분산을 가장 잘 설명해주는 component를 사용하여 독립변수들간 다중공선성 문제를 해결할 수 있다.

- 주요 component score들이 Y의 예측력을 보장하는 것이 아니다. 주요 component score는 X의 분산을 가장 잘 설명하는 방향의 축을 기준으로 변환된 것이기 때문에 Y와의 관계에 있어서는 상관성이 없을 수도 있다.

 

- wine데이터 (9개의 독립변수, 타겟변수는 Aroma rating)

9개의 독립변수

타겟변수(y) : Aroma

 

- wine 데이터 불러들이기, 독립변수들간 상관계수

wine<-read.csv(file="wine_aroma.csv")
attach(wine)
head(wine)

cor(wine[1:9])

독립변수간 상관관계 확인

0.95, 0.82등 일부 높은 상관계수

 

- 주성분분석을 위한 함수 : prcomp(독립변수들, center=, sclae= )

wi.pca<-prcomp(wine[1:9],center=T,scale.=F)

- 옵션을 주지않으면 center=T, scale=F

- center=T, scale=F는 mean-centering만 한다음 component를 뽑음

 
wi.pca

PC1 = 0.0000439*Mo -0.00026*Ba -0.000046*Cr +...

 

- 전체분산 중 각 주성분을 설명하는 비율

summary(wi.pca)

- PC1은 전체분산의 97.38%를 설명, 1개의 변수만으로도 독립변수 전체분산을 거의 설명

- PC2은 전체분산의 1.98%를 설명

- 누적설명비율을 보면 PC1와 PC2, 두개의 성분으로 전체분산의 99.36%를 설명

 

- 최적 주성분 수는? - scree plot을 그려보고 급격히 떨어지기 전까지의 PC를 선택

plot(wi.pca,type="l")

- 2rd PC에서 설명력이 급격하게 떨어짐을 볼 수 있음

 

=> 이 경우 PC1 한개만 사용해도 된다는 의미

 

- PC계산 = X_data(n*p) %*% PCA_weight(p*p)

PRC<-as.matrix(wine[,1:9])%*%wi.pca$rotation

PRC는 n*p행렬, 여기서는 37*9


head(PRC)

 

2) 주성분을 이용한 회귀모형

- wine data => wine.pc data구성

wine.pc<-cbind(as.data.frame(PRC),Aroma)
head(wine.pc)

 

- 다중회귀모형과 주성분회귀분석

- 주성분을 이용한 회귀분석모형 1 (wine data : PC1-PC4포함)

fit1<-lm(Aroma~PC1+PC2+PC3+PC4, data=wine.pc)
fit1
summary(fit1)

PC1-PC4 다중회귀모형 수행 (R^2=.494)

별 개수 -> 중요도

 

- 주성분을 이용한 회귀분석모형 2 (wine data : PC1-PC9 포함)

fit2<-lm(Aroma~., data=wine.pc)
fit2
summary(fit2)

PC1-PC9 다중회귀모형 수행 (R^2=.741)

 

- 일반 회귀분석모형 (wine data : raw data)

fit3<-lm(Aroma ~., data=wine)
summary(fit3)

9개 독립변수 다중회귀모형 수행 (R^2=.741)

 

- 잔차에 대한 가정 확인

layout(matrix(c(1,2,3,4),2,2)) # optional 4 graphs/page 
plot(fit3)