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)

どこで.「データセット内の他のすべての変数」を指定し、変数を含めたくない-Regionと言います。(おっと、これは実際には機能しません-私はそうすべきだと思いますが)Region

基本的な問題は、元のモデルで指定された予測変数の名前predictを検索しようとしていることです。検索newdataする必要があるのはpredvarではなくorigdata$predvarです。

私は使うだろう:

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