Ошибка в cv.lars в R
У меня есть вопрос относительно cv.lars. Ниже приведено описание данных, которые я использую:
is.numeric(Y$Y1)
[1] TRUE
length(Y$Y1)
[1] 589
dim(Training_XX[7:ncol(Training_XX)])
[1] 589 5677
Я уже запустил лассо, используя пакет lars. Мой код выглядит следующим образом:
LASSO_1<-lars(as.matrix(X[7:ncol(X)]),
Y$Y1,type=c("lasso"),
normalize=TRUE, use.Gram=FALSE).
Вышеуказанная процедура, кажется, работает нормально. Однако, когда я пытаюсь провести перекрестную проверку лямбда- значения, я получаю следующую ошибку:
Error in if (zmin < gamhat) { : missing value where TRUE/FALSE needed
Мой код для перекрестной проверки:
CV<-cv.lars(as.matrix(X[7:ncol(X)]),Y$Y1,use.Gram=FALSE,max.steps=500)
lambda_Y1=CV$index[which.min(CV$cv)]
Кто-нибудь знает, что происходит? Я действительно не знаю, что означает эта ошибка и что не так с моими данными (и / или кодом).
2 ответа
Я получил ту же ошибку, и проблема (по крайней мере, в моем случае) состояла в том, что два столбца моей матрицы данных были равны. Кажется, Ларс плохо с этим справляется. Просто фильтруйте столбцы с очень высокой корреляцией.
Я получил ту же ошибку, когда забыл масштабировать переменные-предикторы.