2016-06-09 48 views
1

我目前正在处理一个数据集,它有很多变量。因此,我决定使用稀疏组LASSO变量选择技术,在SGL包中实施。如何使用SGL包开发物流配送模型?

我的问题是一个后勤问题,这是使用这个包建立可能的模型之一。但是,当我尝试使用它时,我收到一条错误消息。我的数据frameis称为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是零和一的二进制数字矢量,所以我想,这个问题将是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") 

我要感谢所有帮助,如果任何人试图用这个包来建立一个逻辑模型。

回答

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") 

的帮助页面你可以看到在这个例子中,参数“索引”(你把它称为组)在这种情况下不使用。我不明白你如何定义索引。我想问题是你需要定义你的元素列表的名称

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

indez参数是一个矢量,它包含构建变量组的信息。就我而言,我通过变量而不是个人来应用层次聚类,以便生成我的变量组。在任何情况下,我都尝试过删除groups参数,并在您获取时重写列表,但它仍显示相同的错误消息:Error:NA/NaN/Inf in foreign function call(arg 1) –

+0

can you tell more more关于数据N,Y? –

+0

当然,我正在处理乳腺癌患者的数据集。我有100个病人(行),列中有20000个基因。这意味着N [i,j] =患者i中基因j的值的量度。这些都是数值,总是大于或等于0.同时,Y是0和1的向量。如果患者没有从癌症中恢复,则其为0,如果他实际上从癌症中恢复,则为1。我遵循的目标是研究哪些基因对患者恢复的影响更大 –