2016-06-09 50 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。我遵循的目標是研究哪些基因對患者恢復的影響更大 –