Kaplan-Meier法で生存時間を推定

カプラン・マイヤー法 (Kaplan-Meier method) は、イベントが発生するまでの時間(生存時間)を分析する生存時間分析(Survival analysis) の手法です。

例えば、治療法や薬剤の違い、疾患の違い、悪性グレードの違いなどによって、生存に差が認められるかを分析することができます。

生存曲線(生存関数)は、横軸に時間、縦軸に生存率を示したグラフで、ある時点における生存率を確認するために利用されます。

生存時間の代表値は、生存時間に打ち切りも含まれるため、平均値ではなく中央値が利用されます。
中央値は、50%が死亡、50%が生存するちょうど半分の時間です。

  # !pip install --upgrade scikit-survival # Colab
  # データロード
  # https://drive.google.com/file/d/1QbJe6w8AcjxDM7Kk3SO_mNgGG5A-eduo/view?usp=sharing
  !curl -L -o "Kaplan.csv" "https://drive.google.com/uc?export=download&id=1QbJe6w8AcjxDM7Kk3SO_mNgGG5A-eduo"
  
  # データをテーブルにします
  import pandas as pd
  # "group":群,"timepoint":時点,"Y":事象(死亡、打ち切り)
  data = pd.read_csv(filepath_or_buffer="Kaplan.csv",names=["group","timepoint","Y"] ,encoding="utf-8")
  print(data.head())
  
  # 実行
  from sksurv.nonparametric import kaplan_meier_estimator
  #https://scikit-survival.readthedocs.io/en/latest/generated/sksurv.nonparametric.kaplan_meier_estimator.html
  import matplotlib.pyplot as plt
  import numpy as np

  control = data[data["group"] == 1]
  therapeutic = data[data["group"] == 2]

  x1, y1 = kaplan_meier_estimator(control["Y"] == 1, control["timepoint"])
  x2, y2 = kaplan_meier_estimator(therapeutic["Y"] == 1, therapeutic["timepoint"])
  x1 = np.insert(x1,0,0)
  y1 = np.insert(y1,0,1)
  x2 = np.insert(x2,0,0)
  y2 = np.insert(y2,0,1)
  plt.plot(np.linspace(0,80,num = 80), np.ones(80)*0.5, color='black',alpha=0.2, linestyle='--')
  plt.step(x1, y1, where="post",color="orange") # whereはstep lineの引き方
  plt.step(x2, y2, where="post", color="b")
  plt.grid(True)
  plt.ylim(-0.1, 1.1)
  plt.xlabel("survival time")
  plt.ylabel("survival rate")
  plt.show()


0 件のコメント:

コメントを投稿