2
Help us understand the problem. What are the problem?

posted at

updated at

Organization

生存時間分析のCox比例ハザードモデルをConcordance indexを使って評価する

はじめに

生存時間分析の一つとして Cox 比例ハザードモデルがあります。
Python の生存時間分析ライブラリである lifelines を使ってモデルを作成すると、評価方法についていくつか選択肢があります。
ここでは Concordance index (c-index, C 統計量) を使った評価についてまとめます。

lifelines で Cox 比例ハザードモデルを作成した際の summary

今回は Python の生存時間分析ライブラリ lifelines に入っている "ROSSI" データを使用します。
以下のコードを実行すると、Cox 比例ハザードモデルを作成でき、図のような summary が取得できます。

import pandas as pd
from lifelines.datasets import load_rossi
from lifelines import CoxPHFitter
import matplotlib.pyplot as plt

rossi = load_rossi()

cph = CoxPHFitter()
cph.fit(rossi, duration_col='week', event_col='arrest')

cph.print_summary()

スクリーンショット 2022-02-02 220426.png

モデルの評価で用いることができるのが、図の下の方にある ConcordancePartial AIClog-likelihood ratio test の3つになります。
今回取り上げる Concordance は、上記の場合 0.64 になっています。

Concordance について

Concordance (index) は C-index や C 統計量とも呼ばれ、1996年に Harrell らによって提唱された指標になります。
これは生存時間の予測と実測の大小関係がどの程度一致しているかを表した指標になっており、0~1 の値を取り、1 に近いほど良い結果となります。
また、医療統計分野の論文では「値が 0.8 より大きければ良い」という目安があるそうです。
ただし、値はあくまで目安であり、必ず超えていなければいけないわけではなく、例えば DeepSurv の論文では Cox 比例ハザードモデルと Randam Survival Forest、DeepSurv のそれぞれの比較に Concordance index を用いています。

これらを踏まえて、例えば「Cox 比例ハザードを使用したモデル A とモデル B では、A の方が Concordance index の値が大きく、また目安となる 0.8 に近い値を出している。このことからモデル A の方が優れている」などと示すことができます。

まとめ

Python で Cox 比例ハザードモデルを作成して生存時間分析する際のモデルの評価方法についてまとめました。
場合によっては AIC を使う方が良いという記事も見かけたのですが、lifelines で出力される Partial AIC の見方が分からなかったのでここについて知っている方がいたら教えていただければ嬉しいです。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?