Visualizzare modelli di Weibull

Analisi di sopravvivenza in R

Heidi Seibold

Statistician at LMU Munich

Analisi di sopravvivenza in R

Passi per creare la visualizzazione

  • Stima il modello di Weibull
  • Definisci "pazienti immaginari"
  • Calcola le curve di sopravvivenza
  • Crea un data.frame con le curve
  • Grafica

Analisi di sopravvivenza in R

Passo 1 e 2

  • Stima il modello di Weibull
    wbmod <- survreg(Surv(time, cens) ~ horTh + tsize, data = GBSG2)
    
  • Scegli le combinazioni di covariate ("pazienti immaginari")
    newdat <- expand.grid(
      horTh = levels(GBSG2$horTh),
      tsize = quantile(GBSG2$tsize, probs = c(0.25, 0.5, 0.75))  )
    newdat
    
#>   horTh tsize
#> 1    no    20
#> 2   yes    20
#> 3    no    25
...
Analisi di sopravvivenza in R

Passo 3

  • Calcola le curve di sopravvivenza
surv <- seq(.99, .01, by = -.01)
t <- predict(wbmod, type = "quantile", p = 1 - surv, newdata = newdat) 

dim(t) t[, 1:7]
6 99
         [,1]      [,2]     [,3]     [,4]     [,5]     [,6]     [,7]
[1,] 65.86524 112.54061 154.2116 193.0603 230.0268 265.6298 300.1952
[2,] 89.96016 153.71037 210.6256 263.6858 314.1755 362.8029 410.0131
[3,] 61.97352 105.89102 145.0999 181.6531 216.4354 249.9348 282.4579
[4,] 84.64477 144.62823 198.1805 248.1057 295.6121 341.3663 385.7870
[5,] 54.86634  93.74733 128.4597 160.8209 191.6144 221.2720 250.0653
[6,] 74.93762 128.04211 175.4530 219.6526 261.7110 302.2180 341.5445
Analisi di sopravvivenza in R

Passo 4

  • Crea un data.frame con le curve di sopravvivenza
surv_wbmod_wide <- cbind(newdat, t) 
library("reshape2")
surv_wbmod <- melt(surv_wbmod_wide, id.vars = c("horTh", "tsize"), 
   variable.name = "surv_id",  value.name = "time")
surv_wbmod$surv <- surv[as.numeric(surv_wbmod$surv_id)]
surv_wbmod[, c("upper", "lower", "std.err", "strata")] <- NA
Analisi di sopravvivenza in R

Passo 4

str(surv_wbmod)
'data.frame':    594 obs. of  9 variables:
  $ horTh  : Factor w/ 2 levels "no","yes": 1 2 1 2 1 2 1 2 1 2 ...
  $ tsize  : num  20 20 25 25 35 35 20 20 25 25 ...
  $ surv_id: Factor w/ 99 levels "1","2","3","4",..: 1 1 1 1 1 1 2 2 2 2 ...
  $ time   : num  65.9 90 62 84.6 54.9 ...
  $ surv   : num  0.99 0.99 0.99 0.99 0.99 0.99 0.98 0.98 0.98 0.98 ...
  $ strata : logi  NA NA NA NA NA NA ...
  $ std.err: logi  NA NA NA NA NA NA ...
  $ lower  : logi  NA NA NA NA NA NA ...
  $ upper  : logi  NA NA NA NA NA NA ...
Analisi di sopravvivenza in R

Se è stato troppo veloce...

library("reshape2")
surv_wbmod <- melt(surv_wbmod_wide, id.vars = names(newdat), 
   variable.name = "surv_id",  value.name = "time")
?melt
Analisi di sopravvivenza in R

Passo 5

  • Grafica
ggsurvplot_df(surv_wbmod, surv.geom = geom_line,
  linetype = "horTh", color = "tsize", legend.title = NULL)

Analisi di sopravvivenza in R

Puoi farlo anche tu! Serve solo pratica.

Analisi di sopravvivenza in R

Preparing Video For Download...