Cox比例ハザードモデルの当てはめ

Pythonで学ぶSurvival Analysis

Shae Wang

Senior Data Scientist

ハザード関数とハザード率

ハザード関数 $h(t)$: その時点まで生存している条件で、時点tに事象が起きる確率を表す。

ハザード率: 事象発生の瞬間率

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

ハザード関数 $h(t)$ と 生存関数 $S(t)$ は相互に導ける。

Pythonで学ぶSurvival Analysis

比例ハザードの仮定

比例ハザードの仮定: すべての個体のハザードは互いに比例する。

個体 $A$ と個体 $B$ の場合: $$h_A(t)=ch_B(t)$$

  1. 基準ハザード関数があり、他のハザードはスケーリング係数で表される。
  2. ある変数に伴う相対的な生存への影響は時間に依存しない(時間不変)。

2つの生存曲線での比例ハザード仮定の比較

Pythonで学ぶSurvival Analysis

Cox比例ハザードモデル

比例ハザードの仮定に基づくと: $$h(t|x)=b_0(t)exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$$

$b_0(t)$: 時間とともに変化する母集団レベルの基準ハザード関数。

$exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$: 共変量とハザードの対数の線形関係。時間によらない。

  • Cox比例ハザード(Cox PH)モデルは、共変量をイベントまでの時間/期間に回帰する回帰モデル
Pythonで学ぶSurvival Analysis

Cox PHモデルのデータ要件

  • 期間: 個体の生存時間/期間
  • イベント: 事象が観測されたか(1=Yes, 0=No, 打ち切り)
    • 指定しない場合、打ち切りなしと仮定
  • 共変量: 連続変数またはワンホット化したカテゴリ変数
Pythonで学ぶSurvival Analysis

Cox PHモデルの当てはめ

  1. CoxPHFitter クラスをインポートして生成
    from lifelines import CoxPHFitter
    coxph = CoxPHFitter()
    
  2. .fit() でデータに当てはめ
    coxph.fit(df, duration_col, event_col)
    
  3. 要約・共変量・係数・予測・可視化などの属性を確認
    coxph.summary()
    coxph.predict()
    
Pythonで学ぶSurvival Analysis

Cox PHモデルの例

  • DataFrame: mortgage_df
  • 共変量:
    • 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")
  • より便利で明確だが、共変量が多い場合はスケールしない
Pythonで学ぶSurvival Analysis

係数の解釈

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
  • ハザード比: $e^{coef}$
    • interest が中央値から1単位増加すると → ハザードは $e^{0.31}=1.37$ 倍、基準ハザード比で37%増
Pythonで学ぶSurvival Analysis

Passons à la pratique !

Pythonで学ぶSurvival Analysis

Preparing Video For Download...