Запустив пакет glmnet в R, получая ошибку "отсутствует значение там, где требуется ИСТИНА / ЛОЖЬ", возможно, из-за отсутствия значений?

Я пытаюсь использовать 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.

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)
Другие вопросы по тегам