はじめての生存曲線

Pythonで学ぶSurvival Analysis

Shae Wang

Senior Data Scientist

生存関数

  • $T$:関心事のイベントが起こる時点
  • $t$:観測中の任意の時点

$$\Large{S(t) = Pr(T>t)}$$

  • $S(t)$:イベントが$t$より後に起こる確率を表す
  • $Pr(T>t)$:生存確率
Pythonで学ぶSurvival Analysis

生存曲線

$$\Large{S(t) = Pr(T>t)}$$

生存曲線の例。

Pythonで学ぶSurvival Analysis

生存曲線

$$\Large{S(t) = Pr(T>t)}$$

生存曲線の例。

Pythonで学ぶSurvival Analysis

生存曲線

$$\Large{S(t) = Pr(T>t)}$$

生存曲線の例。

生存曲線の凡例。

Pythonで学ぶSurvival Analysis

生存曲線の読み方

  • 点$(a,b)$:時点$a$を超えて生存する確率が$b$

生存曲線の例。

Pythonで学ぶSurvival Analysis

生存曲線の読み方

  • 点$(a,b)$:時点$a$を超えて生存する確率が$b$
  • 曲線が平坦:イベント発生率が低い
  • 曲線が急:イベント発生率が高い

ポイント付きの生存曲線例。

Pythonで学ぶSurvival Analysis

ノンパラメトリック vs. パラメトリック

ノンパラメトリックモデル
  • データの形状を仮定しない
パラメトリックモデル
  • データの形状を一部仮定する
  • 限られたパラメータで表現
    • 例:生存曲線が指数分布に従うと仮定
Pythonで学ぶSurvival Analysis

ノンパラメトリック vs. パラメトリック

ノンパラメトリックモデル
  • 生存曲線は通常、滑らかではない

ノンパラメトリック生存曲線の例。

パラメトリックモデル
  • 生存曲線は通常、滑らか

パラメトリック生存曲線の例。

  • 仮定したモデルがデータを適切に表すことに依存
Pythonで学ぶSurvival Analysis

生存曲線を描く

lifelines は生存分析の総合ライブラリです。

  • データに生存関数を当てはめる
  • 当てはめた生存関数に基づき生存曲線を描画
import lifelines
import matplotlib.pyplot as plt

.fit(durations, event_observed)

.plot_survival_function()

Pythonで学ぶSurvival Analysis

生存曲線の例

DataFrame 名:mortgage_df

id duration paid_off
1 25 0
2 17 1
3 5 0
... ... ...
100 30 1
  • id:住宅ローンのID
  • duration:ローンが未完済の年数
  • paid_off:完済なら1、未完済なら0
Pythonで学ぶSurvival Analysis

生存曲線の例

import lifelines
from matplotlib import pyplot as plt
kmf = lifelines.KaplanMeierFitter()
kmf.fit(duration=mortgage_df["duration"], 
        event_observed=mortgage_df["paid_off"])
kmf.plot_survival_function()
plt.show()

カプラン・マイヤー生存曲線の例

Pythonで学ぶSurvival Analysis

練習に進みましょう!

Pythonで学ぶSurvival Analysis

Preparing Video For Download...