2014-10-29 5 views
6

Ich bin neu in Überlebensanalyse und überleben in R. Ich möchte Überlebenswahrscheinlichkeiten für 4 Gruppen (Krankheiten) zu bestimmten Zeiträumen (0,10,20,30 Jahre seit der Diagnose) in ein Tisch. Hier ist die Einstellung:Überlebenswahrscheinlichkeiten in Survfit nach Gruppen extrahieren

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

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

surv.prob enthält 16 Wahrscheinlichkeiten, das heißt, Überlebenswahrscheinlichkeit für 4 Gruppen bei 4 verschiedenen Zeitperioden geschätzt oben aufgeführt sind. Ich möchte eine Tabelle wie folgt erstellen:

Group time.period prob 

1  0  0.9 

1  10  0.8 

1  20  0.7 

1  30  0.6 

und so weiter für alle 4 Gruppen.

Irgendwelche Vorschläge, wie eine Tabelle wie diese einfach erstellt werden kann? Ich werde diesen Befehl in eine Schleife einfügen, um die Ergebnisse mit verschiedenen Kombinationen von Kovariaten zu schätzen. Ich habe $ table in survfit angeschaut, aber das scheint nur Ereignisse, Median usw. bereitzustellen. Schätze jede Hilfe dazu.

SK

Antwort

4

ich es ziemlich leicht mit Paket ‚rms‘ tun können, die eine survest Funktion hat:

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. 

Mit Paket Überleben Sie an einem Beispiel auf den Seiten 264-265 von Therneau finden und Grambschs Buch, aber das würde immer noch Code erfordern, um die Werte zu bestimmten Zeiten zu löschen.

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

Danke. Das hat funktioniert! – Skaul

+0

Ich bin neu in stackoverflow. Danke nochmal. – Skaul

+4

Im Survival-Paket können die spezifischen Zeiten eingefügt werden als: 'Zusammenfassung (expfit, Zeit = c (0,10,20,30)) $ surv ' – Skaul