predict
funkcja R mogą brać parametr newdata
a jego dokument brzmi:Karmienie NewData R przewidzieć funkcja
NewData Opcjonalny ramki danych, w którym szukać zmiennych, z którymi do przewidzenia. Jeśli zostanie pominięty, zostaną użyte dopasowane wartości.
Ale okazało się, że nie jest to całkowicie prawda w zależności od tego, jak model jest odpowiedni. Na przykład, następujący kod działa zgodnie z oczekiwaniami:
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"))
Ale jeśli model nadaje się jako takie:
m2 <- lm(dataTrain$y ~ dataTrain$x)
head(predict(m2,type="response"))
head(predict(m2,newdata=dataTest,type="response"))
Dwa ostatnie linia będzie produkować dokładnie ten sam rezultat. Funkcja predict
działa w sposób ignorujący parametr newdata
, tj. Nie może w ogóle dokładnie obliczyć prognozy dla nowych danych.
Winowajcą jest oczywiście lm(y ~ x, data=dataTrain)
versus lm(dataTrain$y ~ dataTrain$x)
. Ale nie znalazłem żadnego dokumentu, który wspomniałby o różnicy między tymi dwoma. Czy to znany problem?
Używam wersji 2.15.2.
Witam Mam ten sam problem, czy przypadkiem nie wymyśliłeś sposobu rozwiązania tego problemu? Z góry dziękuję – jbest