Я пытаюсь узнать о коньке регрессии, и я использую R. Из того, что я понимаю следующее должно быть таким же beta.r1
и beta.r2
в коде ниже один и тот жевычисление оценки Хребет вручную в R, просто
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?
Выбрал п быть 50, извините забыл упомянуть, что –
Это интересная один. Фактический код 'lm.ridge' можно проверить, введя' lm.ridge' в командной строке. Это не очень долго. Затем вы можете скопировать его и изменить его так, чтобы он печатал промежуточные результаты, и вы могли бы изучить различия. Я буду смотреть на это больше, потому что меня тоже интересует проблема, но сейчас я скажу, что то, что она делает, совсем не похоже на вашу формулу, и, кроме всего прочего, связано с svd входных данных. –