У меня есть набор данных, который я разделил на наборы данных для тестирования / обучения. Сразу после этого разделения я создал логистическую модель с:
logModel1 = glm(Y ~ . -var1 -var2 -var3, data=train, family=binomial)
Если я использую эту модель для прогнозов на одном и том же наборе поездов, я не получаю ошибки (хотя, конечно, это не очень полезный тест моей модели). Поэтому я использовал приведенный ниже код для прогнозирования на моем тестовом наборе:
predictLog1 <- predict(logModel1, type="response", newdata=test)
Но я получаю следующую ошибку:
Ошибка в model.frame.default (Термины, newdata, na.action = na.action, xlev = object $ xlevels): фактор myCharVar имеет новые уровни Это наблюдение myCharVar, это еще один ...
Вот что меня особенно смутило:
- myCharVar - это символьная переменная как в моем наборе поездов, так и в тестовом наборе. Я подтвердил это с помощью
str(test$myCharVar)
иstr(train$myCharVar)
- Моя модель даже не использует myCharVar как часть прогноза.
Я нашел объяснение для пули 2 по этой ссылке SO: Фактор имеет ошибку нового уровня для переменной, которую я не использую
И предложение полностью удалить символьные переменные из моего набора тестов и тестов предоставило мне обходной путь, так что, по крайней мере, я не задерживаюсь. Но это кажется довольно неэлегантным, в отличие от простого удаления их из модели с помощью "-myCharVar". Если кто-нибудь поймет, почему символьная переменная в моем наборе тестов выдает ошибку «фактор имеет новые уровни», меня, безусловно, заинтересует.