Вероятность выживания в определенные моменты времени с использованием randomForestSRC
Я использую rfsrc
смоделировать проблему выживания, вот так:
library(OIsurv)
library(survival)
library(randomForestSRC)
data(burn)
attach(burn)
library(randomForestSRC)
fit <- rfsrc(Surv(T1, D1) ~ ., data=burn)
# predict on the train set
pred <- predict(fit, burn, OOB=TRUE, type=response)
pred$predicted
это дает мне общую вероятность выживания всех пациентов.
Как получить вероятность выживания для каждого человека в разные моменты времени, скажем, 0-5 месяцев или 0-10 месяцев?
1 ответ
Документация на это не сразу очевидна, если вы не знакомы с пакетом, но это возможно.
Загрузить данные
data(pbc, package = "randomForestSRC")
Создание пробных и тестовых наборов данных
pbc.trial <- pbc %>% filter(!is.na(treatment))
pbc.test <- pbc %>% filter(is.na(treatment))
Постройте нашу модель
rfsrc_pbc <- rfsrc(Surv(days, status) ~ .,
data = pbc.trial,
na.action = "na.impute")
Проверить модель
test.pred.rfsrc <- predict(rfsrc_pbc,
pbc.test,
na.action="na.impute")
Все хорошее содержится в нашем объекте предсказания. $survival
Объект представляет собой матрицу из n строк (по 1 на пациента) и n столбцов (по одному на time.interest
- они выбираются автоматически, хотя вы можете ограничить их, используя ntime
аргумент. Наша матрица 106х122)
test.pred.rfsrc$survival
$time.interest
Объект представляет собой список различных "time.interests" (122, так же, как количество столбцов в нашей матрице из $surival
)
test.pred.rfsrc$time.interest
Допустим, мы хотели бы увидеть наш прогнозируемый статус через 5 лет, мы бы
необходимо выяснить, какой временной интерес был ближайшим к 1825 дням (поскольку наш период измерения составляет дни), когда мы смотрим на наши $time.interest
объект, мы видим, что строка 83 = 1827 дней или примерно 5 лет. строка 83 в $time.interest
соответствует столбцу 83 в нашем $survival
матрица. Таким образом, чтобы увидеть прогнозируемую вероятность выживания через 5 лет, мы просто взглянем на столбец 83 нашей матрицы.
test.pred.rfsrc$survival[,83]
Затем вы можете сделать это для тех моментов времени, которые вас интересуют.