2015-08-09 25 views
6

sto usando rfsrc per modellare un problema di sopravvivenza, in questo modo:probabilità di sopravvivenza a determinati intervalli di tempo utilizzando 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 

questo mi dà la probabilità di sopravvivenza complessiva di tutti i pazienti.

Come ottengo la probabilità di sopravvivenza per ogni persona per diversi orari, ad esempio 0-5 mesi o 0-10 mesi?

risposta

6

La documentazione su questo non è immediatamente evidente se non si ha familiarità con il pacchetto, ma è possibile.

Dati di carico

data(pbc, package = "randomForestSRC") 

Creare le prove ed i test di set di dati

pbc.trial <- pbc %>% filter(!is.na(treatment)) 
pbc.test <- pbc %>% filter(is.na(treatment)) 

costruire il nostro modello di

rfsrc_pbc <- rfsrc(Surv(days, status) ~ ., 
        data = pbc.trial, 
        na.action = "na.impute") 

test out modello

test.pred.rfsrc <- predict(rfsrc_pbc, 
          pbc.test, 
          na.action="na.impute") 

Tutte le cose buone sono contenute nel nostro oggetto di previsione. L'oggetto $survival è una matrice di n righe (1 per paziente) ed n colonne (una per time.interest - questi vengono scelti automaticamente se è possibile vincolare utilizzando l'argomento ntime nostra matrice è 106x122.)

test.pred.rfsrc$survival 

il $time.interest oggetto è un elenco dei vari "time.interests" (122, uguale al numero di colonne nella nostra matrice da $surival)

test.pred.rfsrc$time.interest 

Diciamo che volevamo vedere il nostro status previsto a 5 anni, ci sarebbe
è necessario capire in quale momento l'interesse è stato più vicino a 1825 giorni (dal momento che il nostro periodo di misurazione è di giorni) quando guardiamo al nostro oggetto $time.interest, vediamo che la riga 83 = 1827 giorni o circa 5 anni. la riga 83 in $time.interest corrisponde alla colonna 83 nella nostra matrice $survival. Quindi per vedere la probabilità di sopravvivenza prevista a 5 anni dovremmo semplicemente guardare la colonna 83 della nostra matrice.

test.pred.rfsrc$survival[,83] 

È quindi possibile fare questo per qualsiasi timepoints che ti interessa.

+0

Penso che la carica che questo è "davvero scarsamente documentata" è ingiusto. Guarda l'ultimo esempio su '? Predicict.rfsrc'. Utilizza la funzione di rischio cumulativo per generare una curva di sopravvivenza: 'exp (-pred.fit $ chf)' –

+0

@BondedDust, hai ragione. Ho aggiornato il mio post in risposta. – scribbles

+1

@scribbles domanda veloce su questo argomento. I valori nella variabile time.interest corrispondono al tempo totale o al tempo in cui un'osservazione sopravviverà da qui in poi? "here on out" è il momento in cui è stato eseguito l'algoritmo di sopravvivenza. – jjreddick

Problemi correlati