Я использую cv.ncvreg
fit Lasso
с 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
? Спасибо.