У меня есть набор данных, который я разделил на данные набора тестов/поездов. Сразу же после этого раскола я произвел логистическую модель с:Ошибка в model.frame.default для Predict() - «Фактор имеет новые уровни» - для переменной Char
logModel1 = glm(Y ~ . -var1 -var2 -var3, data=train, family=binomial)
Если я использую эту модель, чтобы делать прогнозы на тот же набор поезда, я не получаю ошибки (хотя, конечно, не-супер-полезный тест моей модели). Таким образом, я использовал код ниже, чтобы предсказать на моем тестовом наборе:
predictLog1 <- predict(logModel1, type="response", newdata=test)
Но я получаю следующее сообщение об ошибке:
Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) : factor myCharVar has new levels This is an observation of myCharVar, This is another...
Вот что у меня особенно смущен:
- myCharVar является символьная переменная как в моем поезде, так и в тестовых наборах. Я подтвердил это с помощью
str(test$myCharVar)
иstr(train$myCharVar)
- В моей модели даже не используется myCharVar как часть прогноза.
я нашел объяснение пули 2 при этом SO ссылки: "Factor has new levels" error for variable I'm not using
и предложении там, чтобы удалить переменный характер вообще из моих поездов и тестовых наборов предоставил мне обходной путь так, по крайней мере я м не задерживается. Но это кажется довольно неэлегантным, а не просто удалением их из модели с помощью «-myCharVar». Если кто-то понимает, почему переменная-символ в моем тестовом наборе вызовет ошибку «фактор имеет новые уровни», я бы определенно был заинтересован.
Hi Jellen, я попытался передать, что нашел ответ на вопрос «почему myCharVar по-прежнему считается» с «Я нашел объяснение для пули 2 на этой ссылке SO». Извините, если это не ясно. Большое спасибо за объяснение переменных, которые преобразуются внутренне в факторы, это очень полезно знать и полностью отвечает на мой вопрос. –