Cox Orantısal Tehlikeler modelini uyarlama

Python ile Survival Analysis

Shae Wang

Senior Data Scientist

Tehlike fonksiyonu ve tehlike hızı

Tehlike fonksiyonu $h(t)$: hayatta kalınan zamana koşullu olarak olayın belirli bir anda gerçekleşme olasılığını açıklar.

Tehlike hızı: olayın anlık gerçekleşme hızı

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

Tehlike fonksiyonu $h(t)$ ile sağkalım fonksiyonu $S(t)$ birbirinden türetilebilir.

Python ile Survival Analysis

Orantısal tehlikeler varsayımı

Orantısal tehlikeler varsayımı: tüm bireylerin tehlikeleri birbirine orantılıdır.

Birey $A$ ve birey $B$ için: $$h_A(t)=ch_B(t)$$

  1. Bir temel tehlike fonksiyonu vardır; diğer tehlikeler ölçekleme katsayıları ile belirtilir.
  2. Bir değişkenin göreli sağkalım etkisi zamanla değişmez (zamanla sabit).

İki sağkalım eğrisi arasında orantılı tehlike varsayımı karşılaştırması

Python ile Survival Analysis

Cox Orantısal Tehlikeler modeli

Orantısal tehlikeler varsayımına göre: $$h(t|x)=b_0(t)exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$$

$b_0(t)$: zamana göre değişen, nüfus düzeyinde temel tehlike fonksiyonu.

$exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$: kovaryatlar ile tehlikenin logu arasındaki doğrusal ilişki; zamanla değişmez.

  • Cox Orantısal Tehlikeler (Cox PH) modeli, kovaryatları olaya-kadar-zamana/durasyona göre regrese eden bir regresyon modelidir.
Python ile Survival Analysis

Cox PH modeli için veri gereksinimi

  • Süreler: bireylerin yaşam süresi/süresi.
  • Olaylar: olayın gözlenip gözlenmediği (1=Evet, 0=Hayır, sansürlü).
    • Sağlanmazsa model hiçbir deneğin sansürlü olmadığını varsayar.
  • Kovaryatlar: sürekli veya tek-sıcak kodlanmış kategorik değişkenler.
Python ile Survival Analysis

Cox PH modelini uyarlama

  1. CoxPHFitter sınıfını içe aktarın ve başlatın
    from lifelines import CoxPHFitter
    coxph = CoxPHFitter()
    
  2. Tahminciyi verilere uydurmak için .fit() çağırın
    coxph.fit(df, duration_col, event_col)
    
  3. Özet, kovaryat, katsayılar, tahmin, grafik vb. için diğer özelliklere erişin
    coxph.summary()
    coxph.predict()
    
Python ile Survival Analysis

Cox PH modeline örnek

  • DataFrame: mortgage_df
  • Kovaryatlar:
    • house
    • principal
    • interest
    • property_tax
    • credit_score
  • Diğer sütunlar: duration, paid_off
from lifelines import CoxPHFitter

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

Özel model

DataFrame'i filtreleyin:

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

formula parametresini kullanın:

coxph.fit(df=mortgage_df,
          duration_col="duration",
          event_col="paid_off",
          formula="principal + interest 
          + property_tax + credit_score")
  • Daha kullanışlı ve anlaşılırdır, ancak çok sayıda kovaryatta ölçeklenmez.
Python ile Survival Analysis

Katsayıları yorumlama

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
  • Tehlike oranı: $e^{coef}$
    • interest medyanından bir birim artarsa -> tehlike $e^{0.31}=1.37$ katsayısıyla değişir; bu, temel tehlikeye göre %37 artıştır.
Python ile Survival Analysis

Haydi pratik yapalım!

Python ile Survival Analysis

Preparing Video For Download...