生存時間の解析を行うとき、生存率を解析できるカプラン・マイヤー法では、説明変数(要因)は生存期間のみで、被験者の年齢・性別・体重など、さまざまな要因(共変量)の影響は考慮していません。
Cox回帰分析を用いると、複数の共変量を用いた多変量解析を行うことが出来ます。
被験者の背景因子を考慮した各要因の影響の大きさを調べることができます。
# lifelineパッケージ
# # https://lifelines.readthedocs.io/en/latest/Quickstart.html
!pip install lifelines
# Cox回帰:コックス比例ハザードモデル(Cox proportional hazard model)
# https://lifelines.readthedocs.io/en/latest/Quickstart.html
# load data
# https://drive.google.com/file/d/14uxn91U5a8zp8bxsUd8akSoZQxyjyU3a/view?usp=sharing
!curl -L -o "cox.csv" "https://drive.google.com/uc?export=download&id=14uxn91U5a8zp8bxsUd8akSoZQxyjyU3a"
# データをテーブルにします
import pandas as pd
# "sex":性別,"age":年齢,"censor":打ち切り,"time":生存日数,"treat":治療群
data = pd.read_csv(filepath_or_buffer="cox.csv",names=["sex","age","censor","time","treat"] ,encoding="utf-8")
print(data.head())
# 実行
# Cox回帰:コックス比例ハザードモデル(Cox proportional hazard model)
# https://lifelines.readthedocs.io/en/latest/Quickstart.html
from lifelines import CoxPHFitter
cph = CoxPHFitter(alpha=0.05)
fig = plt.figure()
ax = fig.add_subplot(111,title='Cox proportional hazard model')
cph.fit(data, duration_col='time', event_col='censor', show_progress=True)#, step_size=0.5)
cph.print_summary()
cph.plot(ax=ax)
リスク比(ハザード比)は、回帰モデルの要因ごとの係数の指数関数として算出されます。
各要因ごとに、次のように解釈できます。
- HR = 0ならばリスクに差はない
- HR > 0 ならば、HR倍の高リスクがある
- HR < 0 ならば、HR倍の低リスクである
今回の例では、年齢、性別、治療種別の要因から計算された回帰モデルからリスク比が算出されました。
coef(=log(exp(coef)))が回帰モデルの係数かつハザード比(HR)です。
References
- http://www.sthda.com/english/wiki/cox-proportional-hazards-model