#r #predict
Вопрос:
При прогнозировании в R, используя predict()
функцию, аргумент для данных, по которым мы хотим предсказать, равен newdata =
. Мой вопрос в том, когда ставить data =
вместо newdata =
того, что происходит ? Потому что это не дает ошибки, и полученный rmse не совпадает при использовании newdata =
Вот пример:
library(MASS) set.seed(18) Boston_idx = sample(1:nrow(Boston), nrow(Boston) / 2) Boston_train = Boston[Boston_idx,] Boston_test = Boston[-Boston_idx,] library(rpart) Boston_treelt;-rpart(medv~., data=Boston_train) tree.pred lt;- predict(Boston_tree, data=Boston_test) tree.pred2 lt;- predict(Boston_tree, newdata=Boston_test) rmse = function(m, o){ sqrt(mean((m - o)^2)) } rmse(tree.pred,Boston_test$medv) rmse(tree.pred2,Boston_test$medv)
Ответ №1:
data
являются ли данные, используемые для подгонки модели, newdata
данными, используемыми для прогнозирования. На странице справки ?predict.rpart
говорится:
newdata
: фрейм данных, содержащий значения, при которых требуются прогнозы. Предикторы, указанные в правой частиformula(object)
, должны присутствовать по имени вnewdata
. Если отсутствует, возвращаются соответствующие значения.
Комментарии:
1. Итак, возвращены соответствующие значения. И вот случайно в моем примере в обучающих и тестовых наборах есть одинаковое количество выборок. Я бы предпочел педагогически, если
predit()
возвращает ошибку, еслиnewdata
отсутствует.2. Другой студент только что написал
predict(Boston_tree, new_data = Boston_test)
. Он хочет знать, почему его rmse отличается от коллег.