cv.glmnet Ridge回归lambda.min = lambda.1se?

时间:2015-09-28 16:29:36

标签: r lambda regression cross-validation glmnet

我目前正在使用glmnet包在R中运行岭回归,但是,我最近遇到了一个新问题,并希望在解释我的结果时提供一些帮助。我的数据可以在这里找到:https://www.dropbox.com/sh/hpxu3t0vqkrzfgf/AAB6F-yMYMfuI5E__gfDuW6sa?dl=0

我的数据包含26531x428观测矩阵x和26531x1响应矢量y。我正在尝试确定lambda.min的最佳值,以及何时运行代码

> lambda=cv.glmnet(x=x,y=y,weights=weights,alpha=0,nfolds=10,standardize=FALSE)

我得到了

$lambda.min [1] 2.123479 $lambda.1se [1] 619.0054

这是我期望的结果。但是,我想对这个回归添加一些细微的调整。我事先了解了我的每个428系数,而不是将每个系数缩小到0,而不是使用岭回归的默认值,我想将每个系数缩小到除0之外的特定值。在联系Trevor博士之后Hastie,glmnet的创建者之一,他告诉我,这可以通过在y替换y2后运行相同的代码来实现,其中y2 = y - x%*%d和{{1是系数先验的428x1向量。他说然后将d添加到我的新系数中,这将给出我先前通知的系数。重新运行代码后

d

我很遗憾地得到了

> lambda=cv.glmnet(x=x,y=y2,weights=weights,alpha=0,nfolds=10,standardize=FALSE)

$lambda.min [1] 220.3026 $lambda.1se [1] 220.3026的结果如下所示 lambda plot

有谁知道为什么plot(lambda)无法找到合适的glmnet?可能是因为我的先验矢量包含太远的估计吗?任何帮助将不胜感激!

0 个答案:

没有答案