生物科学研究所 井口研究室
Laboratory of Biology, Okaya, Nagano, Japan
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 のとおりである。
図 1. Optimism 補正による内的妥当性の検証
この関数は,自動的に箱ひげ図も描画してくれる。その左から,それぞれブートストラップによる AUC と元データに対するフィットモデルから得られた AUC である。
図の下の説明で auc.app (apparent AUC) が補正していない AUC であり, adj.auc が補正済みの AUC である。このデータでは,両者がほぼ一致した。
参考文献
辻一郎・久道茂(1995) ROC分析の実際:糖尿病スクリーニング検査を例に. 日本循環器管理研究協議会雑誌 29(3): 213-215.