【发布时间】:2015-05-30 16:59:04
【问题描述】:
我正在尝试学习岭回归,并且我正在使用 R。据我了解,以下代码中的 beta.r1 和 beta.r2 应该相同
library(MASS)
n=50
v1=runif(n)
v2=v1+2
V=cbind(1,v1,v2)
w=3+v1+v2
I=diag(3)
lambda=2 #arbitrarily chosen
beta.r1=solve(t(V)%*%V+lambda*I)%*%t(V)%*%w
#Using library(MASS)
fit=lm.ridge(w~v1+v2,lambda=2, Inter=FALSE)
beta.r2=coef(fit)
#Shouldn't beta.r1 and beta.r2 be the same?
【问题讨论】:
-
选择 n 为 50,抱歉忘记提及了
-
这很有趣。可以通过在命令提示符下输入
lm.ridge来检查实际的lm.ridge代码。它不是很长。然后,您可以复制它并对其进行修改,以便打印出中间结果,您可以检查差异。我会更多地研究它,因为我也对这个问题感兴趣,但现在我要说的是,它所做的与你的公式完全不同,除其他外,它还涉及输入数据的 svd。
标签: r regression manual