Stima del modello di Cox a rischi proporzionali

Analisi di sopravvivenza in Python

Shae Wang

Senior Data Scientist

Funzione e tasso di rischio

Funzione di rischio $h(t)$: probabilità che l’evento avvenga in un istante, dato che si è sopravvissuti fino ad allora.

Tasso di rischio: tasso istantaneo dell’evento

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

La funzione di rischio $h(t)$ e la funzione di sopravvivenza $S(t)$ si ricavano a vicenda.

Analisi di sopravvivenza in Python

Assunzione dei rischi proporzionali

Assunzione dei rischi proporzionali: i rischi di tutti gli individui sono proporzionali tra loro.

Per gli individui $A$ e $B$: $$h_A(t)=ch_B(t)$$

  1. Esiste una funzione di rischio base e gli altri rischi sono specificati da fattori di scala.
  2. L’effetto relativo sulla sopravvivenza associato a una variabile non cambia nel tempo (invariante nel tempo).

Confronto dell’assunzione di rischi proporzionali tra due curve di sopravvivenza

Analisi di sopravvivenza in Python

Il modello di Cox a rischi proporzionali

Basato sull’assunzione dei rischi proporzionali: $$h(t|x)=b_0(t)exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$$

$b_0(t)$: funzione di rischio base (di popolazione) che varia nel tempo.

$exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$: relazione lineare tra covariate e log del rischio, NON varia nel tempo.

  • Il modello di Cox a rischi proporzionali (Cox PH) è un modello di regressione che mette in relazione le covariate con il tempo all’evento/durata.
Analisi di sopravvivenza in Python

Dati richiesti per il modello Cox PH

  • Durate: vita/durata degli individui.
  • Eventi: se l’evento è stato osservato (1=Sì, 0=No, censurato).
    • Se non fornito, il modello assume nessuna censura.
  • Covariate: variabili continue o categoriche one-hot per la regressione.
Analisi di sopravvivenza in Python

Stima del modello Cox PH

  1. Importa e istanzia la classe CoxPHFitter
    from lifelines import CoxPHFitter
    coxph = CoxPHFitter()
    
  2. Chiama .fit() per adattare il modello ai dati
    coxph.fit(df, duration_col, event_col)
    
  3. Accedi ad altre proprietà per riepilogo, covariate, coefficienti, predict, plot, ecc.
    coxph.summary()
    coxph.predict()
    
Analisi di sopravvivenza in Python

Esempio di modello Cox PH

  • DataFrame: mortgage_df
  • Covariate:
    • house
    • principal
    • interest
    • property_tax
    • credit_score
  • Altre colonne: duration, paid_off
from lifelines import CoxPHFitter

coxph = CoxPHFitter() coxph.fit(df=mortgage_df, duration_col="duration", event_col="paid_off")
Analisi di sopravvivenza in Python

Modello personalizzato

Filtra il DataFrame:

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

Usa il parametro formula:

coxph.fit(df=mortgage_df,
          duration_col="duration",
          event_col="paid_off",
          formula="principal + interest 
          + property_tax + credit_score")
  • Più comodo e chiaro, ma non scala con molte covariate.
Analisi di sopravvivenza in Python

Interpretare i coefficienti

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
  • Hazard ratio: $e^{coef}$
    • Un aumento di 1 unità in interest dalla sua mediana -> il rischio cambia di un fattore $e^{0.31}=1.37$, cioè +37% rispetto al rischio base.
Analisi di sopravvivenza in Python

Passons à la pratique !

Analisi di sopravvivenza in Python

Preparing Video For Download...