运行 ridge 时 lambda 错误

Error in lambda when running ridge

我是运行下面的代码但是一直收到错误信息。代码来自ISLR网站

library(ISLR)
Hitters=na.omit(Hitters)
x=model.matrix(Salary~.,Hitters)[,-1]
y=Hitters$Salary
library(glmnet)
ridge.mod=glmnet(x,y,alpha=0,lambda=grid)

错误信息:

Error in lambda < 0 : comparison (3) is possible only for atomic and list types

如果有任何帮助,我将不胜感激。谢谢!

您的问题在这里:

ridge.mod=glmnet(x,y,alpha=0,lambda=grid)

grid 是 R 函数的名称(试试 '?grid'),但 glmnet 需要 lambda 值向量。

如果你 运行 glmnet 没有提供 lambda 序列,glmnet 库使用它自己的启发式来选择 lambdas:

ridge.mod=glmnet(x,y,alpha=0)

您也可以提供自己的序列:

ridge.mod=glmnet(x,y,alpha=0, lambda=seq(10, 1000, 1))

但 glmnet 帮助建议不要这样做。

lambda A user supplied lambda sequence. Typical usage is to have the program compute its own lambda sequence based on nlambda and lambda.min.ratio. Supplying a value of lambda overrides this. WARNING: use with care. Avoid supplying a single value for lambda (for predictions after CV use predict() instead). Supply instead a decreasing sequence of lambda values. glmnet relies on its warms starts for speed, and its often faster to fit a whole path than compute a single fit.

(请注意,上面的 'seq(10, 1000, 1)' 只是一个显示正确语法的示例。)