微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R glmnet 函数给出的系数与教科书计算不同

如何解决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 举报,一经查实,本站将立刻删除。