Запуск пакета glmnet в R, получение отсутствующего значения ошибки там, где требуется TRUE/FALSE, возможно, из-за отсутствующих значений?

Я пытаюсь использовать glmnet из пакета glmnet для запуска регрессии LASSO.

Я использую следующую команду:

library(glmnet)
glmnet(a,b,family="binomial",alpha=1)

И получаю ошибку:

> Error in if (!all(o)) { : missing value where TRUE/FALSE needed

a — это матрица с числовыми значениями. b — это вектор с фактором в качестве значений.

Однако в b есть несколько отсутствующих значений. Я подозреваю, что это может быть причиной ошибки. Однако я не вижу возможности исключить NAs в документации glmnet.


person evt    schedule 27.01.2015    source источник
comment
Не могли бы вы добавить dput(a) и dput(b), а также traceback() после запуска glmnet, чтобы помочь нам воспроизвести и диагностировать?   -  person mlegge    schedule 27.01.2015
comment
у вас есть NA в классе, который вы пытаетесь предсказать   -  person marbel    schedule 08.04.2015


Ответы (1)


Поскольку glmnet не принимает полный фрейм данных с формулой (и, следовательно, без na.omit), а использует отдельные матрицы ответов и предикторов, вам нужно будет найти, какие значения в b отсутствуют, а затем подмножить вашу матрицу предикторов, чтобы исключить те ряды.

library(glmnet)

set.seed(123)
a <- matrix(rnorm(100*20),100,20)
b <- as.factor(sample(0:1,100,replace = TRUE))

b[10] <- NA

na_index <- is.na(b)
res <- glmnet(a[!na_index, ], b[!na_index], family = "binomial", alpha = 1)
person Community    schedule 27.01.2015