Altre distribuzioni e scelta del modello

Analisi di sopravvivenza in Python

Shae Wang

Senior Data Scientist

Quale modello si adatta meglio ai dati?

4 curve di sopravvivenza per gli stessi dati con modelli diversi

Analisi di sopravvivenza in Python

Scelta dei modelli parametrici

  • Modelli non parametrici (es. Kaplan-Meier)
    • Descrivono bene i dati perché non assumono una distribuzione
    • Non sono lisci/continui/derivabili
  • Modelli parametrici (es. Weibull)
    • La statistica parametrica di solito dà più informazioni
    • Se il modello è sbagliato, porta a conclusioni fortemente distorte
Analisi di sopravvivenza in Python

Modelli di sopravvivenza parametrici comuni

  • Modello di Weibull
    from lifelines import WeibullFitter
    
  • Modello esponenziale
    from lifelines import ExponentialFitter
    
  • Modello lognormale
    from lifelines import LogNormalFitter
    
  • Modello loglogistico
    from lifelines import LogLogisticFitter
    
  • Modello gamma
    from lifelines import GeneralizedGammaFitter
    
Analisi di sopravvivenza in Python

Criterio di informazione di Akaike (AIC)

  • AIC: stimatore dell’errore di previsione e della qualità relativa dei modelli statistici per un dato dataset.
  • Stima quanta informazione perde un modello e penalizza molti parametri stimati.
    • Meno informazione persa → qualità più alta.
    • Meno parametri (meno complessità) → qualità più alta.
  • Tra più modelli candidati, si preferisce quello con AIC minimo.
Analisi di sopravvivenza in Python

Usare l’AIC per selezionare il modello

Passo 1) Adatta modelli parametrici in lifelines

Passo 2) Stampa e confronta la proprietà AIC_ di ogni modello

Passo 3) Si preferisce il valore AIC più basso

from lifelines import WeibullFitter, 
                      ExponentialFitter, 
                      LogNormalFitter
wb = WeibullFitter().fit(D, E)
exp = ExponentialFitter().fit(D, E)
log = LogNormalFitter().fit(D, E)
print(wb.AIC_, exp.AIC_, log.AIC_)
215.9091   216.1183   202.3498
Analisi di sopravvivenza in Python

find_best_parametric_model()

  • find_best_parametric_model(): funzione integrata di lifelines che automatizza i confronti AIC tra modelli parametrici.
  • Itera su ogni modello parametrico disponibile in lifelines.

Come si usa?

  • T: durate, E: censura
    best_model, best_aic_ = find_best_parametric_model(event_times=T,
                                                       event_observed=E,
                                                       scoring_method="AIC")
    print(best_model)
    
<lifelines.WeibullFitter:"Weibull_estimate", 
adattato con 686 osservazioni totali, 387 osservazioni censurate a destra>
Analisi di sopravvivenza in Python

Il QQ plot

  • QQ plot: confronta due distribuzioni di probabilità tracciando i loro quantili uno contro l’altro.
  • Se le due distribuzioni sono simili, i punti stanno circa sulla retta y = x.

esempio di QQ plot

Analisi di sopravvivenza in Python

Usare i QQ plot per la selezione del modello

Passo 1) Adatta modelli parametrici in lifelines.

Passo 2) Traccia il QQ plot di ciascun modello.

Passo 3) Si preferisce il QQ plot più vicino a y = x.

from lifelines.plotting import qq_plot

for model in [WeibullFitter(), LogNormalFitter(), LogLogisticFitter(), ExponentialFitter()]: model.fit(T, E) qq_plot(model)
plt.show()
Analisi di sopravvivenza in Python

Usare i QQ plot per la selezione del modello

qq plot per confrontare

Analisi di sopravvivenza in Python

Passons à la pratique !

Analisi di sopravvivenza in Python

Preparing Video For Download...