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)

我在这里读到了类似的帖子,所以我替换了这一行

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

代码来命名我的数据集的列,但我仍然收到相同的警告并且预测是错误的:-/

4

1 回答 1

1

(从评论升级。)

$尝试从您的模型中消除:

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

原则上,您可以进一步简化为

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

where.指定“数据集中的所有其他变量”,并-Region表示您不想包含该Region变量。(糟糕,这实际上不起作用——尽管我认为它应该)

基本问题是predict试图寻找newdata原始模型中指定的预测变量的名称:它需要寻找predvar,而不是origdata$predvar

我会使用:

predict(tree3,newdata=as.data.frame(rbind(colMeans(olive[-(1:2)]))))
于 2013-03-04T15:24:04.530 回答