r случайная ошибка леса - типы предикторов в новых данных не совпадают
Я пытаюсь использовать квантильную функцию леса регрессии в R (quantregForest), который построен на пакете Random Forest. Я получаю ошибку несоответствия типов, которую я не могу понять, почему.
Я тренирую модель, используя
qrf <- quantregForest(x = xtrain, y = ytrain)
который работает без проблем, но когда я пытаюсь проверить с новыми данными, как
quant.newdata <- predict(qrf, newdata= xtest)
это дает следующую ошибку:
Error in predict.quantregForest(qrf, newdata = xtest) :
Type of predictors in new data do not match types of the training data.
Мои данные обучения и тестирования поступают из отдельных файлов (следовательно, из отдельных фреймов данных), но имеют одинаковый формат. Я проверил классы предикторов с
sapply(xtrain, class)
sapply(xtest, class)
Вот вывод:
> sapply(xtrain, class)
pred1 pred2 pred3 pred4 pred5 pred6 pred7 pred8
"factor" "integer" "integer" "integer" "factor" "factor" "integer" "factor"
pred9 pred10 pred11 pred12
"factor" "factor" "factor" "factor"
> sapply(xtest, class)
pred1 pred2 pred3 pred4 pred5 pred6 pred7 pred8
"factor" "integer" "integer" "integer" "factor" "factor" "integer" "factor"
pred9 pred10 pred11 pred12
"factor" "factor" "factor" "factor"
Они точно такие же. Я также проверил значения «NA». Ни xtrain, ни xtest не содержат значения NA. Я что-то здесь упускаю?
Обновление I: запуск прогноза на тренировочных данных по-прежнему выдает ту же ошибку
> quant.newdata <- predict(qrf, newdata = xtrain)
Error in predict.quantregForest(qrf, newdata = xtrain) :
names of predictor variables do not match
Обновление II: я объединил свои тренировочные и тестовые наборы так, чтобы строки от 1 до 101 были данными об обучении, а остальное - тестированием. Я изменил пример, представленный в (quantregForest) как:
data <- read.table("toy.txt", header = T)
n <- nrow(data)
indextrain <- 1:101
xtrain <- data[indextrain, 3:14]
xtest <- data[-indextrain, 3:14]
ytrain <- data[indextrain, 15]
ytest <- data[-indextrain, 15]
qrf <- quantregForest(x=xtrain, y=ytrain)
quant.newdata <- predict(qrf, newdata= xtest)
И это работает! Буду признателен, если кто-нибудь сможет объяснить, почему это работает так, а не иначе?