グループへの生存分析の適用

Pythonで学ぶSurvival Analysis

Shae Wang

Senior Data Scientist

住宅ローンの課題

DataFrame 名: mortgage_df

id property type duration paid_off
1 house 25 0
2 apartment 17 1
3 apartment 5 0
... ... ... ...
100 house 30 1

Property type: 住宅ローンで資金調達された住宅の種類(house または apartment)

一戸建てとアパートで、完済までの期間に差はありますか?
Pythonで学ぶSurvival Analysis

グループの生存分布の比較

異なる被験者グループ間で、生存(または事象/生存確率)に差があるかを評価することが多いです。

  • 被験者の次元属性
    • 例: 住宅ローンの種類、タイヤのブランド
  • 実験グループの違い
    • 例: 介入群 vs. 対照群
  • 同一属性の値の違い
    • 例: 高所得 vs. 低所得世帯
Pythonで学ぶSurvival Analysis

生存グループ比較の種類

1. 点推定や生存統計は異なるか
  • 特定の時点で2グループの生存確率を比較
  • 2グループの生存者の総割合を比較
Pythonで学ぶSurvival Analysis

生存グループ比較の種類

2. 基礎分布は異なるか
  • 形式的な仮説検定が必要
Pythonで学ぶSurvival Analysis

生存グループ比較の種類

3. 属性は生存にどの程度影響するか
  • 回帰ベースのモデル化が必要
Pythonで学ぶSurvival Analysis

グループ差の可視化

各グループにカプラン・マイヤー生存関数を当てはめ、曲線を並べて可視化します。

利点:

  • 使いやすく解釈しやすい。
  • ノンパラメトリックで、さまざまな生存分布に柔軟。
  • 生存関数の差を示すのに有用。
Pythonで学ぶSurvival Analysis

グループの特定

DataFrame 名: mortgage_df

id property type duration paid_off
1 house 25 0
2 apartment 17 1
3 apartment 5 0
... ... ... ...
100 house 30 1

各グループのブールマスクを作成します。

house = (mortgage_df["property_type"]=="house")
apt = (mortgage_df["property_type"]=="apartment")

グループが2つのみなら、マスクは1つで十分。もう一方は否定で参照できます。

Pythonで学ぶSurvival Analysis

生存曲線の当てはめと描画

1つの図を作成し、KaplanMeierFitter を生成します。

ax = plt.subplot(111)
mortgage_kmf = KaplanMeierFitter()

家グループに mortgage_kmf を当てはめ、図 ax に描画します。

mortgage_kmf.fit(duration=mortgage_df[house]["duration"], 
                 event_observed=mortgage_df[house]["paid_off"],
                 label="Houses")
mortgage_kmf.plot_survival_function(ax=ax)
Pythonで学ぶSurvival Analysis

生存曲線の当てはめと描画

アパートグループに mortgage_kmf を当てはめ、図 ax に描画します。

mortgage_kmf.fit(duration=mortgage_df[apt]["duration"], 
                 event_observed=mortgage_df[apt]["paid_off"],
                 label="Apartments")
mortgage_kmf.plot_survival_function(ax=ax)
Pythonで学ぶSurvival Analysis

並べて可視化

plt.show()

アパート vs. 一戸建てのカプラン・マイヤー生存曲線。

Pythonで学ぶSurvival Analysis

グループの生存曲線の解釈

アパート vs. 一戸建てのカプラン・マイヤー生存曲線

  • 平均すると、アパートの方が一戸建てより早く完済される傾向。
  • 任意の期間で、完済者の割合はアパートの方が高い。

注意: 信頼区間が重なる箇所がある場合、曲線間に実質的な差がある可能性は低くなります。

Pythonで学ぶSurvival Analysis

Let's practice!

Pythonで学ぶSurvival Analysis

Preparing Video For Download...