R:没有glmnet的岭回归

时间:2018-04-24 00:51:23

标签: r regression glmnet

我基于岭回归公式实现了simpe ridge回归代码。 然后我得到一些beta系数然后使用相同的数据集我用 glmnet 尝试了但是我得到了不同的结果。为简单起见,我只使用了一个lambda来查看结果是否正确。这是简单的R代码:

#Ridge regression 
set.seed(110)
n = 5
p = 2
x=matrix(rnorm(n*p), nrow=n, ncol=p)
y=as.matrix(rnorm(n))
int <- rep(1, length(y))
x <- cbind(int, x)
lambda=0.1
lambda.identity=lambda* diag(ncol(x))
beta_ridge=solve(t(x)%*%x+lambda.identity, t(x)%*%y)
beta_ridge

#using glmnet
library(glmnet)
fit=glmnet(x,y,alpha = 0, lambda = 0.1, standardize = FALSE)
coef(fit)

结果如下:

    #without glmnet                       
              [,1]
    int  1.2318648
        -0.3213297
         0.7596814

     #with glmnet
                    s0
(Intercept)  1.3167044
V1          -0.3809595
V2           0.6795089

我没有标准化这些值,所以我认为我会得到相同的输出。我尝试使用 glmnet 代码,但它非常复杂。

我的代码中有什么问题?我非常感谢任何建议。

0 个答案:

没有答案