2014-03-13 45 views
1
collection <- data.frame(col1=X1,col2=X2,col3=X3,col4=X4) 
k <- 5 
ind <- sample(seq(1,k), length(X1), replace=TRUE) 

test_ind = which(ind==1) 
train<-collection[-test_ind,] 
fit<-lm(X1~poly(X2,2,raw=T)+X3+X4+X2:X3,data=train) 
model1_resid<-predict(fit,collection[test_ind,2:4]) 

警告消息: 'newdata' 具有105行,但發現變量具有444行警告在LM預測對於r

順便說一句:長度(test_ind)是105和nrow(火車)= 444

我計劃運行交叉驗證,但上面的代碼會生成警告,我已經在此論壇中跟隨其他帖子做了子集化,然後我進入lm函數,爲什麼還有警告?任何人都可以指出錯誤?謝謝

+0

'rpm'似乎不在'集合中。因此它來自全球環境。 – Roland

回答

0

我認爲你需要使用相同的變量名,所以如果你想使用第2,3,4列作爲你的預測,那麼名稱就是X1,X2,X3,因爲它們用於模型(不是col2,col3和col4)。

嘗試預測調用之前colnames(collection)= c(「X0」,「X1」,「X2」,「X3」),它應該可以工作(儘管我不明白你是否真的想使用col2,col3和col4進行預測)。

+0

我糾正了我的代碼中的錯誤,但它仍然不起作用。你會再看一次嗎?謝謝 – Jin

+1

如果您使用您在問題中編寫的代碼,那麼您的姓名仍然是col1,col2,col3和col4,而應該有X1,X2,X3和X4。您可能需要將第一行更改爲 集合< - data.frame(X1 = X1,X2 = X2,X3 = X3,X4 = X4) ,或者您可以稍後更改名稱(但在最後的預測呼叫之前行): colnames(collection)= c(「X1」,「X2」,「X3」,X4) – Fanny