Я пытаюсь понять, как 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
- правильно ли я понимаю, как работает
majority=TRUE
? - Как ctree подгоняет/предсказывает строки, у которых нет наблюдаемых предикторов?
кстати, я попытался проследить код, чтобы увидеть, как используется аргумент majority
, и увидеть, что строка #104
в partykit:::.cnode
имеет:
prob <- numeric(0) + 1L:length(prob) %in% which.max(prob)
которые выглядят довольно странно для меня, так как результат всегда будет numeric(0)
.