如何解决R glmnet 函数给出的系数与教科书计算不同
我发现了一个类似的 question ,并且给出了很好的答案。
然而,我和接受的答案做了同样的事情,但令人惊讶的是我得到了不同的系数结果。
我做错了什么?
p.tmp <- 10
n.tmp <- 100
set.seed(123)
X=scale(matrix(rnorm(n.tmP*p.tmp),ncol = p.tmp))
Y=scale(rnorm(n.tmp))
set.seed(123)
ridge.fit.cv <- cv.glmnet(X,Y,alpha = 0,intercept = FALSE)
ridge.fit.lambda <- ridge.fit.cv$lambda.1se
ridge_mod <- (coef(ridge.fit.cv,s = ridge.fit.lambda))[-1]
###############################
ridge.coef.DEF = solve(t(X) %*% X + n.tmp * ridge.fit.lambda * diag(p.tmp)) %*% t(X) %*% Y
cbind(ridge_mod,ridge.coef.DEF)
系数结果不同如下
> cbind(glmnet=c(ridge_mod),textbook=c(ridge.coef.DEF))
glmnet textbook
[1,] 7.654927e-38 0.0003823413
[2,] -2.396856e-38 -0.0001195132
[3,] -1.621789e-37 -0.0008111162
[4,] 1.977203e-37 0.0009878751
[5,] 3.457742e-38 0.0001741503
[6,] -4.169392e-38 -0.0002081700
[7,] 8.576066e-38 0.0004296001
[8,] 1.473575e-37 0.0007362285
[9,] -8.753641e-38 -0.0004371627
[10,] 1.740288e-37 0.0008698664
我希望结果大致相似。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。