2015-08-09 3 views
6

Я использую rfsrc для моделирования проблемы выживания, как это:вероятность выживания в определенные моменты времени, используя randomForestSRC

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 месяцев?

ответ

6

Документация по этому вопросу не сразу очевидна, если вы не знакомы с пакетом, но это возможно.

Загрузить данные

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 представляет собой матрицу из п строк (1 на одного пациента) и п столбцов (один на time.interest - они автоматически выбираются, хотя вы можете ограничить их с помощью ntime аргумента Нашей матрицы 106x122.)

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] 

Вы могли бы сделать это для какой моменты времени вы заинтересованы.

+0

Я думаю, что обвинение, что это «действительно плохо документированный» несправедливо. Посмотрите последний пример на '? Predict.rfsrc'. Использует кумулятивную функцию опасности для генерации кривой выживания: 'exp (-pred.fit $ chf)' –

+0

@BondedDust, вы правы. Я обновил свой пост в ответ. – scribbles

+1

@scribbles быстрый вопрос по этой теме. Значения во времени. Интересующая переменная соответствует общему времени или времени, когда наблюдение будет выживать здесь? «здесь на выходе» было время, когда был выдан алгоритм выживания. – jjreddick