2016-06-09 9 views
1

В настоящее время я работаю с набором данных, который содержит очень большое количество переменных. Поэтому я решил использовать метод выбора переменной LASSO с разреженной группой, реализованный в пакете SGL.Как разработать модель логистического регрессии с использованием пакета SGL?

Моя проблема - проблема логистической регрессии, которая является одной из возможных моделей для создания с использованием этого пакета. Однако, когда я пытаюсь использовать его, я получаю сообщение об ошибке. Мои данные frameis называется N, и мой двоичный вектор называется у:

> 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 как числовой двоичный вектор, но я строю линейную модель, а не модель логита (хотя линейная модель не мешает мне), она фактически работает и не дает никакой ошибки.

Я ссылаюсь, чтобы применить это:

> 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 и переписать список по мере того, как вы его просили, но он по-прежнему отображает одно и то же сообщение об ошибке: Ошибка: NA/NaN/Inf в вызове внешней функции (arg 1) –

+0

вы можете рассказать мне больше о данных N, Y? –

+0

Конечно, я работаю с набором данных пациентов с раком молочной железы. У меня 100 пациентов (ряды), а столбцы - 20000 генов. Это означает, что N [i, j] = мера значения гена j у пациента i. Это все числовые значения, всегда большие или равные 0. Между тем, Y является вектором 0 и 1. Он имеет 0, если пациент не оправился от рака, а 1, если он действительно выздоровел от рака. Целью, которую я следую, является изучение того, какие гены больше влияют на выздоровление пациентов. –