2014-10-29 11 views
6

Jestem nowy w analizie przeżycia i przeżyję w R. Chcę wyodrębnić prawdopodobieństwo przeżycia dla 4 grup (chorób) w określonych okresach czasu (0,10, 20,30 lat od diagnozy) w stół. Oto konfiguracji:Wyodrębnij prawdopodobieństwo przeżycia w Survfit przez grupy

fit <- survfit((time=time,event=death)~group) 

surv.prob <- summary(fit,time=c(0,10,20,30))$surv 

surv.prob zawiera 16 prawdopodobieństwa, to jest prawdopodobieństwa przeżycia dla grup 4 szacowane w 4 różnych okresach czasowych wyszczególnionych powyżej. Chcę utworzyć tabelę podobną do tej:

Group time.period prob 

1  0  0.9 

1  10  0.8 

1  20  0.7 

1  30  0.6 

itd. Dla wszystkich 4 grup.

Wszelkie sugestie, jak można łatwo stworzyć taką tabelę? Wprowadzę to polecenie w pętli, aby oszacować wyniki przy użyciu różnych kombinacji współzmiennych. Spojrzałem na $ table w survfit, ale wydaje mi się, że to tylko wydarzenia, mediana itp. Doceń wszelką pomoc w tej sprawie.

SK

Odpowiedz

4

mogę to zrobić dość łatwo z pakietu „RMS”, które ma survest funkcję:

install.packages(rms, dependencies=TRUE);require(rms) 
cfit <- cph(Surv(time, status) ~ x, data = aml, surv=TRUE) 
survest(cfit, newdata=expand.grid(x=levels(aml$x)) , 
           times=seq(0,50,by=10) 
     )$surv 

    0  10  20  30  40   50 
1 1 0.8690765 0.7760368 0.6254876 0.4735880 0.21132505 
2 1 0.7043047 0.5307801 0.3096943 0.1545671 0.02059005 
Warning message: 
In survest.cph(cfit, newdata = expand.grid(x = levels(aml$x)), times = seq(0, : 
    S.E. and confidence intervals are approximate except at predictor means. 
Use cph(...,x=TRUE,y=TRUE) (and don't use linear.predictors=) for better estimates. 

z pakietem przetrwania można znaleźć pracował przykładowo na stronach 264-265 i na Therneau Książka Grambscha, ale nadal wymagałoby to kodowania wartości w określonym czasie.

fit <- coxph(Surv(time, status) ~ x, data = aml) 
temp=data.frame(x=levels(aml$x)) 
expfit <- survfit(fit, temp) 
plot(expfit, xscale=365.25, ylab="Expected") 

enter image description here

> expfit$surv 
       1   2 
[1,] 0.9508567 0.88171694 
[2,] 0.8975825 0.76343993 
[3,] 0.8690765 0.70430463 
[4,] 0.8405707 0.64800519 
[5,] 0.8105393 0.59170883 
[6,] 0.8105393 0.59170883 
[7,] 0.7760369 0.53078004 
[8,] 0.7057873 0.41876588 
[9,] 0.6686309 0.36584513 
[10,] 0.6686309 0.36584513 
[11,] 0.6254878 0.30969426 
[12,] 0.5773770 0.25357160 
[13,] 0.5292685 0.20403922 
[14,] 0.4735881 0.15456706 
[15,] 0.4179153 0.11309373 
[16,] 0.3484162 0.07179820 
[17,] 0.2113251 0.02059003 
[18,] 0.2113251 0.02059003 

> expfit$time 
[1] 5 8 9 12 13 16 18 23 27 28 30 31 33 34 43 
[16] 45 48 161 
+0

Dziękuję. To zadziałało! – Skaul

+0

Jestem nowy w stackoverflow. Jeszcze raz dziękuję. – Skaul

+4

W pakiecie przeżycia, określone czasy można wstawić jako: 'podsumowanie (expfit, czas = c (0,10,20,30)) $ surv ' – Skaul

Powiązane problemy