Fitování modelu Coxovy proporcionální hazardní regrese

Survival Analysis in Python

Shae Wang

Senior Data Scientist

Hazardní funkce a míra hazardu

Hazardní funkce $h(t)$: popisuje pravděpodobnost výskytu události v daném čase při přežití do tohoto okamžiku.

Míra hazardu: okamžitá rychlost výskytu události

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

Hazardní funkce $h(t)$ a funkce přežití $S(t)$ lze vzájemně odvodit.

Survival Analysis in Python

Předpoklad proporcionálních hazardů

Předpoklad proporcionálních hazardů: hazardy všech jedinců jsou vzájemně proporcionální.

Pro jedince $A$ a jedince $B$: $$h_A(t)=ch_B(t)$$

  1. Existuje základní hazardní funkce a ostatní hazardy jsou definovány pomocí škálovacích faktorů.
  2. Relativní vliv přežití spojený s proměnnou se nemění v čase (časově invariantní).

Srovnání předpokladu proporcionálních hazardů pro dvě křivky přežití

Survival Analysis in Python

Model Coxovy proporcionální hazardní regrese

Na základě předpokladu proporcionálních hazardů: $$h(t|x)=b_0(t)exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$$

$b_0(t)$: základní hazardní funkce na úrovni populace, která se mění v čase.

$exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$: lineární vztah mezi kovariáty a logaritmem hazardu, který se v čase NEMĚNÍ.

  • Model Coxovy proporcionální hazardní regrese (Cox PH) je regresní model, který regresuje kovariáty na dobu do události/trvání.
Survival Analysis in Python

Požadavky na data pro model Cox PH

  • Trvání: délka života/trvání jedinců.
  • Události: zda byla událost pozorována (1=Ano, 0=Ne, cenzorováno).
    • Pokud není zadáno, model předpokládá, že žádný subjekt není cenzorován.
  • Kovariáty: spojité nebo kategoriální proměnné zakódované metodou one-hot pro regresi.
Survival Analysis in Python

Fitování modelu Cox PH

  1. Importujte a vytvořte instanci třídy CoxPHFitter
    from lifelines import CoxPHFitter
    coxph = CoxPHFitter()
    
  2. Volejte .fit() pro přizpůsobení odhadce datům
    coxph.fit(df, duration_col, event_col)
    
  3. Přístup k dalším vlastnostem: souhrn modelu, kovariáty, koeficienty, predikce, vizualizace atd.
    coxph.summary()
    coxph.predict()
    
Survival Analysis in Python

Příklad modelu Cox PH

  • DataFrame: mortgage_df
  • Kovariáty:
    • house
    • principal
    • interest
    • property_tax
    • credit_score
  • Ostatní sloupce: duration, paid_off
from lifelines import CoxPHFitter

coxph = CoxPHFitter() coxph.fit(df=mortgage_df, duration_col="duration", event_col="paid_off")
Survival Analysis in Python

Vlastní model

Filtrujte DataFrame:

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

Použijte parametr formula:

coxph.fit(df=mortgage_df,
          duration_col="duration",
          event_col="paid_off",
          formula="principal + interest 
          + property_tax + credit_score")
  • Přehlednější a pohodlnější, ale nevhodné pro velký počet kovariátů.
Survival Analysis in Python

Interpretace koeficientů

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
  • Poměr hazardů: $e^{coef}$
    • Nárůst interest o jednu jednotku od mediánu -> hazardy se změní o faktor $e^{0.31}=1.37$, tedy o 37 % oproti základnímu hazardu.
Survival Analysis in Python

Pojďme si to procvičit!

Survival Analysis in Python

Preparing Video For Download...