Top 5 This Week

関連記事

【医療統計版】ROC曲線:カットオフと感度・特異度の関係

- 本サイト運営者のサービスの紹介 -

連続値の検査で陽性と陰性を分けるとき、カットオフを少し動かすだけで感度と特異度は変わり、感度の高い値だけを探すと偽陽性が増え、特異度を優先すると疾患あり例を見逃しやすくなるため、どちらか一方だけでは検査の振る舞いを捉えられません。ROC曲線は、このカットオフの移動を感度と偽陽性率の組合せとして一枚に描いたものであり、ここでは検査値が高いほど疾患ありを示す場合に範囲を絞り、曲線上の点とカットオフの対応を具体的に扱います。

陽性判定の向きと記号

検査値を$X$、疾患ありを$D=1$、疾患なしを$D=0$とし、$X$がカットオフ$c$以上なら陽性と判定します。この向きを逆にすると曲線の作り方も変わるため、「高値ほど疾患あり」と「陽性は$X\ge c$」を解析前に固定します。

この前提では、真陽性は疾患あり例を陽性とした数、偽陰性は疾患あり例を陰性とした数です。一方、真陰性は疾患なし例を陰性とした数、偽陽性は疾患なし例を陽性とした数を表します。

なお、ROC曲線が直接表すのは、この判定表から得る感度と偽陽性率です。陽性的中率や陰性的中率は対象集団の有病割合にも左右されるため、同じものとして読み替えません。

一方、値の向きが反対で、低い値ほど疾患ありを示す検査なら、陽性の規則は$X\le c$になります。この確認をせずに高値を陽性として計算すると、識別する情報がある検査でも曲線が対角線より下側に現れ、AUCも0.5未満になることがあります。

ROC曲線を作る二つの座標

Obuchowski(2003)は、ROC曲線を横軸が偽陽性率、縦軸が感度となる曲線として説明しています。カットオフごとに一つの座標が定まり、その点を全て並べると、検査値から陽性・陰性を作る過程を一つの図で追えます。

この二つの割合について、感度と特異度は判定表の人数を用いて次のように定義します。

$$\mathrm{Sensitivity}(c)=\frac{TP(c)}{TP(c)+FN(c)},\qquad \mathrm{Specificity}(c)=\frac{TN(c)}{TN(c)+FP(c)}.\tag{1}$$

式(1)は、カットオフ$c$で疾患あり例を正しく陽性とした割合と、疾患なし例を正しく陰性とした割合を表します。ROC曲線の横座標は$1-\mathrm{Specificity}(c)$であり、疾患なし例を誤って陽性とした割合です。

この座標では左上に近いほど、感度が高く偽陽性率が低い組合せになります。ただし、左上への近さは統計的な位置関係にすぎず、その点が研究用途に最も適したカットオフとは限りません。

カットオフを下げたときの移動

カットオフを下げると陽性と判定される対象者が増えます。同じデータの中では、疾患あり例を拾う割合、つまり感度は下がらず、疾患なし例を陽性とする偽陽性率も下がりません。

そのため、ROC曲線上では低いカットオフほど概ね右上側へ移ります。反対に、カットオフを上げると陽性者が減り、感度は低下する方向、特異度は上昇する方向へ動きます。

この関係は、感度と特異度が検査に固定された二つの性能値ではないことを示します。Metz(1978)が示したように、どのカットオフで判定したかを伴わない感度や特異度には、再現できる判定規則が欠けています。

実測データから作るROC曲線が滑らかな曲線ではなく階段状になるのも、候補となるカットオフが観測値に限られるためです。カットオフを最大値より高く置けば全例が陰性となって座標は(0, 0)、最小値より低く置けば全例が陽性となって座標は(1, 1)になります。

800例で見る三つのカットオフ

疾患なし400例を平均0、標準偏差1、疾患あり400例を平均1.2、標準偏差1.1の正規分布から独立に発生させ、ランダムに生成したデータセットを用意しました。観測された平均値は疾患なし群で-0.0081、疾患あり群で1.0978でした。

具体的には、カットオフを0とすると、疾患あり400例のうち334例が陽性となり、感度は0.835でした。疾患なし400例では192例が偽陽性となったため、特異度は0.520、偽陽性率は0.480です。

これに対してカットオフ0.75では、感度0.6375、特異度0.7925、偽陽性率0.2075となりました。さらに1.5まで上げると感度は0.350まで下がりますが、特異度は0.950まで上がり、偽陽性は20例に減ります。

三つの値は臨床上の候補として選んだものではなく、同じ検査値でも判定点により感度と特異度の組合せが変わることを示す固定例です。偽陰性260例を許容して特異度0.950を得るべきかは、ROC曲線だけから決まりません。

ここで人数まで確認すると、割合だけでは見えにくい交換関係がはっきりします。カットオフを0から0.75へ上げる間に偽陽性は192例から83例へ減りますが、偽陰性は66例から145例へ増えており、片方の誤りを減らす代わりにもう片方が増えています。

AUCとカットオフの役割の違い

AUCはROC曲線の下面積であり、カットオフを一つ選ぶ量ではありません。連続値で同点がなければ、無作為に選んだ疾患あり例の値が、無作為に選んだ疾患なし例の値より高い確率として表せます。

$$\mathrm{AUC}=\Pr\!\left(X_{D=1}>X_{D=0}\right).\tag{2}$$

式(2)は、疾患あり例と疾患なし例を一組取り出したとき、検査値の順位が期待した向きになる確率を表します。同点がある場合には、その組を0.5として数える定義が一般的です。

今回のデータでは、順位統計、160,000組全ての比較、ROC曲線の台形積分という独立した計算が三つともAUC 0.777となりました。HanleyとMcNeil(1982)の確率解釈に沿えば、この値は順位づけの識別能を要約していますが、感度0.835となるカットオフ0を採用する根拠にはなりません。

また、AUCが同じ検査同士でも、研究で重視する偽陽性率の範囲における曲線の形は異なり得ます。全体の面積だけを比べてカットオフまで決める進め方では、判定に伴う不利益が反映されないため不十分です。

研究で決めるカットオフの根拠

見逃しを減らしたい検査では偽陰性の不利益が重く、確定的な検査や介入へ進む判定では偽陽性の不利益も無視できません。どちらの誤りをどの程度重く扱うかは、検査の用途、対象集団、その後の対応と結び付けて定めます。

この判断をせず、ROC曲線の左上までの距離だけでカットオフを決める方法は適切ではなく、PerkinsとSchisterman(2006)は、ROC曲線を使う二つの基準から得た「最適」カットオフが一致しない場合を示しており、選択基準そのものが結論を左右します。

さらに、カットオフを同じデータで探索して性能も評価すると、その標本に都合のよい値を選ぶことになります。探索的に決めた場合はその事実を明示し、別の標本で性能を検証する設計が必要です。

対象者の選び方も曲線を変えます。分離しやすい重症例と健常対照に偏れば、目的集団で得られる識別能よりAUCが高く見える方向があり、今回の生成データはこの偏りの大きさを推定していません。

同じ理由から、ある施設や集団で決めたカットオフを別の集団へそのまま移すと、感度と特異度が再現しない場合があります。測定方法、疾患スペクトラム、対象者選択が変われば検査値の分布も変わるため、外部集団での確認はカットオフの妥当性を判断する一部になります。

報告時に残す判定規則

STARD 2015は、診断精度研究で陽性判定の定義や閾値を報告し、事前に定めたものか解析時に決めたものかを区別するよう求めています。感度と特異度だけでなく、カットオフ、値の向き、対象者選択、参照基準がそろって初めて、結果を別の研究と比較できます。

そこで、論文の方法には「検査値が0.75以上を陽性」といった不等号を含む規則を残し、その根拠と決定時期も記載します。結果には対応する感度と特異度を示し、可能なら真陽性、偽陰性、真陰性、偽陽性の人数も添えると、分母と標本規模が伝わります。

一方、ROC曲線だけを掲載し、採用した点を示さない報告では、実際の判定規則を読み取れません。曲線は閾値全体の振る舞いを見せる図であり、研究で使ったカットオフの記載を置き換えるものではありません。

さらに、感度と特異度の推定値には標本変動があります。点推定値が同じ0.80でも、対象者数や疾患あり例の数によって精度は異なるため、実際の研究報告では信頼区間を併記して不確実性を示すことが重要です。

RでROC曲線と閾値を確認

前述の800例について、base Rとstatsパッケージで全ての観測値をカットオフ候補とし、感度と偽陽性率を計算しました。掲載コードは、実行済みの解析スクリプトからデータ生成、ROC曲線、三つの点の描画に必要な部分を抜き出したものです。

set.seed(42)
control_score <- stats::rnorm(400, mean = 0, sd = 1)
disease_score <- stats::rnorm(400, mean = 1.2, sd = 1.1)
roc_thresholds <- c(Inf, sort(unique(c(control_score, disease_score)),
                                  decreasing = TRUE), -Inf)
sensitivity <- vapply(roc_thresholds, function(value) {
  mean(disease_score >= value)
}, numeric(1))
false_positive_rate <- vapply(roc_thresholds, function(value) {
  mean(control_score >= value)
}, numeric(1))
plot(false_positive_rate, sensitivity, type = "s",
     xlab = "False-positive rate (1 - specificity)",
     ylab = "Sensitivity", xlim = c(0, 1), ylim = c(0, 1))
selected_thresholds <- c(0, 0.75, 1.5)
selected_sensitivity <- vapply(selected_thresholds, function(value) {
  mean(disease_score >= value)
}, numeric(1))
selected_fpr <- vapply(selected_thresholds, function(value) {
  mean(control_score >= value)
}, numeric(1))
points(selected_fpr, selected_sensitivity, pch = 19)
cbind(selected_thresholds, selected_sensitivity, selected_fpr)
#>      selected_thresholds selected_sensitivity selected_fpr
#> [1,]                0.00               0.8350       0.4800
#> [2,]                0.75               0.6375       0.2075
#> [3,]                1.50               0.3500       0.0500
800例のROC曲線上で、カットオフ0、0.75、1.5が右上から左下へ移る様子
図1 ランダムに生成した800例のROC曲線。カットオフを0から1.5へ上げると、偽陽性率は0.480から0.050へ下がる一方、感度も0.835から0.350へ下がります。

出力は、カットオフを高くするほど点が左下へ移ることを示しています。左へ動いたことだけを改善と読むと、同時に感度が下がった事実を落とすため、横座標と縦座標を必ず組にして読みます。

実際、カットオフ1.5の偽陽性率0.050は低い値ですが、疾患あり400例のうち260例が陰性となっています。このデータは疾患あり・なしを各400例生成した構成なので、有病割合や陽性的中率の推定には使いません。

曲線から研究判断へつなぐ視点

ROC曲線を読むときに必要なのは、最も左上の点を探す作業ではなく、研究で許容できる偽陰性と偽陽性を曲線上の候補へ対応させることです。そのため、カットオフの選択理由、決定時期、対象集団を先に確認し、AUCは順位づけの要約として分けて扱います。

その上で、感度と特異度には必ずカットオフを添え、曲線全体を示す場合も採用した点を明示します。ROC曲線は判定規則の候補を比較する道具として有用ですが、偽陰性と偽陽性の不利益を統計量だけで決めることはできません。

参考文献

  1. Metz CE. Basic principles of ROC analysis. Seminars in Nuclear Medicine. 1978;8(4):283-298.
  2. Hanley JA, McNeil BJ. The meaning and use of the area under a receiver operating characteristic (ROC) curve. Radiology. 1982;143(1):29-36.
  3. Obuchowski NA. Receiver operating characteristic curves and their use in radiology. Radiology. 2003;229(1):3-8.
  4. Perkins NJ, Schisterman EF. The inconsistency of “optimal” cutpoints obtained using two criteria based on the receiver operating characteristic curve. American Journal of Epidemiology. 2006;163(7):670-675.
  5. Bossuyt PM, Reitsma JB, Bruns DE, et al.; STARD Group. STARD 2015: an updated list of essential items for reporting diagnostic accuracy studies. BMJ. 2015;351:h5527.

Popular Articles