我正在尝试手动计算岭回归和OLS回归,两个模型都具有解析形式的解。我一直认为手动计算所有内容然后开始使用函数是很不错的。
虽然我可以手动计算OLS回归(系数与使用lm
函数相同),但是我仍然遇到岭回归问题。
我想问我在哪里犯错
library(glmnet)
library(tidyverse)
y = mtcars$hp %>% as.matrix()
X = model.matrix(hp ~ factor(gear) + qsec + wt, mtcars) %>% as.matrix()
# OLS model
solve(t(X) %*% X) %*%t(X) %*%y
lm(hp ~ factor(gear) + qsec + wt, mtcars) %>% coef()
# Ridge regression
glmnet(X, y, lambda = 30) %>%
broom::tidy()
solve(t(X) %*% X + 30*diag(5)) %*%t(X) %*%y