предсказать предупреждение

я получаю это предупреждение, пытаясь предсказать значения для моего фрейма тестовых данных. вот мой код для построения дерева и прогнозирования:

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

by

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

код для имен столбцов моего набора данных, но я все еще получаю то же предупреждение, и прогноз неверен: -/


person Soheila DehghanZadeh    schedule 04.03.2013    source источник
comment
попробуйте удалить $ из вашей модели: tree2 <- tree(Area ~ Palmitic + Palmitoleic+Stearic+Oleic+Linoleic+Arachidic+Eicosenoic,data=olive)   -  person Ben Bolker    schedule 04.03.2013
comment
Не могли бы вы уточнить ваш предполагаемый результат?   -  person Jack Ryan    schedule 04.03.2013
comment
это сработало, Бен :) спасибо. Я хочу предсказать площадь для входного вектора, который имеет среднее значение других столбцов Джек :)   -  person Soheila DehghanZadeh    schedule 04.03.2013
comment
какой пакет tree() в ... ?   -  person Ben Bolker    schedule 04.03.2013
comment
@BenBolker Вероятно, старый (и теперь малоиспользуемый) предшественник rpart, я думаю. Пакет называется tree.   -  person joran    schedule 04.03.2013


Ответы (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)]))))
person Ben Bolker    schedule 04.03.2013