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 은 다중공선성(Multicollinearity)문제를 해결하기 위한 해법 중 하나.
least squares method를 수정해서 사용하는 방법
Regression의 estimator가 unbiased estimator에 비해서 상당히 높은 정확도를 가지면서,
동시에 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} \]
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
회귀분석의 결과를 transformation하는 데에는 크게 두 가지 이유가 있다.
그 중에서 여기서는 첫번째 이유에 해당하는데,
roundoff-error가 특히 큰 경우는 아래 두가지 경우다.
첫 번째 경우는 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}} \]
\[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/