Memasang model Cox Proportional Hazards

Analisis Survival dengan Python

Shae Wang

Senior Data Scientist

Fungsi hazard dan laju hazard

Fungsi hazard $h(t)$: peluang kejadian terjadi pada suatu waktu, dengan syarat bertahan hingga waktu itu.

Laju hazard: laju kejadian sesaat.

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

Fungsi hazard $h(t)$ dan fungsi ketahanan hidup $S(t)$ dapat diturunkan satu sama lain.

Analisis Survival dengan Python

Asumsi proportional hazards

Asumsi proportional hazards: hazard semua individu bersifat proporsional satu sama lain.

Untuk individu $A$ dan $B$: $$h_A(t)=ch_B(t)$$

  1. Ada fungsi hazard dasar (baseline) dan hazard lain ditentukan oleh faktor skala.
  2. Dampak relatif terhadap ketahanan hidup dari suatu variabel tidak berubah seiring waktu (time-invariant).

Perbandingan asumsi proportional hazards antara dua kurva survival

Analisis Survival dengan Python

Model Cox Proportional Hazards

Berdasarkan asumsi proportional hazards: $$h(t|x)=b_0(t)exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$$

$b_0(t)$: fungsi hazard dasar tingkat populasi yang berubah seiring waktu.

$exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$: hubungan linear antara kovariat dan log hazard, TIDAK berubah seiring waktu.

  • Model Cox Proportional Hazards (Cox PH) adalah model regresi yang meregresikan kovariat pada waktu-ke-kejadian/durasi.
Analisis Survival dengan Python

Kebutuhan data untuk model Cox PH

  • Durations: lama hidup/durasi individu.
  • Events: apakah kejadian teramati (1=Ya, 0=Tidak, tersensor).
    • Jika tidak diberikan, model mengasumsikan tidak ada subjek yang tersensor.
  • Kovariat: variabel kontinu atau kategorikal one-hot untuk regresi.
Analisis Survival dengan Python

Memasang model Cox PH

  1. Impor dan buat instance kelas CoxPHFitter
    from lifelines import CoxPHFitter
    coxph = CoxPHFitter()
    
  2. Panggil .fit() untuk menyesuaikan estimator ke data
    coxph.fit(df, duration_col, event_col)
    
  3. Akses properti lain untuk ringkasan model, kovariat, koefisien, prediksi, plot, dll.
    coxph.summary()
    coxph.predict()
    
Analisis Survival dengan Python

Contoh model Cox PH

  • DataFrame: mortgage_df
  • Kovariat:
    • house
    • principal
    • interest
    • property_tax
    • credit_score
  • Kolom lain: duration, paid_off
from lifelines import CoxPHFitter

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

Model kustom

Filter DataFrame:

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

Gunakan parameter formula:

coxph.fit(df=mortgage_df,
          duration_col="duration",
          event_col="paid_off",
          formula="principal + interest 
          + property_tax + credit_score")
  • Lebih praktis dan jelas, tetapi tidak skala untuk banyak kovariat.
Analisis Survival dengan Python

Menafsirkan koefisien

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}$
    • Kenaikan satu unit pada interest dari nilai median -> hazard berubah dengan faktor $e^{0.31}=1.37$, yakni naik 37% dibanding baseline hazard.
Analisis Survival dengan Python

Ayo berlatih!

Analisis Survival dengan Python

Preparing Video For Download...