Случайность partykit::ctree в большинстве = TRUE

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

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 он просто будет следовать за большинством, то есть все они должны идти в один и тот же узел без каких-либо изменений. И все же я получаю распределение предсказания для них.

So

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

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

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

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


person qoheleth    schedule 01.09.2016    source источник


Ответы (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 еще не назначена, но, я думаю, не должна быть в слишком отдаленном будущем.

person Achim Zeileis    schedule 02.09.2016