Andra fördelningar och modellval

Överlevnadsanalys i Python

Shae Wang

Senior Data Scientist

Vilken modell passar data bäst?

4 överlevnadskurvor för samma data med olika modeller

Överlevnadsanalys i Python

Att välja parametriska modeller

  • Icke-parametrisk modellering (t.ex. Kaplan-Meier-modellen)
    • Beskriver data noggrant eftersom den är fördelningsfri
    • Är inte slät/kontinuerlig/deriverbar
  • Parametrisk modellering (t.ex. Weibull-modellen)
    • Parametrisk statistik ger vanligtvis mer information
    • Vid fel modell leder de till kraftigt snedvridna slutsatser
Överlevnadsanalys i Python

Vanliga parametriska överlevnadsmodeller

  • Weibull-modellen
    from lifelines import WeibullFitter
    
  • Exponentialmodellen
    from lifelines import ExponentialFitter
    
  • Log-normalmodellen
    from lifelines import LogNormalFitter
    
  • Log-logistisk modell
    from lifelines import LogLogisticFitter
    
  • Gammamodellen
    from lifelines import GeneralizedGammaFitter
    
Överlevnadsanalys i Python

Akaikes informationskriterium (AIC)

  • AIC: Ett mått på prediktionsfel och statistiska modellers relativa kvalitet för ett givet dataset.
  • Skattar hur mycket information en modell förlorar och straffar ett stort antal skattade parametrar.
    • Ju mindre information en modell förlorar, desto högre kvalitet har den.
    • Ju färre parametrar (lägre komplexitet) en modell har, desto högre kvalitet.
  • Bland kandidatmodeller för data är den med lägst AIC-värde att föredra.
Överlevnadsanalys i Python

Använda AIC för modellval

Steg 1) Anpassa parametriska modeller i lifelines

Steg 2) Skriv ut och jämför varje modells AIC_-egenskap

Steg 3) Det lägsta AIC-värdet är att föredra

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
Överlevnadsanalys i Python

find_best_parametric_model()

  • find_best_parametric_model(): en inbyggd funktion i lifelines som automatiserar AIC-jämförelser mellan parametriska modeller.
  • Itererar genom varje parametrisk modell som finns i lifelines.

Hur används den?

  • T: varaktigheter, E: censurering
    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>
Överlevnadsanalys i Python

QQ-diagrammet

  • QQ-diagram: Jämför två sannolikhetsfördelningar genom att plotta deras kvantiler mot varandra.
  • Om de två fördelningarna liknar varandra ligger punkterna i QQ-diagrammet ungefär på linjen y = x.

exempel på qq-diagram

Överlevnadsanalys i Python

Använda QQ-diagram för modellval

Steg 1) Anpassa parametriska modeller i lifelines.

Steg 2) Plotta QQ-diagrammet för varje modell.

Steg 3) Det QQ-diagram som ligger närmast y = x är att föredra.

from lifelines.plotting import qq_plot

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

Använda QQ-diagram för modellval

qq-diagram för jämförelse

Överlevnadsanalys i Python

Nu kör vi en övning!

Överlevnadsanalys i Python

Preparing Video For Download...