R glmnet错误(nulldev==0)停止(“y为常数;高斯glmnet在标准化步骤失败”)

R glmnet错误(nulldev==0)停止(“y为常数;高斯glmnet在标准化步骤失败”),r,regression,linear-regression,glmnet,lasso-regression,R,Regression,Linear Regression,Glmnet,Lasso Regression,我正在R中使用glmnet运行以下(被截断的)代码 # do a lot of things to create the design matrix called x.design > glmnet(x.design, y, thresh=1e-11) 其中x.design是n x p设计矩阵,其中n>p,y是使用核密度估计获得的响应的n x 1向量。x.design和y都包含真实条目。我在运行代码时收到以下错误消息: Error in if (nulldev == 0) stop("

我正在R中使用glmnet运行以下(被截断的)代码

# do a lot of things to create the design matrix called x.design

> glmnet(x.design, y, thresh=1e-11)
其中x.design是n x p设计矩阵,其中n>p,y是使用核密度估计获得的响应的n x 1向量。x.design和y都包含真实条目。我在运行代码时收到以下错误消息:

Error in if (nulldev == 0) stop("y is constant; gaussian glmnet fails at 
standardization step") : missing value where TRUE/FALSE needed 
我参观并阅读过

然而,我无法找到解决我的问题的方法


有人能提出一个解决方案吗?

看来你的响应向量
y
是常数。GLMNET尝试将其标准化(可能会减去平均值,然后除以当前stddev),但无法实现,因为stddev为0。请务必打印y及其方差


您还应该检查内核估计过程。

尝试通过-->
na从数据中删除空值。忽略(数据)
'dput(x.design)'和'dput(y)'太大,无法复制和粘贴。x、 design是一个658 x 15矩阵,y是一个658 x 1向量。请复制并粘贴
str(x.design)
str(y)
@MarcoSandri:谢谢你,我在你的帮助下解决了这个问题。在输入'str(y)'后,我发现内核密度估计在估计中产生了一些NaN。很高兴能帮助你。。。!原来问题是y里面有NaN的