使Lasso具有SCAD惩罚而无拦截

时间:2019-06-20 15:15:26

标签: r cross-validation non-linear-regression lasso

我正在将cv.ncvregLasso配合使用SCAD。由于我需要使用交叉验证来选择lambda,因此我选择使用cv.ncvreg函数。我在下面给出了r代码。

library(ncvreg)
n = 100
p = 10
beta0 = c(2, 0, 3, 0, 0, 1, 0, 0, 0, 0)
X = matrix(rnorm(n * p, 0,1), ncol = p)
y=vector(mode="numeric",length=n) 
X[,3]=rnorm(n,2,1)
X[,4]=rnorm(n,4,1)
X[,5]=rnorm(n,5,1)
ei_N=rnorm(n,0,1)   # the model errors 
y= X%*%beta0 + ei_N
fit = cv.ncvreg(X, y, penalty = "SCAD", standardize=TRUE)
coef = coef(fit, s = "lambda.min")
coef

我获得以下输出

(Intercept)          V1          V2          V3          V4          V5          V6          V7 
 0.06907783  1.98544923  0.00000000  3.01165615  0.00000000  0.00000000  1.00447815  0.00000000 
         V8          V9         V10 
 0.00000000  0.00000000  0.00000000

如果看到输出,则拟合的模型具有intercept。在交叉验证以选择lasso的同时如何在没有SCAD的情况下使intercept受到lambda惩罚?谢谢。

0 个答案:

没有答案