如何使用 SGL 包开发逻辑回归模型?
How to develop a logistic regression model using SGL package?
我目前正在处理一个包含大量变量的数据集。因此,我决定使用在 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 模型,我将不胜感激。
我在 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)
我目前正在处理一个包含大量变量的数据集。因此,我决定使用在 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 模型,我将不胜感激。
我在 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)