【问题标题】:How to develop a logistic regression model using SGL package?如何使用 SGL 包开发逻辑回归模型?
【发布时间】:2016-06-09 08:55:47
【问题描述】:

我目前正在处理一个包含大量变量的数据集。因此,我决定使用在 SGL 包上实现的稀疏组 LASSO 变量选择技术。

我的问题是逻辑回归问题,这是使用此包构建的可能模型之一。但是,当我尝试使用它时,我收到一条错误消息。我的数据框叫N,我的二元向量叫y:

> x <- as.matrix(N)
> y <- as.matrix(Y)
> data <- list(x, y=y)
> sgl_small <- cvSGL(data, groups, type="logit")

Error: NA/NaN/Inf in foreign function call (arg 1)

在之前的情况下,Y是0和1的二进制数值向量,所以我认为问题是Y不是一个因素,所以我又试了一次:

> x <- as.matrix(N)
> y <- as.factor(Y))
> data <- list(x, y=y)
> sgl_small <- cvSGL(data, groups, type="logit")

Error in seq.default(log(max.lam), 
  log(min.lam), (log(min.lam) -   log(max.lam))/(nlam -  : 
'from' cannot be NA, NaN or infinite
 In addition: Warning messages:
 1: In mean.default(y) : argument is not numeric or logical: returning NA
 2: In mean.default(y) : argument is not numeric or logical: returning NA
 3: In Ops.factor(y, m.y) : '-' not meaningful for factors

所以这个错误信息似乎表明 y 不应该是一个因素。我不知道出了什么问题,特别是因为如果我运行 cvSGL 函数,将 y 视为数字二进制向量,但我构建的是线性模型而不是 logit 模型(尽管线性模型对我来说并不重要),它实际工作并且没有给出任何错误。

我指的是应用这个:

> y <- as.matrix(Y)
> data <- list(x, y=y)
> sgl_small <- cvSGL(data, groups, type="linear")

如果有其他人尝试使用此包构建 logit 模型,我将感谢任何帮助。

【问题讨论】:

    标签: r sparse-matrix r-package lasso-regression


    【解决方案1】:

    我在 cvSGL 的帮助页面上找到了这个例子

    set.seed(1)
    n = 50; p = 10;
    X = matrix(rnorm(n * p), ncol = p, nrow = n)
    beta = (-2:2)
    y = sample(c(0,1),50, replace = T)
    data = list(x = X, y = y)
    cvFit = cvSGL(data, type = "logit")
    

    如您所见,在这种情况下没有使用参数“index”(您将其称为组)。我看不到您如何在您的案例中定义索引。我想问题是您需要定义元素列表的名称

    data <- list(x = x, y=y)
    

    【讨论】:

    • indez 参数是一个向量,其中包含用于构建变量组的信息。就我而言,我通过变量而不是个人应用层次聚类,以生成我的变量组。在任何情况下,我都尝试消除 groups 参数,并按照您的建议重写列表,但它仍然显示相同的错误消息:Error: NA/NaN/Inf in foreign function call (arg 1)
    • 你能告诉我更多关于数据 N、Y 的信息吗?
    • 当然,我正在处理乳腺癌患者的数据集。我有 100 个患者(行),列是 20000 个基因。这意味着 N[i,j] = 患者 i 中基因 j 值的度量。这些都是数值,总是大于或等于 0。同时,Y 是 0 和 1 的向量。如果患者没有从癌症中恢复,则为 0,如果他确实从癌症中恢复,则为 1。我遵循的目标是研究哪些基因对患者康复的影响更大
    • 你确定你的 N 和 Y df 上没有 NA、NaN 吗?
    • 我终于找到了问题所在。矩阵的其中一列完全由零组成,当我意识到这一点并删除该列时,一切都开始工作了。现在我有另一个问题。当我从包中运行代码时,特别是我的数据集上的 cvSGL() 函数,R 停止工作。它实际上显示了一个窗口,说它需要停止程序。我不确定为什么会发生这种情况,但由于它发生在这个数据集上,但没有发生在较小的数据集上,它可能与样本量有关。我会尝试在功能强大的计算机上运行它
    猜你喜欢
    • 2019-01-06
    • 2018-05-21
    • 2022-10-04
    • 2020-12-22
    • 1970-01-01
    • 2018-01-26
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多