如何强制cv.glmnet不丢弃一个特定的变量?

lar*_*ven 18 regression r linear-regression glmnet

我正在运行67个观察和32个变量的回归.我正在使用glmnet包中的cv.glmnet函数进行变量选择.我想强制一个变量进入模型.(它在正常过程中被删除.)如何在cv.glmnet中指定此条件?

谢谢!

我的代码如下所示:

glmntfit <- cv.glmnet(mydata[,-1], mydata[,1])
coef(glmntfit, s=glmntfit$lambda.1se)
Run Code Online (Sandbox Code Playgroud)

我想要的变量是mydata [,2].

jba*_*ums 17

这可以通过提供penalty.factor矢量来实现,如中所述?glmnet.惩罚因子0表示"变量始终包含在模型中",而1默认值.

glmntfit <- cv.glmnet(mydata[,-1], mydata[, 1], 
                      penalty.factor=c(0, rep(1, ncol(mydata) - 2)))
Run Code Online (Sandbox Code Playgroud)

  • `penalty.factor =(names(mydata)[1:...] =='VAR_TO_PENALIZE')`将是一个更优雅的方法来挑选该变量. (3认同)