Проблема в том, что у вас разные уровни факторов для одного / многих предикторов:
Например, я использую данные mtcars.Он также должен присутствовать в вашей сессии. (Прочтите мои комментарии между кодами)
mtcars_train <- mtcars[mtcars$cyl %in% c(4,6),] #Consider this as train data
mtcars_train$cyl <- as.factor(mtcars_train$cyl) #Changing cyl to factor, here cyl values are 4 and 6 only, notice there is no 8
mtcars_orig <- mtcars #Taking the entire data which contain cyl values as 4,6 and 8
mtcars_orig$cyl <- as.factor(mtcars_orig$cyl) #Converting to factors, here again we can see that levels(mtcars_orign$cyl) is 4,6 and 8
lm1 <- lm(am ~ mpg + cyl + hp , data=mtcars_train) # Building the model
predict(lm1, newdata=mtcars_orig) #Now if you try to predict you will receive the error of having missing classes
lm1$xlevels[["cyl"]] <- union(lm1$xlevels[["cyl"]], levels(mtcars_orig$cyl)) #You can fix this here by running this code, it will append the levels to your original lm1 model here
После выполнения последнего шага, если вы выполните прогноз, у вас будет ваш результат.
predict(lm1, newdata=mtcars_orig)
Я предлагаю, возьмите образец поезда, который является очень хорошим представлением всего набора данных, и ваш поезд и тест должны соответствовать, если есть несоответствие уровней факторов, эта ошибка всегда будет.