Alte distribuții și selecția modelului

Analiza de supraviețuire în Python

Shae Wang

Senior Data Scientist

Care model se potrivește cel mai bine datelor?

4 curbe de supraviețuire pentru aceleași date folosind modele diferite

Analiza de supraviețuire în Python

Alegerea modelelor parametrice

  • Modelare non-parametrică (ex. modelul Kaplan-Meier)
    • Descrie datele cu acuratețe, deoarece nu presupune o distribuție
    • Nu este netedă/continuă/diferențiabilă
  • Modelare parametrică (ex. modelul Weibull)
    • Statistica parametrică oferă de obicei mai multe informații
    • Când se utilizează un model greșit, conduce la concluzii semnificativ distorsionate
Analiza de supraviețuire în Python

Modele parametrice de supraviețuire comune

  • Modelul Weibull
    from lifelines import WeibullFitter
    
  • Modelul exponențial
    from lifelines import ExponentialFitter
    
  • Modelul log-normal
    from lifelines import LogNormalFitter
    
  • Modelul log-logistic
    from lifelines import LogLogisticFitter
    
  • Modelul Gamma
    from lifelines import GeneralizedGammaFitter
    
Analiza de supraviețuire în Python

Criteriul Informațional Akaike (AIC)

  • AIC: Un estimator al erorii de predicție și al calității relative a modelelor statistice pentru un set de date dat.
  • Estimează cantitatea relativă de informație pierdută de un model și penalizează numărul mare de parametri estimați.
    • Cu cât un model pierde mai puțină informație, cu atât calitatea sa este mai ridicată.
    • Cu cât un model are mai puțini parametri (mai puțin complex), cu atât calitatea sa este mai ridicată.
  • Dat un set de modele candidate pentru date, cel cu valoarea AIC minimă este modelul preferat.
Analiza de supraviețuire în Python

Utilizarea AIC pentru selecția modelului

Pasul 1) Ajustați modele parametrice în lifelines

Pasul 2) Afișați și comparați proprietatea AIC_ a fiecărui model

Pasul 3) Valoarea AIC cea mai mică este preferată

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 de supraviețuire în Python

find_best_parametric_model()

  • find_best_parametric_model(): funcție integrată în lifelines pentru automatizarea comparațiilor AIC între modele parametrice.
  • Iterează prin fiecare model parametric disponibil în lifelines.

Cum se utilizează?

  • T: durate, E: cenzurare
    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 de supraviețuire în Python

Graficul QQ

  • Grafic QQ: Compară două distribuții de probabilitate reprezentând cuantilele lor una față de cealaltă.
  • Dacă distribuțiile comparate sunt similare, punctele din graficul QQ vor fi aproximativ pe dreapta y = x.

exemplu grafic qq

Analiza de supraviețuire în Python

Utilizarea graficelor QQ pentru selecția modelului

Pasul 1) Ajustați modele parametrice în lifelines.

Pasul 2) Reprezentați graficul QQ al fiecărui model.

Pasul 3) Graficul QQ cel mai apropiat de y = x este preferat.

from lifelines.plotting import qq_plot

for model in [WeibullFitter(), LogNormalFitter(), LogLogisticFitter(), ExponentialFitter()]: model.fit(T, E) qq_plot(model)
plt.show()
Analiza de supraviețuire în Python

Utilizarea graficelor QQ pentru selecția modelului

grafic qq pentru comparație

Analiza de supraviețuire în Python

Să exersăm!

Analiza de supraviețuire în Python

Preparing Video For Download...