我目前正在使用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
的结果如下所示
有谁知道为什么plot(lambda)
无法找到合适的glmnet
?可能是因为我的先验矢量包含太远的估计吗?任何帮助将不胜感激!