在多重共线性的情况下,我可以理解岭回归优于普通回归。
set.seed(123)
x1 <- rnorm(100)
set.seed(223)
x2 <- rnorm(100,mean=x1,sd=.01)
set.seed(344)
y <- rnorm(100,mean=3+x1+x2)
myd <- data.frame(x1, x2,y)
cor(myd)
x1 x2 y
x1 1.0000000 0.9999383 0.8701704
x2 0.9999383 1.0000000 0.8702772
y 0.8701704 0.8702772 1.0000000
普通回归:
lm(y~x1+x2)$coef
(Intercept) x1 x2
3.063971 -1.027534 3.097806
使用MASS
包的岭回归
require(MASS)
lm.ridge(y~x1+x2,lambda=1)
x1 x2
3.066382 1.019101 1.043206
lambda (shrinkage) = 0 等于普通回归。
lm.ridge(y~x1+x2,lambda=0)
x1 x2
3.063971 -1.027534 3.097806
问题:
(1) 我们如何证明岭回归比普通回归表现更好?任何估计器喜欢错误?如何计算?
(2) 是否有其他情况 ridge 比 OLR 更好?