Cox Proportional Hazards मॉडल फिट करना

Python में Survival Analysis

Shae Wang

Senior Data Scientist

Hazard फंक्शन और hazard rate

Hazard फंक्शन $h(t)$: किसी समय तक जीवित रहने पर, उस समय पर घटना होने की प्रायिकता बताता है.

Hazard rate: घटना होने की तत्क्षण दर.

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

Hazard फंक्शन $h(t)$ और survival फंक्शन $S(t)$ एक-दूसरे से निकाले जा सकते हैं.

Python में Survival Analysis

Proportional hazards मान्यता

Proportional hazards मान्यता: सभी व्यक्तियों के hazards एक-दूसरे के समानुपाती होते हैं.

व्यक्ति $A$ और $B$ के लिए: $$h_A(t)=ch_B(t)$$

  1. एक baseline hazard फंक्शन होता है और अन्य hazards scaling factors से तय होते हैं.
  2. किसी वैरिएबल का सापेक्ष survival प्रभाव समय के साथ नहीं बदलता (time-invariant).

दो survival कर्व्स के बीच proportional hazard मान्यता की तुलना

Python में Survival Analysis

Cox Proportional Hazards मॉडल

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)$: जन-स्तरीय baseline hazard फंक्शन, जो समय के साथ बदलता है.

$exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$: covariates और log hazard के बीच रैखिक संबंध, जो समय के साथ नहीं बदलता.

  • Cox Proportional Hazards (Cox PH) मॉडल एक regression मॉडल है जो time-to-event/duration पर covariates को regress करता है.
Python में Survival Analysis

Cox PH मॉडल के लिए डेटा आवश्यकताएँ

  • Durations: व्यक्तियों का lifetime/अवधि.
  • Events: घटना देखी गई या नहीं (1=Yes, 0=No, censored).
    • यदि न दें, मॉडल मानता है कि कोई subject censored नहीं है.
  • Covariates: regression के लिए continuous या one-hot encoded categorical वैरिएबल.
Python में Survival Analysis

Cox PH मॉडल फिट करना

  1. CoxPHFitter क्लास import करें और instantiate करें
    from lifelines import CoxPHFitter
    coxph = CoxPHFitter()
    
  2. .fit() कॉल कर estimator को डेटा पर फिट करें
    coxph.fit(df, duration_col, event_col)
    
  3. मॉडल summary, covariate, coefficients, predict, plot आदि देखने के लिए अन्य properties एक्सेस करें
    coxph.summary()
    coxph.predict()
    
Python में Survival Analysis

Cox PH मॉडल उदाहरण

  • DataFrame: mortgage_df
  • Covariates:
    • house
    • principal
    • interest
    • property_tax
    • credit_score
  • अन्य कॉलम: duration, paid_off
from lifelines import CoxPHFitter

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

कस्टम मॉडल

DataFrame फ़िल्टर करें:

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

formula पैरामीटर उपयोग करें:

coxph.fit(df=mortgage_df,
          duration_col="duration",
          event_col="paid_off",
          formula="principal + interest 
          + property_tax + credit_score")
  • अधिक सुविधाजनक और स्पष्ट, पर बहुत अधिक covariates पर स्केल नहीं होता.
Python में Survival Analysis

Coefficients की व्याख्या

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}$
    • interest के median से एक unit बढ़ने पर -> hazards $e^{0.31}=1.37$ गुना बदलते हैं, यानी baseline hazards की तुलना में 37% वृद्धि.
Python में Survival Analysis

अभ्यास करते हैं!

Python में Survival Analysis

Preparing Video For Download...