【问题标题】:glmnet error (nulldev == 0) stop("y is constant; gaussian glmnet fails at standardization step")glmnet 错误 (nulldev == 0) stop("y 是常数;高斯 glmnet 在标准化步骤失败")
【发布时间】:2019-07-12 08:14:39
【问题描述】:

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

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

> glmnet(x.design, y, thresh=1e-11)

其中 x.design 是一个 nxp 设计矩阵,其中 n > py 是一个 nx 1 使用核密度估计获得的响应向量。 x.designy 都包含真实的条目。运行代码时收到以下错误消息:

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

我参观过并阅读过

Running glmnet package in R, getting error "missing value where TRUE/FALSE needed", maybe due to missing values?

但是我无法找到解决问题的方法。

有人可以提出解决方案吗?

【问题讨论】:

  • 'dput(x.design)' 和 'dput(y)' 太大而无法复制和粘贴。 x.design658 x 15 矩阵,y658 x 1 向量。
  • 请复制并粘贴str(x.design)str(y) 的输出。
  • @MarcoSandri :谢谢你,我在你的帮助下解决了这个问题。输入“str(y)”后,我发现核密度估计在估计中产生了一些 NaN。
  • 很高兴为您提供帮助...!

标签: r regression linear-regression glmnet lasso-regression


【解决方案1】:

您的响应向量y 似乎是恒定的。 GLMNET 尝试对其进行标准化(可能减去均值,然后除以当前标准差),但不能因为标准差为 0。打印 y 及其方差以确定。

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

【讨论】:

  • 原来问题是你里面有 NaN
【解决方案2】:

尝试通过 --> na.omit(data)从数据中删除空值

【讨论】:

    猜你喜欢
    • 2020-06-05
    • 2021-03-13
    • 2013-06-19
    • 2017-05-03
    • 2012-05-04
    • 2021-11-21
    • 2017-09-23
    • 2021-12-13
    • 2017-04-28
    相关资源
    最近更新 更多