Как разработать модель логистической регрессии с использованием пакета SGL?

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

Моя проблема - это проблема логистической регрессии, которая является одной из возможных моделей для построения с использованием этого пакета. Однако, когда я пытаюсь использовать его, я получаю сообщение об ошибке. Мой фрейм данных называется 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

Таким образом, это сообщение об ошибке, кажется, указывает, что у не должно быть фактором. Я не знаю, что идет не так, особенно потому, что если я запускаю функцию 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)
Другие вопросы по тегам