R中cv.lars函数出错

3

我有一个关于 cv.lars 的问题。下面是我使用的数据描述:

is.numeric(Y$Y1)
[1] TRUE

length(Y$Y1)
[1] 589


dim(Training_XX[7:ncol(Training_XX)])
[1]  589 5677

我已经使用 lars 包运行了 lasso。我的代码如下:

LASSO_1<-lars(as.matrix(X[7:ncol(X)]), 
              Y$Y1,type=c("lasso"), 
              normalize=TRUE, use.Gram=FALSE).

上述过程似乎可以正常运行。然而,当我尝试为lambda值进行交叉验证时,出现以下错误:
Error in if (zmin < gamhat) { : missing value where TRUE/FALSE needed

我的交叉验证代码如下:

CV<-cv.lars(as.matrix(X[7:ncol(X)]),Y$Y1,use.Gram=FALSE,max.steps=500)
lambda_Y1=CV$index[which.min(CV$cv)]

有人知道发生了什么事吗?我真的不知道那个错误是什么意思以及我的数据(和/或代码)出了什么问题。


1
不是针对你的问题,但建议尝试使用glmnet。它包含套索回归(作为弹性网络的一种特殊情况),速度更快。 - Steve Lianoglou
你说得太对了!我没有想到... - Danai C.
我刚刚设置了a=1,就得到了套索回归结果,这样做对吗? 你知道glmnet的套索回归和lars的套索回归是给出相同或非常相似的结果(它们应该是)吗? 还有计算时间……lars要花费很长时间!GLMNET非常快。 非常感谢! - Danai C.
1
阅读?glmnet中的文档,它非常明确地说明了需要获取套索所需的alpha值。此外,关于两种算法之间的相似性,这也可以通过几个小测试示例轻松验证。并不是我不想回答你的问题,但当你自己能够轻松回答时,你应该优先选择自己解决,而不是信任像我这样的随机互联网人士。享受新发现的速度吧! :-) - Steve Lianoglou
2个回答

1
我遇到了同样的错误,问题(至少在我的情况下)是我的数据矩阵中有两列相等。似乎lars处理这种情况不太好。只需过滤具有非常高相关性的列即可。

0

当我忘记对预测变量进行缩放时,我也遇到了同样的错误。


1
您的答案可以通过添加更多支持性信息来改进。请点击 [编辑] 添加更多细节,例如引用或文档,以便其他人可以确认您的答案是否正确。您可以在帮助中心找到有关如何编写好的答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接