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