Inne rozkłady i wybór modelu

Analiza przeżycia w Pythonie

Shae Wang

Senior Data Scientist

Który model najlepiej pasuje do danych?

4 krzywe przeżycia dla tych samych danych przy użyciu różnych modeli

Analiza przeżycia w Pythonie

Wybór modeli parametrycznych

  • Modelowanie nieparametryczne (np. model Kaplana-Meiera)
    • Dokładnie opisuje dane — nie zakłada rozkładu
    • Nie jest gładkie/ciągłe/różniczkowalne
  • Modelowanie parametryczne (np. model Weibulla)
    • Zazwyczaj dostarcza więcej informacji
    • Błędnie dobrany model prowadzi do istotnie obciążonych wniosków
Analiza przeżycia w Pythonie

Popularne parametryczne modele przeżycia

  • Model Weibulla
    from lifelines import WeibullFitter
    
  • Model wykładniczy
    from lifelines import ExponentialFitter
    
  • Model log-normalny
    from lifelines import LogNormalFitter
    
  • Model log-logistyczny
    from lifelines import LogLogisticFitter
    
  • Model gamma
    from lifelines import GeneralizedGammaFitter
    
Analiza przeżycia w Pythonie

Kryterium informacyjne Akaikego (AIC)

  • AIC: estymator błędu predykcji i względnej jakości modeli statystycznych dla danego zbioru danych.
  • Szacuje względną ilość informacji utraconej przez model i penalizuje dużą liczbę szacowanych parametrów.
    • Im mniej informacji model traci, tym wyższa jego jakość.
    • Im mniej parametrów (mniejsza złożoność), tym wyższa jakość modelu.
  • Spośród kandydujących modeli dla danych preferowany jest ten z minimalną wartością AIC.
Analiza przeżycia w Pythonie

Wybór modelu za pomocą AIC

Krok 1) Dopasowanie modeli parametrycznych w lifelines

Krok 2) Porównanie właściwości AIC_ każdego modelu

Krok 3) Preferowany jest model z najniższą wartością AIC

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
Analiza przeżycia w Pythonie

find_best_parametric_model()

  • find_best_parametric_model(): wbudowana funkcja lifelines automatyzująca porównania AIC między modelami parametrycznymi.
  • Iteruje przez każdy model parametryczny dostępny w lifelines.

Sposób użycia:

  • T: czasy trwania, E: cenzurowanie
    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>
Analiza przeżycia w Pythonie

Wykres Q-Q

  • Wykres Q-Q: porównuje dwa rozkłady prawdopodobieństwa, odkładając ich kwantyle na osiach.
  • Jeśli porównywane rozkłady są podobne, punkty na wykresie Q-Q leżą w przybliżeniu na prostej y = x.

przykład wykresu Q-Q

Analiza przeżycia w Pythonie

Wybór modelu za pomocą wykresów Q-Q

Krok 1) Dopasowanie modeli parametrycznych w lifelines.

Krok 2) Narysowanie wykresu Q-Q dla każdego modelu.

Krok 3) Preferowany jest model, którego wykres Q-Q jest najbliższy y = x.

from lifelines.plotting import qq_plot

for model in [WeibullFitter(), LogNormalFitter(), LogLogisticFitter(), ExponentialFitter()]: model.fit(T, E) qq_plot(model)
plt.show()
Analiza przeżycia w Pythonie

Wybór modelu za pomocą wykresów Q-Q

wykres Q-Q do porównania

Analiza przeżycia w Pythonie

Czas na ćwiczenia!

Analiza przeżycia w Pythonie

Preparing Video For Download...