Вы можете получить на кривых, используя метод treeresponse
. Может быть, есть гораздо лучший способ, но это то, что я придумал.
Вот иллюстрация, использующая пример дерева выживания из ?ctree
:
require(party)
data("GBSG2", package = "ipred")
GBSG2ct <- ctree(Surv(time, cens) ~ .,data = GBSG2)
plot(GBSG2ct)
Мы берем (подогнанные) ответы, используя treeresponse
для данных обучения. Это список с компонентом для каждого наблюдения в данных обучения.
out <- treeresponse(GBSG2ct)
Каждый компонент out
является объектом выживания, класс "survfit"
> class(out[[1]])
[1] "survfit"
Для этого дерева у нас есть четыре конечных узла, поэтому есть только четыре уникальных объекта выживания. Вы можете использовать метод where
, чтобы увидеть, в каких узлах были наблюдения
wnode <- where(GBSG2ct)
Мы можем использовать этот индекс уникальных объектов выживания. Например, для узла 3 (самый левый узел на графике дерева)
> n3 <- which(wnode == 3 & !duplicated(wnode))
> n3
[1] 1
> out[[n3]]
> out[[n3]]
records n.max n.start events median 0.95LCL 0.95UCL
686 248 248 88 2093 1814 NA
Кривая выживания для узла 3 может быть построена с использованием метода plot
:
plot(out[[n3]], conf.int = FALSE, mark.time = FALSE)
, который, кроме диапазона по осям, представляет собой график, используемый на панели для узла 3 на дереве, нарисованном ранее.
В этом примере вы можете повторить для узлов 4, 6 и 7, но вам нужно адаптировать, с какими узлами вы работаете, к вашим данным и подгонянному дереву.