我在尝试预测测试数据框的值时收到此警告。 这是构建树和预测的代码:
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 :(得分: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)]))))