如何使用SGL包开发逻辑回归模型?

时间:2016-06-09 08:55:47

标签: r sparse-matrix r-package lasso

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

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

Comparator<Person>

在之前的情况中,Y是零和1的二进制数字向量,所以我认为问题是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不应该是一个因素。我不知道出了什么问题,特别是因为如果我运行cvSGL函数,将y视为数字二进制向量,但我建立了一个线性模型而不是一个logit模型(虽然线性模型对我来说不是很好),它实际上工作,并没有给出任何错误。

我指的是申请:

> 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

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

1 个答案:

答案 0 :(得分: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")

如您所见,参数&#34; index&#34; (你把它叫做小组)并没有在这种情况下使用。我不知道你是如何定义索引的。我想问题是你需要定义元素列表的名称

data <- list(x = x, y=y)
相关问题