Я пытаюсь вычислить регрессию гребня и регрессию OLS вручную, обе модели имеют решение в аналитической форме c. Я всегда думаю, что это хорошо, чтобы вычислить все вручную, а затем начать использовать функцию.
Хотя я могу рассчитать регрессию OLS вручную (coeff такие же, как с использованием функции lm
), у меня проблемы с ridge регрессия.
Я хотел бы спросить, где я делаю ошибку
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