logo
生物科学研究所 井口研究室
Laboratory of Biology, Okaya, Nagano, Japan
Home

ROC 分析 optimism 補正 AUC を R で計算: 血糖指標 HbAlc の例

井口豊(生物科学研究所,長野県岡谷市)
最終更新: 2022 年 10 月 25 日

1. はじめに

医療研究などの ROC 分析で AUC を計算したとき,その妥当性(validation)を評価するために optimism 補正した(optimism-adjusted あるいは optimism-corrected) AUC を計算することがある。 bootstrap による内的妥当性のチェックである。

ここでは, R のパッケージ GmAMisc にある aucadj 関数を利用してやってみよう。

R の付属データを利用しても面白くないので,糖尿病スクリーニング検査の研究で, 辻一郎・久道茂(1995),p.214 表 1 に示された糖化ヘモグロビン(HbAlc)の疾患群(糖尿病型)と非疾患群(境界型および正常型)における分布データを利用した。この論文では,その AUC を 0.936 と算出している(p.214 本文左下)。

2. Optimism 補正済み AUC の計算

以下が, R スクリプトである。


#############
# 辻一郎・久道茂 (1995) p.214 表 1 データ
# 度数分布表なので,HbA1c の階級値を使う

Input<- ("
case control HbA1c
35   2 7.2
13  10 6.8
 6  61 6.4
 5 170 6.0
 3 218 5.6
 0  76 5.2
 0  20 4.8
")

dat<- read.table(
  textConnection(Input), header = TRUE
)

dat

# スタック形式データにする
participants<- relevel(factor(rep(
    colnames(dat)[1:2],
    c(sum(dat$case), sum(dat$control))
)), ref = "control")

HbA1c<- c(
   rep(dat$HbA1c, dat$case),
   rep(dat$HbA1c, dat$control)
)

df<- data.frame(participants, HbA1c)
head(df)

# AUC (internal validation)
library(GmAMisc)

# the Dependent Variable must be stored
# in the first column to the left

mod<- glm(
  participants ~ HbA1c, data = df,
  family = "binomial"
)

# Bootstrap
aucadj(df, mod, B = 200)

################

結果は,次の図 1 のとおりである。

Optimism 補正 AUC

図 1. Optimism 補正による内的妥当性の検証

この関数は,自動的に箱ひげ図も描画してくれる。その左から,それぞれブートストラップによる AUC と元データに対するフィットモデルから得られた AUC である。

図の下の説明で auc.app (apparent AUC) が補正していない AUC であり, adj.auc が補正済みの AUC である。このデータでは,両者がほぼ一致した。

参考文献

辻一郎・久道茂(1995) ROC分析の実際:糖尿病スクリーニング検査を例に. 日本循環器管理研究協議会雑誌 29(3): 213-215.

Home