Andere verdelingen en modelselectie

Survivalanalyse in Python

Shae Wang

Senior Data Scientist

Welk model past het best bij de data?

4 overlevingscurves voor dezelfde data met verschillende modellen

Survivalanalyse in Python

Parametrische modellen kiezen

  • Niet-parametrische modellering (bijv. Kaplan-Meier)
    • Beschrijft de data accuraat omdat het verdelingsvrij is
    • Is niet glad/continu/differentieerbaar
  • Parametrische modellering (bijv. Weibull)
    • Geeft meestal meer informatie
    • Kies je het verkeerde model, dan leidt dat tot sterk vertekende conclusies
Survivalanalyse in Python

Gangbare parametrische survivalmodellen

  • Het Weibull-model
    from lifelines import WeibullFitter
    
  • Het exponentiële model
    from lifelines import ExponentialFitter
    
  • Het lognormale model
    from lifelines import LogNormalFitter
    
  • Het log-logistische model
    from lifelines import LogLogisticFitter
    
  • Het gamma-model
    from lifelines import GeneralizedGammaFitter
    
Survivalanalyse in Python

Het Akaike-informatiecriterium (AIC)

  • AIC: een schatter van predictiefout en relatieve modelkwaliteit voor een dataset.
  • Schat hoeveel informatie een model verliest en bestraft veel parameters.
    • Minder informatieverlies = hogere modelkwaliteit.
    • Minder parameters (minder complex) = hogere kwaliteit.
  • Uit kandidaatmodellen heeft het model met de minimale AIC de voorkeur.
Survivalanalyse in Python

AIC gebruiken voor modelselectie

Stap 1) Pas parametrische modellen in lifelines

Stap 2) Print en vergelijk de AIC_-eigenschap van elk model

Stap 3) De laagste AIC-waarde heeft de voorkeur

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
Survivalanalyse in Python

find_best_parametric_model()

  • find_best_parametric_model(): ingebouwde lifelines-functie om AIC-vergelijkingen tussen parametrische modellen te automatiseren.
  • Itereert over alle parametrische modellen in lifelines.

Hoe gebruik je dit?

  • T: duur, E: censuur
    best_model, best_aic_ = find_best_parametric_model(event_times=T,
                                                       event_observed=E,
                                                       scoring_method="AIC")
    print(best_model)
    
<lifelines.WeibullFitter:"Weibull_estimate", 
fit met 686 totale observaties, 387 rechts-gecensureerde observaties>
Survivalanalyse in Python

De QQ-plot

  • QQ-plot: vergelijkt twee verdelingen door hun kwantielen tegen elkaar uit te zetten.
  • Zijn de verdelingen vergelijkbaar, dan liggen de punten ongeveer op de lijn y = x.

voorbeeld van een QQ-plot

Survivalanalyse in Python

QQ-plots gebruiken voor modelselectie

Stap 1) Pas parametrische modellen in lifelines.

Stap 2) Plot de QQ-plot van elk model.

Stap 3) De QQ-plot het dichtst bij y = x heeft de voorkeur.

from lifelines.plotting import qq_plot

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

QQ-plots gebruiken voor modelselectie

QQ-plot om te vergelijken

Survivalanalyse in Python

Laten we oefenen!

Survivalanalyse in Python

Preparing Video For Download...