的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 2015-05-14 10:43:56