Ajustarea modelului Cox cu riscuri proporționale

Analiza de supraviețuire în Python

Shae Wang

Senior Data Scientist

Funcția de risc și rata de risc

Funcția de risc $h(t)$: descrie probabilitatea că evenimentul are loc la un moment dat, condiționat de supraviețuirea până la acel moment.

Rata de risc: rata instantanee de apariție a evenimentului

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

Funcția de risc $h(t)$ și funcția de supraviețuire $S(t)$ pot fi derivate una din cealaltă.

Analiza de supraviețuire în Python

Ipoteza riscurilor proporționale

Ipoteza riscurilor proporționale: riscurile tuturor indivizilor sunt proporționale între ele.

Pentru indivizii $A$ și $B$: $$h_A(t)=ch_B(t)$$

  1. Există o funcție de risc de bază, iar celelalte riscuri sunt definite prin factori de scalare.
  2. Impactul relativ asupra supraviețuirii asociat unei variabile nu se modifică în timp (invariant temporal).

Comparația ipotezei riscurilor proporționale între două curbe de supraviețuire

Analiza de supraviețuire în Python

Modelul Cox cu riscuri proporționale

Pe baza ipotezei riscurilor proporționale: $$h(t|x)=b_0(t)exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$$

$b_0(t)$: funcția de risc de bază la nivel populațional, care variază în timp.

$exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$: relația liniară dintre covariate și logaritmul riscului, care NU variază în timp.

  • Modelul Cox cu riscuri proporționale (Cox PH) este un model de regresie care regresează covariatele față de timpul până la eveniment/durata.
Analiza de supraviețuire în Python

Cerințe privind datele pentru modelul Cox PH

  • Durate: durata de viață/durata indivizilor.
  • Evenimente: dacă evenimentul a fost observat (1=Da, 0=Nu, cenzurat).
    • Dacă nu sunt furnizate, modelul presupune că niciun subiect nu este cenzurat.
  • Covariate: variabile continue sau categorice codificate one-hot pentru regresie.
Analiza de supraviețuire în Python

Ajustarea modelului Cox PH

  1. Importați și instanțiați clasa CoxPHFitter
    from lifelines import CoxPHFitter
    coxph = CoxPHFitter()
    
  2. Apelați .fit() pentru a ajusta estimatorul la date
    coxph.fit(df, duration_col, event_col)
    
  3. Accesați alte proprietăți: rezumat, covariate, coeficienți, predicții, grafice etc.
    coxph.summary()
    coxph.predict()
    
Analiza de supraviețuire în Python

Exemplu de model Cox PH

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

coxph = CoxPHFitter() coxph.fit(df=mortgage_df, duration_col="duration", event_col="paid_off")
Analiza de supraviețuire în Python

Model personalizat

Filtrați DataFrame-ul:

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

Utilizați parametrul formula:

coxph.fit(df=mortgage_df,
          duration_col="duration",
          event_col="paid_off",
          formula="principal + interest 
          + property_tax + credit_score")
  • Mai convenabil și mai clar, dar nu se scalează bine la un număr mare de covariate.
Analiza de supraviețuire în Python

Interpretarea coeficienților

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
  • Raportul de risc: $e^{coef}$
    • O creștere de o unitate a interest față de valoarea mediană -> riscurile se modifică cu un factor de $e^{0.31}=1.37$, adică o creștere de 37% față de riscul de bază.
Analiza de supraviețuire în Python

Să exersăm!

Analiza de supraviețuire în Python

Preparing Video For Download...