2014-10-29 13 views
6

Sono nuovo per l'analisi di sopravvivenza e sopravvivo in R. Voglio estrarre probabilità di sopravvivenza per 4 gruppi (malattie) in determinati periodi di tempo (0,10,20,30 anni dalla diagnosi) in un tavolo. Qui è la messa a punto:Estrarre le probabilità di sopravvivenza in Survfit per gruppi

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

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

surv.prob contiene 16 probabilità, cioè, probabilità di sopravvivenza per 4 gruppi stimato a 4 periodi di tempo diversi sopra elencate. Voglio creare una tabella come questa:

Group time.period prob 

1  0  0.9 

1  10  0.8 

1  20  0.7 

1  30  0.6 

e così via per tutti e 4 i gruppi.

Qualche suggerimento su come una tabella come questa può essere facilmente creata? Metterò questo comando in loop per stimare i risultati utilizzando diverse combinazioni di covariate. Ho guardato $ table in survfit ma questo sembra fornire solo eventi, median ecc. Apprezzo qualsiasi aiuto su questo.

SK

risposta

4

posso farlo abbastanza facilmente con il pacchetto 'efficace' che ha una funzione di survest:

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. 

Con sopravvivenza pacchetto è possibile trovare un esempio pratico sulle pagine 264-265 di Therneau e Il libro di Grambsch, ma questo richiederebbe comunque il codice per diffondere i valori in momenti particolari.

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

Grazie. Questo ha funzionato! – Skaul

+0

Sono nuovo nello stackoverflow. Grazie ancora. – Skaul

+4

Nel pacchetto di sopravvivenza, i tempi specifici possono essere inseriti come: 'riassunto (expfit, time = c (0,10,20,30)) $ surv ' – Skaul

Problemi correlati