функция R в predict
может принимать параметр newdata
и его документ гласит:Кормление NewData для R предсказать функция
NewData необязательного кадра данных, в которой искать переменные с помощью которых можно предсказать. Если они опущены, используются установленные значения.
Но я обнаружил, что это не совсем верно в зависимости от того, как модель подходит. Например, следующий код работает, как ожидалось:
x <- rnorm(200, sd=10)
y <- x + rnorm(200, sd=1)
data <- data.frame(x, y)
train = sample(1:length(x), size=length(x)/2, replace=F)
dataTrain <- data[train,]
dataTest <- data[-train,]
m <- lm(y ~ x, data=dataTrain)
head(predict(m,type="response"))
head(predict(m,newdata=dataTest,type="response"))
Но если модель подходит как таковой:
m2 <- lm(dataTrain$y ~ dataTrain$x)
head(predict(m2,type="response"))
head(predict(m2,newdata=dataTest,type="response"))
Последние две строки будет точно такой же результат. Функция predict
работает таким образом, чтобы игнорировать параметр newdata
, то есть он не может реально вычислить предсказание для новых данных вообще.
Виновником, конечно же, является lm(y ~ x, data=dataTrain)
против lm(dataTrain$y ~ dataTrain$x)
. Но я не нашел документа, в котором говорилось о различии между этими двумя. Это известная проблема?
Я использую R 2.15.2.
Привет, у меня такая же проблема, есть ли у вас какая-нибудь возможность выяснить, как это решить? Заранее спасибо – jbest