Anpassa Cox proportional hazards-modellen

Överlevnadsanalys i Python

Shae Wang

Senior Data Scientist

Hazardfunktion och hazardkvot

Hazardfunktion $h(t)$: beskriver sannolikheten att en händelse inträffar vid en given tidpunkt, givet överlevnad fram till dess.

Hazardkvot: den momentana händelsefrekvensen

$$h(t)=-\frac{d}{dt}logS(t)$$

Hazardfunktionen $h(t)$ och överlevnadsfunktionen $S(t)$ kan härledas från varandra.

Överlevnadsanalys i Python

Antagandet om proportionella hazards

Antagandet om proportionella hazards: alla individers hazards är proportionella mot varandra.

För individ $A$ och individ $B$: $$h_A(t)=ch_B(t)$$

  1. Det finns en bashazardfunktion och övriga hazards anges med skalfaktorer.
  2. Den relativa överlevnadseffekten kopplad till en variabel förändras inte över tid (tidsinvariant).

Jämförelse av antagandet om proportionella hazards mellan två överlevnadskurvor

Överlevnadsanalys i Python

Cox proportional hazards-modellen

Baserat på antagandet om proportionella hazards: $$h(t|x)=b_0(t)exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$$

$b_0(t)$: bashazardfunktion på populationsnivå som varierar över tid.

$exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$: det linjära sambandet mellan kovariater och logaritmen av hazard – förändras INTE över tid.

  • Cox proportional hazards-modellen (Cox PH) är en regressionsmodell som regresserar kovariater på tid till händelse/duration.
Överlevnadsanalys i Python

Datakrav för Cox PH-modellen

  • Durationer: individernas livslängd/duration.
  • Händelser: om händelsen har observerats (1=Ja, 0=Nej, censurerad).
    • Saknas detta värde antar modellen att inga individer är censurerade.
  • Kovariater: kontinuerliga eller one-hot-kodade kategoriska variabler för regressionen.
Överlevnadsanalys i Python

Anpassa Cox PH-modellen

  1. Importera och instansiera klassen CoxPHFitter
    from lifelines import CoxPHFitter
    coxph = CoxPHFitter()
    
  2. Anropa .fit() för att anpassa estimatorn till data
    coxph.fit(df, duration_col, event_col)
    
  3. Använd andra egenskaper för att kontrollera modellsammanfattning, kovariater, koefficienter, prediktion, diagram m.m.
    coxph.summary()
    coxph.predict()
    
Överlevnadsanalys i Python

Exempel på Cox PH-modell

  • DataFrame: mortgage_df
  • Kovariater:
    • house
    • principal
    • interest
    • property_tax
    • credit_score
  • Övriga kolumner: duration, paid_off
from lifelines import CoxPHFitter

coxph = CoxPHFitter() coxph.fit(df=mortgage_df, duration_col="duration", event_col="paid_off")
Överlevnadsanalys i Python

Anpassad modell

Filtrera DataFrame:

new_df = mortgage_df.loc[:, 
          mortgage_df.columns!="house"]
coxph.fit(df=new_df,
          duration_col="duration",
          event_col="paid_off")

Använd parametern formula:

coxph.fit(df=mortgage_df,
          duration_col="duration",
          event_col="paid_off",
          formula="principal + interest 
          + property_tax + credit_score")
  • Mer praktiskt och tydligt, men skalas inte väl med många kovariater.
Överlevnadsanalys i Python

Tolka koefficienter

print(coxph.summary)
<lifelines.CoxPHFitter: fitted with 1808 observations, 340 censored>
                        coef  exp(coef)  se(coef)      z       p
covariate house        -0.38       0.68      0.19. -1.98    0.05
          principal    -0.06       0.94      0.02  -2.61    0.01
          interest      0.31       1.37      0.31   1.02    0.31
          property_tax -0.15       0.86      0.21  -0.71    0.48
          credit_score -0.43       0.65      0.38  -1.14.   0.26
  • Hazardkvot: $e^{coef}$
    • En enhets ökning i interest från dess medianvärde -> hazards förändras med faktorn $e^{0.31}=1.37$, vilket är en ökning med 37 % jämfört med bashazarden.
Överlevnadsanalys i Python

Nu kör vi en övning!

Överlevnadsanalys i Python

Preparing Video For Download...