预测警告

时间:2013-03-04 14:22:33

标签: r warnings predict

我在尝试预测测试数据框的值时收到此警告。 这是构建树和预测的代码:

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])

代码命名我的数据集的列,但我仍然得到相同的警告和预测错误: - /

1 个答案:

答案 0 :(得分: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 {1}}。

我会用:

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