Weibullモデルでの可視化と予測

Pythonで学ぶSurvival Analysis

Shae Wang

Senior Data Scientist

.plot()

95%信頼区間の係数と範囲をプロットで返します。

aft.plot()
plt.show()

サンプルプロット:

sample_covariate_plot

Pythonで学ぶSurvival Analysis

.plot_partial_effects_on_outcome()

ベースライン生存曲線と、共変量を変化させた場合の比較プロットを返します。

aft.plot_partial_effects_on_outcome(covariates, values)
plt.show()

部分効果のサンプルプロット

Pythonで学ぶSurvival Analysis

部分効果の描画方法

.plot_partial_effects_on_outcome()

  • covariates (文字列またはリスト): 変化させたい元データの共変量。
  • values (1次元/2次元イテラブル): 共変量に与える値。

  • ベースライン生存曲線: 元データの全平均値での予測生存曲線。

aft.plot_partial_effects_on_outcome(
  covariates='var', 
  values=[0, 3, 6, 9, 12, 15]
)
plt.show()

Weibullモデルの部分効果プロット

Pythonで学ぶSurvival Analysis

部分効果の描画方法

  • 値を直書き:
    aft.plot_partial_effects_on_outcome(
      covariates='a', 
      values=[0, 3, 6]
    )
    
  • range 関数を使用:
    aft.plot_partial_effects_on_outcome(
      covariates='a', 
      values=np.arange(10)
    )
    
  • 複数の共変量:
    aft.plot_partial_effects_on_outcome(
      covariates=['a','b'], 
      values=[[1,2],[1,3],[2,3]]
    )
    
  • カスタム式:
    • 必要な変換(交互作用、ワンホット化など)は内部で自動処理されます。
Pythonで学ぶSurvival Analysis

住宅ローンの例

DataFrame 例: mortgage_df

id house principal interest property_tax credit score duration paid_off
1 1 1275 0.035 0.019 780 25 0
2 0 756 0.028 0.020 695 17 1
3 0 968 0.029 0.017 810 5 0
... ... ... ... ... ... ... ...
1000 1 1505 0.041 0.023 750 30 1
Pythonで学ぶSurvival Analysis

住宅ローンの例

aft.plot_partial_effects_on_outcome(
    covariates='credit score',
    values=np.arange(700, 860, 30)
)
plt.show()

mortgage_df の部分効果プロット

Pythonで学ぶSurvival Analysis

生存関数を予測する

  • 生存曲線は共変量の値で変化します。 予測フローチャート
Pythonで学ぶSurvival Analysis

生存関数を予測する

共変量に基づき個々の生存関数を予測します。

.predict_survival_function()

引数:

  • X (np array または DataFrame): 共変量。DataFrame の場合、列順は任意。

共変量に基づき個々の生存期間の中央値を予測します。

.predict_median()

引数:

  • df (np array または DataFrame): 共変量。DataFrame の場合、列順は任意。
Pythonで学ぶSurvival Analysis

現在の期間以降で条件づけ

現在の期間以降に条件づけた生存関数または生存期間中央値を予測します。

  • .predict_survival_function(X, conditional_after)
  • .predict_median(df, conditional_after)

例:

aft.predict_median(new_subject)
4.0
aft.predict_median(new_subject, conditional_after=[2])
2.0
Pythonで学ぶSurvival Analysis

練習してみましょう!

Pythonで学ぶSurvival Analysis

Preparing Video For Download...