2016-09-01 4 views
0

Я пытаюсь понять, как ctree подходит/предсказывает наблюдения с полным отсутствием во всех предикторах. Например,partykit :: ctree randomness в большинстве = TRUE

library(partykit) 
airq <- subset(airquality, !is.na(Ozone)) 
airq <- rbind(airq,data.frame(Ozone=rnorm(50),Solar.R=NA,Wind=NA,Temp=NA,Month=NA,Day=NA)) 
airct <- ctree(Ozone ~ ., data = airq,control = ctree_control(majority = TRUE)) 
table(tail(predict(airct,type="node"),50)) 

Последние 50 строк airq отсутствуют все предсказатель, и от чтения документации, я получаю впечатление, что с majority=TRUE это будет просто следовать за большинством, то есть они все должны идти в том же узел без каких-либо изменений. И все же я получаю для них распределение предсказаний.

Так

  1. мое понимание того, как majority=TRUE работает правильно?
  2. Как ctree устанавливает/прогнозирует строки, которые не имеют наблюдаемых предикторов?

, кстати, я попытался проследить код, чтобы увидеть, как используется majority аргумент и увидеть, что линия #104 в partykit:::.cnode есть:

prob <- numeric(0) + 1L:length(prob) %in% which.max(prob) 

, которые выглядят довольно странно для меня, как результат будет всегда be numeric(0).

ответ

1

Это ошибка/ошибка при обработке аргумента управления majority. Недавно он был исправлен в репозитории R-Forge (см. https://R-Forge.R-project.org/R/?group_id=261), но еще не был выпущен в CRAN. После запуска

install.packages("partykit", repos = "http://R-Forge.R-project.org") 

все должно работать должным образом. Я думаю, что дата выпуска CRAN еще не запланирована, но не должна быть в слишком отдаленном будущем.