2013-03-04 77 views
0

我在嘗試預測測試數據框的值時收到此警告。 這裏是我的代碼來構建樹和預測:預測警告

library(pgmm) 
data(olive) 
olive = olive[,-1] 
tree2 <- tree(olive$Area ~ olive$Palmitic + olive$Palmitoleic+olive$Stearic+olive$Oleic+olive$Linoleic+olive$Linolenic+olive$Arachidic+olive$Eicosenoic,data=olive) 
newdata = as.data.frame(t(colMeans(olive))) 
pred1 <- predict(tree2,newdata) 

我讀了類似的帖子here所以我換成這行

newdata = as.data.frame(t(colMeans(olive))) 

通過

aa<-t(colMeans(olive)) 
aa[1,1] 
newdata <- data.frame(Palmitic=aa[1,1],Palmitoleic=aa[1,2],Stearic=aa[1,3],Oleic=aa[1,4],Linoleic=aa[1,5],Linolenic=aa[1,6],Arachidic=aa[1,7],Eicosenoic=aa[1,8]) 

代碼的名稱列我的數據集,但我仍然得到相同的警告和預測是錯誤的: -/

+0

嘗試消除了'$'從你的模型:'tree2 < - 樹(區〜棕櫚+棕櫚油+硬脂酸+油酸+亞油酸+花生+碳烯酸,數據=橄欖) ' – 2013-03-04 14:32:27

+0

你能否澄清你的預期結果? – 2013-03-04 14:58:57

+0

工作本:)謝謝。我想預測一個輸入向量的區域,其中有其他列的平均值Jack :) – 2013-03-04 15:17:05

回答

1

(從註釋升級。)

嘗試消除$從你的模型:

tree2 <- tree(Area ~ Palmitic + Palmitoleic+Stearic+Oleic+ 
    Linoleic+Linolenic+Arachidic+Eicosenoic,data=olive) 

原則,可以進一步簡化這

tree(Area~.-Region,data=olive) 

其中.規定「所有其他變量在數據集中「,並且-Region說你不要想包含Region變量。 (哎呀,這實際上並不工作 - 雖然我認爲它應該)

基本問題是predict正在嘗試在newdata之內查看在原始模型中指定的預測變量的名稱:它需要是尋找predvar,而不是origdata$predvar

我會用:

predict(tree3,newdata=as.data.frame(rbind(colMeans(olive[-(1:2)]))))