【问题标题】:How can I force cv.glmnet not to drop one specific variable?如何强制 cv.glmnet 不删除一个特定变量?
【发布时间】:2014-07-31 16:15:13
【问题描述】:

我正在运行包含 67 个观察值和 32 个变量的回归。我正在使用 glmnet 包中的 cv.glmnet 函数进行变量选择。我想将一个变量强加到模型中。 (在正常过程中会被丢弃。)如何在 cv.glmnet 中指定此条件?

谢谢!

我的代码如下所示:

glmntfit <- cv.glmnet(mydata[,-1], mydata[,1])
coef(glmntfit, s=glmntfit$lambda.1se)

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

【问题讨论】:

    标签: r regression linear-regression glmnet


    【解决方案1】:

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

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

    【讨论】:

    • penalty.factor = (names(mydata)[1:...] == 'VAR_TO_PENALIZE') 将是挑选该变量的更优雅的方式。
    • 是否有可能即使将变量的惩罚因子设置为0后,仍然没有强制进入模型?
    猜你喜欢
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    相关资源
    最近更新 更多