我试图从头开始计算岭回归的beta值。但是当我使用glmnet
函数比较结果时,它们是不同的。这是我的代码:
library(MASS)
Boston=na.omit(Boston)
x=model.matrix(age~.,Boston)[,-1]
y=as.matrix(Boston$age)
lmodel=lm(y~x, data=Boston)
#ridge with glmnet
library(glmnet)
ridge=glmnet(x,y, alpha=0, lambda = 0.1)
beta_ridge=coef(ridge)
#ridge scratch
x=scale(x)
y=scale(y)
beta_r=solve(t(x)%*%x + 0.1*diag(dim(x)[2]))%*%t(x)%*%y
我标准化了x和y,但与glmnet函数的beta版相比,我仍然得到不同的beta。