Autres distributions et sélection de modèle

Analyse de survie en Python

Shae Wang

Senior Data Scientist

Quel modèle s'ajuste le mieux aux données ?

4 courbes de survie pour les mêmes données selon différents modèles

Analyse de survie en Python

Choisir des modèles paramétriques

  • Modélisation non paramétrique (p. ex., modèle de Kaplan-Meier)
    • Décrit bien les données, car sans hypothèse de distribution
    • N'est pas lisse/continue/dérivable
  • Modélisation paramétrique (p. ex., modèle de Weibull)
    • Les statistiques paramétriques donnent souvent plus d'information
    • Avec un mauvais modèle, elles mènent à des conclusions fortement biaisées
Analyse de survie en Python

Modèles de survie paramétriques courants

  • Le modèle de Weibull
    from lifelines import WeibullFitter
    
  • Le modèle exponentiel
    from lifelines import ExponentialFitter
    
  • Le modèle log-normal
    from lifelines import LogNormalFitter
    
  • Le modèle log-logistique
    from lifelines import LogLogisticFitter
    
  • Le modèle Gamma
    from lifelines import GeneralizedGammaFitter
    
Analyse de survie en Python

Le critère d'information d'Akaike (AIC)

  • AIC : estimateur de l'erreur de prédiction et de la qualité relative des modèles statistiques pour un jeu de données.
  • Estime la quantité d'information perdue par un modèle et pénalise un grand nombre de paramètres estimés.
    • Moins un modèle perd d'information, meilleure est sa qualité.
    • Moins un modèle a de paramètres (moins complexe), meilleure est sa qualité.
  • Parmi des modèles candidats, celui avec l'AIC minimal est à privilégier.
Analyse de survie en Python

Utiliser l'AIC pour sélectionner un modèle

Étape 1) Ajuster des modèles paramétriques dans lifelines

Étape 2) Afficher et comparer la propriété AIC_ de chaque modèle

Étape 3) L'AIC le plus bas est préféré

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
Analyse de survie en Python

find_best_parametric_model()

  • find_best_parametric_model() : fonction intégrée de lifelines pour automatiser la comparaison AIC entre modèles paramétriques.
  • Parcourt chaque modèle paramétrique disponible dans lifelines.

Comment l'utiliser ?

  • T : durées, E : censure
    best_model, best_aic_ = find_best_parametric_model(event_times=T,
                                                       event_observed=E,
                                                       scoring_method="AIC")
    print(best_model)
    
<lifelines.WeibullFitter:"Weibull_estimate", 
fitted with 686 total observations, 387 right-censored observations>
Analyse de survie en Python

Le QQ plot

  • QQ plot : compare deux distributions de probabilité en traçant leurs quantiles l'un contre l'autre.
  • Si les deux distributions sont similaires, les points du QQ plot s'alignent approximativement sur la droite y = x.

exemple de QQ plot

Analyse de survie en Python

Utiliser les QQ plots pour la sélection de modèle

Étape 1) Ajuster des modèles paramétriques dans lifelines.

Étape 2) Tracer le QQ plot de chaque modèle.

Étape 3) Le QQ plot le plus proche de y = x est préféré.

from lifelines.plotting import qq_plot

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

Utiliser les QQ plots pour la sélection de modèle

QQ plot pour comparer

Analyse de survie en Python

Passons à la pratique !

Analyse de survie en Python

Preparing Video For Download...