MENU

【無料プレゼント付き】学会発表・論文投稿に必要な統計を最短で学ぶことができる無料メルマガ

生存分析の予測精度を評価する「時間依存性ROC曲線」:Rでの実装まで解説


医療統計やデータ分析において、予測モデルの精度を評価する際に「ROC曲線」は欠かせない指標である。しかし、生存時間解析のように「時間の経過」が関わるデータでは、通常のROC曲線だけでは不十分な場合が多い。

そこで用いられるのが「時間依存性ROC曲線(Time-dependent ROC curve)」である。本記事では、その概念からRを用いた具体的な実装方法までを解説する。


>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

目次

時間依存性ROC曲線とは

通常のROC曲線は、「病気の有無」など、ある一時点の固定された状態を判定する。

しかし、生存分析においては、時間の経過とともに予測の難易度やモデルの精度が変化する。

  • 「手術直後の急変は予測できるが、数年後の再発予測は難しい」
  • 「特定の検査値は、短期的な予後予測には強いが、長期予測には向かない」

このように、「時点 $t$ における予測精度」を評価できるのが、時間依存性ROC曲線の特徴である。特定のタイミングにおけるモデルの「実力」を可視化するツールと言い換えることができる。


時間依存性ROC曲線の使い所

主に以下のようなシチュエーションで活用される。

  • 予後予測モデルの評価: 作成したスコアが、特定の時期(例:2年目)にどれほど正確に機能しているかを判定する。
  • バイオマーカーの比較: 複数の指標のうち、どの変数が特定の時点において最も高い予測能を持つかを比較検討する。
  • 臨床的妥当性の確認: 「治療後〇年時点でのリスクを精度高く予測したい」という、臨床現場の具体的なニーズに合致しているかを評価する。

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

Rによる時間依存性ROC曲線の描画

Rの timeROC パッケージを使用すれば、簡潔なコードで計算と可視化が可能である。ここでは、生存時間解析で汎用される pbc データ(原発性胆汁性胆管炎データ)を用い、ビリルビン値による「2年(730日)時点」の予測精度を評価する。

ステップ1:パッケージの準備とデータ整形

まずは必要なライブラリを読み込み、データを整える。

# パッケージのインストールと読み込み
install.packages("timeROC") # 最初の一回のみ
library(timeROC)
library(survival)

# サンプルデータ(pbc)の読み込み
data(pbc)
pbc <- na.omit(pbc) # 欠損値を除外
pbc$event <- ifelse(pbc$status == 2, 1, 0) # 死亡を1、それ以外を0に変換

ステップ2:計算と可視化

2年(730日)時点でのROC曲線を計算し、描画する。

# 時間依存性ROCの計算(2年=730日時点)
res <- timeROC(T = pbc$time,           # 生存時間
               delta = pbc$event,      # イベントフラグ
               marker = pbc$bili,      # 予測変数(ビリルビン値)
               cause = 1,              # イベント(死亡)のコード
               weighting = "marginal", # 重み付けの方法
               times = 730)            # 評価したい時点(日単位)

# グラフの描画
# plot関数により、タイトルに自動でその時点のAUCが出力される(単位は%)
plot(res, time = 730, col = "blue", lwd = 2)

解説:weighting = “marginal” の意味合い

timeROC 関数の引数に指定した weighting = "marginal" は、生存時間データ特有の「打ち切り(追跡不能)」を統計的に調整するための設定である。

  • 手法の背景: 生存時間データには、イベントが発生する前に観察が終了するケースが含まれる。この偏りを調整するために、「逆確率打ち切り重み付け(IPCW)」という手法が用いられる。
  • marginal(周辺)の意味: これは最も標準的な設定であり、「打ち切りの発生しやすさが、予測因子(今回はビリルビン値)には依存せず、時間のみに依存する」と仮定して計算を行うことを意味する。

解析の第一歩としては、この marginal 設定を選択するのが一般的かつ妥当である。

【コラム】IPCWとは?:IPTWとの違い

統計学に詳しい方なら、因果推論で使われる「IPTW(逆確率治療重み付け)」を聞いたことがあるかもしれない。時間依存性ROC曲線で使われるIPCWは、その「打ち切り(Censoring)」版である。

  • IPTW: 治療(Treatment)を受ける確率の逆数で重み付けし、集団間の背景因子を揃える。
  • IPCW: 打ち切り(Censoring)が発生する確率の逆数で重み付けし、打ち切りによるデータの偏りを補正する。

生存時間解析では、時間の経過とともに「追跡不能(打ち切り)」になる症例が増えていく。もし「重症な人ほど打ち切られやすい」といった偏りがある場合、残ったデータだけで計算したAUCは、実際の精度よりも高く(あるいは低く)見積もられてしまう。

IPCWを用いることで、「もし打ち切りが発生しなかったら、そのデータはどうなっていたか」を擬似的に再現し、より現実に即した予測精度を算出することが可能になるのである。


まとめ

時間依存性ROC曲線は、生存分析における予測精度の「通知表」であり、モデルの有効期間を把握するために不可欠な手法である。

  • 時点の特定: 「特定のタイミング」での予測力を明確にできる。
  • 自動評価: Rの plot() 関数を用いることで、容易にAUCを確認できる。
  • 打ち切りの考慮: marginal 設定により、生存分析特有のデータの偏りを補正できる。

自身の研究や解析においても、通常のROC曲線で終始せず、時間依存性ROC曲線を用いて多角的に精度を評価することを推奨する。

おすすめ書籍

誰も教えてくれなかった 医療統計の使い分け〜迷いやすい解析手法の選び方が,Rで実感しながらわかる!


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

コメント

コメントする

目次