다중공선성

독립변수들 사이에 강한 상관관계가 존재할 때 발생하는 문제로 일반적으로 vif가 2( or 10) 보다 크면 다중공선성이 존재한다고 본다.

일반적으로 다중공선성 문제해결을 위해 변수선택법을 활용하거나 주성분회귀분석을 사용한다.

head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
formula=paste(names(iris)[-c(1,5)],collapse = '+')
formula=paste(c('Sepal.Length',formula),collapse = '~')
step(lm(Sepal.Length~1,data=iris[,-5]),scope=formula,direction ='forward')
## Start:  AIC=-55.6
## Sepal.Length ~ 1
## 
##                Df Sum of Sq     RSS      AIC
## + Petal.Length  1    77.643  24.525 -267.641
## + Petal.Width   1    68.353  33.815 -219.460
## + Sepal.Width   1     1.412 100.756  -55.690
## <none>                      102.168  -55.602
## 
## Step:  AIC=-267.64
## Sepal.Length ~ Petal.Length
## 
##               Df Sum of Sq    RSS     AIC
## + Sepal.Width  1    8.1963 16.329 -326.66
## + Petal.Width  1    0.6443 23.881 -269.63
## <none>                     24.525 -267.64
## 
## Step:  AIC=-326.66
## Sepal.Length ~ Petal.Length + Sepal.Width
## 
##               Df Sum of Sq    RSS     AIC
## + Petal.Width  1    1.8834 14.445 -343.04
## <none>                     16.329 -326.66
## 
## Step:  AIC=-343.04
## Sepal.Length ~ Petal.Length + Sepal.Width + Petal.Width
## 
## Call:
## lm(formula = Sepal.Length ~ Petal.Length + Sepal.Width + Petal.Width, 
##     data = iris[, -5])
## 
## Coefficients:
##  (Intercept)  Petal.Length   Sepal.Width   Petal.Width  
##       1.8560        0.7091        0.6508       -0.5565
step(lm(Sepal.Length~.,data=iris[,-5]),direction ='backward')
## Start:  AIC=-343.04
## Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width
## 
##                Df Sum of Sq    RSS     AIC
## <none>                      14.445 -343.04
## - Petal.Width   1    1.8834 16.329 -326.66
## - Sepal.Width   1    9.4353 23.881 -269.63
## - Petal.Length  1   15.4657 29.911 -235.86
## 
## Call:
## lm(formula = Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width, 
##     data = iris[, -5])
## 
## Coefficients:
##  (Intercept)   Sepal.Width  Petal.Length   Petal.Width  
##       1.8560        0.6508        0.7091       -0.5565
step(lm(Sepal.Length~.,data=iris[,-5]),direction ='both')
## Start:  AIC=-343.04
## Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width
## 
##                Df Sum of Sq    RSS     AIC
## <none>                      14.445 -343.04
## - Petal.Width   1    1.8834 16.329 -326.66
## - Sepal.Width   1    9.4353 23.881 -269.63
## - Petal.Length  1   15.4657 29.911 -235.86
## 
## Call:
## lm(formula = Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width, 
##     data = iris[, -5])
## 
## Coefficients:
##  (Intercept)   Sepal.Width  Petal.Length   Petal.Width  
##       1.8560        0.6508        0.7091       -0.5565

주성분분석

주성분 분석의 경우 cor matrix혹은 cov matrix에 대하여 고유 벡터를 통해 데이터를 선형변환한다. 따라서 새로운 변수들은 선형 독립이 되나 factor가 존재하는 데이터에 대해서 거리를 구할 수 없다는 단점이 있다.

또한 pca 외에도 딥러닝 기법 중 하나인 autoencoder나 음수미포함분해nnf나 위상수학의 tda가 성능면에서 우수한 성능을 보인다.

Propertion of Variance: 분산비율, 각 주성분의 차지하는 비율을 말하며 클 수록 영향을 많이 미친다는 것을 의미한다. Cumulative Proportion: 분산의 누적 합계

prcomp 의 경우 SVD(특이값 분해)를 사용하고, princomp의 경우 스팩트럼 분해를 사용한다는 측면에서 prcomp의 수치 정확도가 더 높다.

 summary(prcomp(iris[,-5], scale = F))
## Importance of components:
##                           PC1     PC2    PC3     PC4
## Standard deviation     2.0563 0.49262 0.2797 0.15439
## Proportion of Variance 0.9246 0.05307 0.0171 0.00521
## Cumulative Proportion  0.9246 0.97769 0.9948 1.00000
 summary(princomp(iris[,-5]),cor=T,scores=T)
## Importance of components:
##                           Comp.1     Comp.2     Comp.3      Comp.4
## Standard deviation     2.0494032 0.49097143 0.27872586 0.153870700
## Proportion of Variance 0.9246187 0.05306648 0.01710261 0.005212184
## Cumulative Proportion  0.9246187 0.97768521 0.99478782 1.000000000

PC1과 PC2를 사용하면 0.7296+0.2285 인 원래식의 0.9581%가량 설명