2015-08-09 16 views
6

Używam rfsrc modelować problem przetrwania, tak:prawdopodobieństwo przeżycia w poszczególnych punktach czasowych za pomocą 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 

to daje mi ogólne prawdopodobieństwo przeżycia wszystkich pacjentów.

Jak uzyskać prawdopodobieństwo przeżycia dla każdej osoby dla różnych punktów czasowych, np. 0-5 miesięcy lub 0-10 miesięcy?

Odpowiedz

6

Dokumentacja na ten temat nie jest od razu oczywista, jeśli nie znasz pakietu, ale jest to możliwe.

dane obciążenia

data(pbc, package = "randomForestSRC") 

Tworzenie próbnych i testowych zestawów danych

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

budować naszą modelu

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

przetestowania modelu

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

Wszystkie dobre rzeczy są przechowywane w naszym obiekcie przewidywania. Przedmiotem $survival jest macierzą n wierszy (1 na pacjenta) i N kolumny (po jednym dla każdego time.interest - są wybierane automatycznie że można ograniczyć je za pomocą ntime argumentu Nasz matryca jest 106x122.)

test.pred.rfsrc$survival 

$time.interest obiekt znajduje się lista różnych „time.interests” (122, taka sama jak liczba kolumn w naszej macierzy z $surival)

test.pred.rfsrc$time.interest 

powiedzmy chcieliśmy zobaczyć nasz przewidywany stan na 5 lat, by
musimy ustalić, który czas był najbliżej 1825 dni (ponieważ nasz okres to dni), gdy patrzymy na nasz obiekt $time.interest, widzimy ten wiersz 83 = 1827 dni lub około 5 lat. wiersz 83 w pozycji $time.interest odpowiada kolumnie 83 w naszej macierzy $survival. Tak więc, aby zobaczyć przewidywane prawdopodobieństwo przeżycia w wieku 5 lat, wystarczy spojrzeć na kolumnę 83 naszej matrycy.

test.pred.rfsrc$survival[,83] 

Następnie można to zrobić za cokolwiek punkty czasowe jesteś zainteresowany.

+0

myślę, że ładunek ten jest „bardzo słabo udokumentowany” jest niesprawiedliwe. Zobacz ostatni przykład na '? Predict.rfsrc'. Używa skumulowanej funkcji zagrożenia, aby wygenerować krzywą przeżycia: 'exp (-pred.fit $ chf)' –

+0

@BondedDust, masz rację. Zaktualizowałem swój wpis w odpowiedzi. – scribbles

+1

@scribbles szybkie pytanie na ten temat. Czy wartości w zmiennej time.interest odpowiadają całkowitemu czasowi lub czasowi, w którym obserwacja przetrwa od tego momentu? "here on out" będący czasem działania algorytmu przetrwania. – jjreddick