Стартиране на 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