plot(xs, dnorm(xs), xlim=c(-2, 2), ylim=c(0, 0.7), xlab='', ylab='', type='l')
par(new=T)
plot(xss, dnorm(xss, mean=0.5, sd=0.7), xlim=c(-2, 2), ylim=c(0, 0.7), xlab='', ylab='', type='l')

Ridge Regression

개요 :

  1. Ridge Regression 은 다중공선성(Multicollinearity)문제를 해결하기 위한 해법 중 하나.

  2. least squares method를 수정해서 사용하는 방법

  3. Regression의 estimator가 unbiased estimator에 비해서 상당히 높은 정확도를 가지면서,

  4. 동시에 bias가 허용가능한 수준일 때 사용한다.

\[ r_{XX}b = r_{YX} \]

\[ (r_{XX} + cI)b^{R} = r_{YX} \] 여기서 c는 lambda로 표현되기도 하는데 biasing constant이다.

\[ b^{R} = [b_1^{R}, ... , b_{p-1}^{R}]^{t} \]

상수 c고르기 : Ridge Trace 와 Variance Influence Factors \(VIF_k\)

Ridge Trace 는 \(b_{k}^{R}\)을 c에 따라 plotting을 해본 후, 값이 안정화되는 지점을 찾는 방법.

ridge trace와 VIF를 동시에 조사해서 c값을 선택한다. c값의 선택은 전적으로 실험계획자의 몫이다.

VIF는 10이상이면 다중공선성이 있다고 판단!

rt
## Source: local data frame [13 x 4]
## 
##        c    b1R     b2R     b3R
##    (dbl)  (dbl)   (dbl)   (dbl)
## 1  0.000 4.2640 -2.9290 -1.5610
## 2  0.002 1.4410 -0.4113 -0.4813
## 3  0.004 1.0060 -0.2480 -0.3149
## 4  0.006 0.8300  0.1314 -0.2472
## 5  0.008 0.7343  0.2158 -0.2103
## 6  0.010 0.6742  0.2684 -0.1870
## 7  0.020 0.5463  0.3774 -0.1369
## 8  0.030 0.5004  0.4134 -0.1181
## 9  0.040 0.4760  0.4302 -0.1076
## 10 0.050 0.4605  0.4392 -0.1005
## 11 0.100 0.4234  0.4490 -0.0812
## 12 0.500 0.3377  0.3791 -0.0295
## 13 1.000 0.2798  0.3101 -0.0590
vifs
## Source: local data frame [13 x 4]
## 
##        c   vif1   vif2   vif3
##    (dbl)  (dbl)  (dbl)  (dbl)
## 1  0.000 708.84 564.34 104.61
## 2  0.002  50.56  40.45   8.28
## 3  0.004  16.98  13.73   3.36
## 4  0.006   8.50   6.98   2.19
## 5  0.008   5.15   4.30   1.62
## 6  0.010   3.49   2.98   1.38
## 7  0.020   1.10   1.08   1.01
## 8  0.030   0.63   0.70   0.92
## 9  0.040   0.45   0.56   0.88
## 10 0.050   0.37   0.49   0.85
## 11 0.100   0.25   0.37   0.76
## 12 0.500   0.15   0.21   0.40
## 13 1.000   0.11   0.14   0.23
with(rt, plot(c, b1R, xlim=c(0, 0.1), ylim=c(-1, 2), type='l', col='red', ylab='')) 
par(new=T)
with(rt, plot(c, b2R, xlim=c(0, 0.1), ylim=c(-1, 2), type='l', col='blue', ylab=''))
par(new=T)
with(rt, plot(c, b3R, xlim=c(0, 0.1), ylim=c(-1, 2), type='l', col='gold', ylab=''))    

vifs[7, ]
## Source: local data frame [1 x 4]
## 
##       c  vif1  vif2  vif3
##   (dbl) (dbl) (dbl) (dbl)
## 1  0.02   1.1  1.08  1.01

Correlation Transformation

회귀분석의 결과를 transformation하는 데에는 크게 두 가지 이유가 있다.

  1. roundoff-error가 염려될 때,
  2. 두 회귀분석 결과를 비교해야할 때,

그 중에서 여기서는 첫번째 이유에 해당하는데,

roundoff-error가 특히 큰 경우는 아래 두가지 경우다.

  1. \(X^{t}X\)의 determinant가 0에 가깝거나,
  2. \(X^{t}X\)의 요소들이 크기를 비교했을 때 매우 큰 정도로 차이가 날 때,

첫 번째 경우는 variable간에 매우 높은 상관관계를 갖는 경우이다. 즉 다중공선성을 갖는 경우라고 보면 된다.

\[ \frac{Y-\hat{Y}}{s_{Y}}\] \[ \frac{X_{ik} - \bar{X_k}}{s_k} ( k = 1, ..., p - 1 ) \]

\(s_Y\)\(s_k\)는 각각 다음과 같이 정의된다. \[ s_y = \sqrt{\frac{\sum_{i}(Y_i - \bar{Y})^2}{n-1}} \] \[ s_k = \sqrt{\frac{\sum_{i}(X_{ik} - \bar{X_k})^2}{n-1}} \]

Standardized Regression Model

\[Y_{i}^{*} = \sum_{k=1}^{p-1}(\beta_{k}^{*} X_{i, k}^{*}) + \epsilon_{i}^{*}\]

(Note) Least Square나 MLE의 계산을 하면 intercept term이 0이 된다.

\[\beta_k = (\frac{s_Y}{s_k})\beta_{k}^{*}\]

\[ X^{T}X = r_{XX} \]

glm_bf <- glm(Body_Fat ~ Triceps_Skinfold_Thickness + Thigh_Circumference + Midarm_Circumference ,data=bf)
summary(glm_bf)
## 
## Call:
## glm(formula = Body_Fat ~ Triceps_Skinfold_Thickness + Thigh_Circumference + 
##     Midarm_Circumference, data = bf)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -3.8030  -2.0115   0.4389   1.2766   3.8433  
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)
## (Intercept)                 16.5509    49.9606   0.331    0.745
## Triceps_Skinfold_Thickness   1.2935     1.4991   0.863    0.401
## Thigh_Circumference         -0.2552     1.3010  -0.196    0.847
## Midarm_Circumference        -0.5813     0.7850  -0.740    0.470
## 
## (Dispersion parameter for gaussian family taken to be 6.604998)
## 
##     Null deviance: 495.39  on 19  degrees of freedom
## Residual deviance: 105.68  on 16  degrees of freedom
## AIC: 100.05
## 
## Number of Fisher Scoring iterations: 2

lm.beta는 QuantPsyc에 내장되어있는 함수로 standardized regression coefficient를 구해주는 함수이다.

std_bf <- lm.beta(glm_bf)
std_bf
## Triceps_Skinfold_Thickness        Thigh_Circumference 
##                  1.2725364                 -0.2584344 
##       Midarm_Circumference 
##                 -0.4151709

Reference :

Applied Linear Statistical Models - Michael H. Kutner
https://en.wikipedia.org/wiki/Tikhonov_regularization
http://statweb.stanford.edu/~tibs/ElemStatLearn/