カプラン・マイヤー法 (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 件のコメント:
コメントを投稿