Rのpredict
関数はnewdata
パラメーターを受け取ることができ、そのドキュメントは次のようになります。
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"))
最後の2行は、まったく同じ結果になります。このpredict
関数は、パラメーターを無視する方法で機能しnewdata
ます。つまり、新しいデータの予測を実際に計算することはできません。
もちろん、犯人はlm(y ~ x, data=dataTrain)
対lm(dataTrain$y ~ dataTrain$x)
です。しかし、これら2つの違いについて言及しているドキュメントは見つかりませんでした。既知の問題ですか?
R2.15.2を使用しています。