제2장

제2장: 진단 성능의 통계: 혼동행렬에서 ROC-AUC까지

WIA-BIO-004의 모든 검증 주장은 결국 네 개의 개수에 관한 진술이다. 이 장은 그 네 개수가 어떻게 민감도·특이도·예측도·우도비·ROC 곡선이 되는지, 절단값은 어떻게 정하는지, 그리고 각 수치에 얼마만큼의 불확실성이 따르는지를 다룬다.

2.0 통계를 두 번째 장에서 다루는 이유

제1장에서는 바이오마커가 무엇이며 그 데이터에 왜 표준이 필요한지를 설명하였다. 제3장에서 WIA-BIO-004의 레코드 형식을 살펴보기 전에, 거의 모든 레코드가 궁극적으로 답하려는 질문을 정확히 다룰 어휘가 필요하다. 그 질문은 이 측정값이 대상 질환이 있는 사람과 없는 사람을 얼마나 잘 가르는가이다. 표준은 §4(통계적 검증 방법), §5.1(우도비), §10.3(공식 요약)에서 고정된 지표 집합으로 이 질문에 답하고, 부록 A.1에서 계산 예시로 이를 보여 준다. 제4장에서 다룰 TypeScript SDK도 같은 지표를 구현하며, 제6장의 검증 연구 레코드가 그 결과를 저장한다.

지표 자체는 단순한 산술이지만 잘못 읽기 쉽다. 민감도는 양성 판정을 받은 환자가 실제로 질환을 가질 확률이 아니다. AUC가 높다고 해서 절단값을 어디에 둘지 알려 주지도 않는다. 환자-대조군 연구에서 계산한 예측도는 질환 빈도가 다른 진료 현장에 그대로 옮겨지지 않는다. 그래서 이 장은 모든 공식에 그 해석과, 그 공식이 가장 흔히 불러오는 오류를 함께 붙인다. 계산은 모두 끝까지 풀어 써서 독자가 계산기만으로 재현할 수 있게 했고, 같은 수치를 나중에 시험 벡터(제8장)로 다시 쓸 수 있게 하였다.

이 장을 마치면 할 수 있는 것

2.1 혼동행렬

진단 정확도 통계는 이분 판정에서 출발한다. 정량 바이오마커 값은 절단값과 비교되어야 비로소 검사 결과가 된다. WIA-BIO-004와 SDK에서는 값이 절단값 이상이면 양성으로 본다. 각 대상자는 또한 참조 표준(기준 검사)으로 확정된 실제 상태를 가진다. 조직검사, 추적 관찰 결과, 공인된 진단 기준 등이 참조 표준의 예이다. 두 이분 변수를 교차하면 네 칸이 생긴다.

참조 표준: 질환 있음참조 표준: 질환 없음행 합계
검사 양성 (값 ≥ 절단값)참양성 (TP)거짓양성 (FP)TP + FP
검사 음성 (값 < 절단값)거짓음성 (FN)참음성 (TN)FN + TN
열 합계TP + FN (질환자 전체)FP + TN (비질환자 전체)N

이 배치에서 이 장 전체에 걸쳐 중요한 점이 두 가지 있다. 첫째, 열은 실제 상태로, 행은 검사 결과로 나뉜다. 열 합계로 나누는 지표(민감도, 특이도)는 이미 알려진 집단 안에서 검사가 어떻게 동작하는지를 기술하고, 행 합계로 나누는 지표(PPV, NPV)는 결과를 받은 사람에게 그 결과가 무엇을 뜻하는지를 기술한다. 둘째, 열 합계는 연구 설계가 정한다. 환자-대조군 연구에서는 연구자가 질환자와 비질환자를 몇 명씩 모집할지 결정하므로, 두 열의 비율은 모집 방식이 만든 인공물이지 모집단의 성질이 아니다.

2.1.1 민감도

민감도는 질환이 있는 대상자 가운데 검사가 양성으로 판정한 비율로, Sens = TP / (TP + FN)이다. 참양성률이라고도 한다. 표준 §4.1.1의 예에서는 질환자 85명 중 75명이 양성, 10명이 음성이어서 75 / 85 = 88.2 %가 된다. 민감도가 높은 검사는 질환을 거의 놓치지 않으므로, 진단을 배제하는 데 쓰인다. 이런 검사가 음성이면 놓친 환자가 있을 가능성이 낮기 때문이다.

2.1.2 특이도

특이도는 질환이 없는 대상자 가운데 검사가 음성으로 판정한 비율로, Spec = TN / (TN + FP)이다. 참음성률이며, 1 − Spec은 거짓양성률이다. §4.1.2의 예에서는 건강인 100명 중 95명이 음성, 5명이 양성이므로 Spec = 95 / 100 = 95.0 %이다. 특이도가 높은 검사는 진단을 확정하는 데 쓰인다. 건강한 사람에게서 좀처럼 양성이 나오지 않는 검사라면 양성 결과 자체가 많은 정보를 담기 때문이다.

§4.1의 두 예시는 서로 다른 예시 집단(질환자 85명, 건강인 100명)에서 나온 것이다. 한 연구의 두 열이 아니므로, 그렇다고 밝히지 않은 채 하나의 표로 합쳐서는 안 된다. 검증 보고서는 민감도와 특이도를 언제나 같은 대상자에 대해 같은 절단값으로 제시해야 한다. 절단값을 옮기기만 해도 한쪽을 희생해 다른 쪽을 100 %에 가깝게 끌어올릴 수 있기 때문이다.

2.1.3 정확도와 유병률

정확도는 전체 대상자 중 올바르게 분류된 비율로 (TP + TN) / N이고, 표본의 유병률은 (TP + FN) / N이다. 정확도는 유병률을 가중치로 한 민감도와 특이도의 가중평균, 즉 Acc = Sens × p + Spec × (1 − p)이다. 이 항등식은 정확도 하나만으로는 요약이 부실한 이유를 보여 준다. 유병률이 1 %라면 모두를 음성으로 판정하는 "검사"도 아무것도 찾아내지 못하면서 정확도 99 %를 기록한다. WIA-BIO-004는 공식 목록(§10.3)과 성능 보고서(§5.3.1)에 정확도를 포함하지만, 정확도는 항상 민감도·특이도와 나란히 보고해야 하며 그 둘을 대신해서는 안 된다.

2.2 예측도와 유병률의 역할

양성 결과를 받아 든 임상의가 알고 싶은 것은 이 환자가 실제로 질환을 가지고 있을 확률이다. 이것이 양성 예측도 PPV = TP / (TP + FP)이다. 마찬가지로 음성 예측도 NPV = TN / (TN + FN)은 음성 판정을 받은 사람이 실제로 질환이 없을 확률이다. 둘 다 행 방향 비율이므로, 각 행에 질환자와 비질환자가 얼마나 들어 있는지, 곧 유병률에 좌우된다.

2.2.1 같은 양을 계산하는 두 가지 방법

표준 §4.1.3은 PPV와 NPV를 두 가지 형태로 제시한다. 위의 개수 형태는 연구 표본의 유병률이 검사를 실제로 쓸 모집단과 같을 때, 예컨대 연속 등록 코호트일 때에만 의미가 있다. 베이즈 형태는 검사의 성질(Sens, Spec)과 모집단의 성질(유병률 p)을 분리하므로, 환자-대조군 연구의 결과를 어떤 임상 환경에 대해서도 다시 표현할 수 있게 해 준다.

PPV = Sens × p / [ Sens × p + (1 − Spec) × (1 − p) ]
NPV = Spec × (1 − p) / [ Spec × (1 − p) + (1 − Sens) × p ]

연구 표본을 의도적으로 균형 있게 모은 경우(예: 환자 50명, 대조군 50명), 개수로 계산한 PPV는 유병률 50 %를 암묵적으로 가정한다. 이런 PPV를 선별검사 모집단에도 그대로 적용되는 것처럼 보고하는 것은 바이오마커 논문에서 가장 흔한 오류 가운데 하나이다. 따라서 WIA-BIO-004 보고서는 예측도를 어느 유병률에서 계산했는지 반드시 밝혀야 한다. SDK는 두 번째 방법을 명시적으로 택하여, 검증 함수가 PPV와 NPV를 개수가 아니라 유병률 매개변수로부터 계산한다. 이 설계 선택은 제4장에서 다룬다.

2.2.2 예측도는 얼마나 움직이는가

아래 표는 검사를 Sens = 84 %, Spec = 90 %(§2.7에서 다룰 부록 A.1 예시의 동작점)로 고정하고 유병률만 바꾼 결과이다. 유병률 10·20·50·70·90 %는 SDK의 민감도 분석이 기본으로 쓰는 다섯 시나리오와 같다. 값은 이 책을 위해 위의 베이즈 공식으로 다시 계산하였다.

유병률 pPPVNPV정확도
10 %48.3 %98.1 %89.4 %
20 %67.7 %95.7 %88.8 %
50 %89.4 %84.9 %87.0 %
70 %95.1 %70.7 %85.8 %
90 %98.7 %38.5 %84.6 %

민감도와 특이도가 전혀 바뀌지 않은 같은 검사인데도, 유병률 10 %에서는 양성 결과가 절반도 맞지 않고 90 %에서는 거의 언제나 맞는다. NPV는 반대 방향으로 움직여, 검사받는 사람 열 명 중 아홉 명이 질환자일 때는 38.5 %까지 떨어진다. 여기서 실무적 결론 두 가지가 나온다. 유병률이 낮은 인구 집단 선별용 바이오마커는 양성 결과가 쓸모 있으려면 특이도가 매우 높아야 한다. 반대로 고위험 의뢰 클리닉에서 질환을 배제하려는 바이오마커는 사전 확률이 이미 높으므로 민감도가 매우 높아야 한다. 이런 종류의 표 가운데 계산 착오가 섞인 것이 공개되어 있기도 하다는 점도 알아 둘 필요가 있다. 위의 값은 §2.2.1의 두 공식으로 언제든 다시 만들 수 있으며, 제8장에서 시험 벡터로 쓰인다.

2.3 우도비

예측도는 검사와 모집단을 뒤섞는다. 우도비는 둘을 분리하면서도 임상의가 쓰는 확률의 언어로 말한다. 양성 우도비는 참양성률과 거짓양성률의 비이고, 음성 우도비는 거짓음성률과 참음성률의 비이다(§5.1).

LR+ = Sens / (1 − Spec)
LR− = (1 − Sens) / Spec

LR+가 8이라는 것은 양성 결과가 비질환자보다 질환자에게서 여덟 배 더 잘 나온다는 뜻이다. 우도비는 민감도와 특이도만으로 만들어지므로, 베이즈 모형 안에서는 그 두 지표처럼 유병률과 무관하다. 다만 실제로는 둘 다 질환 스펙트럼에 따라 달라질 수 있다(제6장 참조).

2.3.1 검사 전 확률에서 검사 후 확률로

우도비는 확률이 아니라 오즈에 작용한다. 갱신 규칙은 오즈 형태의 베이즈 정리이다.

검사 전 오즈  = p / (1 − p)
검사 후 오즈  = 검사 전 오즈 × LR
검사 후 확률  = 검사 후 오즈 / (1 + 검사 후 오즈)

예시 (Sens 84 %, Spec 90 % → LR+ = 8.4, LR− ≈ 0.178), 검사 전 확률 20 %:
  검사 전 오즈       = 0.20 / 0.80      = 0.25
  양성 결과: 오즈    = 0.25 × 8.4       = 2.10   → 확률 2.10 / 3.10 = 67.7 %
  음성 결과: 오즈    = 0.25 × 0.178     = 0.0444 → 확률 ≈ 4.3 %

양성 결과 후 확률 67.7 %는 §2.2.2 표에서 유병률 20 %일 때의 PPV와 정확히 같고, 100 % − 4.3 % = 95.7 %는 NPV와 같다. 우연이 아니다. 예측도란 "검사 전 확률" 자리에 유병률을 넣은 검사 후 확률이기 때문이다. 우도비 경로의 장점은, 공표된 하나의 우도비를 모집단 평균과 다를 수 있는 개별 환자의 검사 전 추정치에 곧바로 적용할 수 있다는 데 있다.

2.3.2 해석 구간

WIA-BIO-004 §5.1은 우도비 값의 범위마다 정성적 해석을 붙인다. 이는 근거중심의학에서 널리 쓰는 경험칙이지 엄격한 경계가 아니므로, 보고서에는 언제나 우도비의 수치도 함께 적어야 한다.

LR+LR−질환 확률에 미치는 영향 (§5.1)
> 10< 0.1큰 변화 (증가 / 감소)
5 – 100.1 – 0.2중간 변화
2 – 50.2 – 0.5작은 변화
1 – 20.5 – 1최소 변화
= 1= 1변화 없음

README의 성능 지표 표는 LR+ > 10, LR− < 0.1이라는 지향 목표를 두는데, 이는 양방향 모두 "큰 변화" 구간에 해당한다. 단일 바이오마커가 한 절단값에서 두 조건을 동시에 만족하는 경우는 드물다. 부록 A.1 예시(LR+ 8.4, LR− 0.18)는 양쪽 모두 중간 구간에 놓인다. 관련된 단일 요약치로 진단 오즈비 DOR = LR+ / LR−(이 예시에서 47)를 보고하기도 하지만, 두 방향을 하나로 합치기 때문에 검사가 확정에 강한지 배제에 강한지를 가려 버리며, 표준의 지표 집합에도 들어 있지 않다.

2.4 ROC 곡선 작성과 AUC 계산

지금까지의 모든 지표는 하나의 절단값에 의존했다. 그러나 정량 바이오마커에는 절단값이 한 무리로 존재하고, ROC(수신자 조작 특성) 곡선은 그 전부를 한꺼번에 보여 준다. §4.2.1의 정의에 따르면, 모든 절단값 t에 대해 TPR(t) = TP(t) / (TP(t) + FN(t))와 FPR(t) = FP(t) / (FP(t) + TN(t))를 계산하고 점 (FPR(t), TPR(t))을 찍는다. 절단값을 낮추면 점은 오른쪽 위로 움직이며, 곡선은 언제나 아무것도 양성으로 부르지 않는 (0, 0)에서 모두를 양성으로 부르는 (1, 1)까지 이어진다.

2.4.1 작은 ROC 계산 예

계산 과정을 눈으로 따라갈 수 있도록 환자 5명과 대조군 5명의 예시 데이터를 생각하자(교육용으로 만든 값이며 임상적 의미는 없다).

관측된 모든 값을 큰 것부터 절단값으로 쓰고 "값 ≥ t"를 양성으로 보면 다음과 같은 동작점이 나온다. 마지막 두 열은 §2.5의 절단값 규칙을 미리 계산해 둔 것이다.

절단값 tTP / FNFP / TNTPR (민감도)FPR (1 − 특이도)유든 J(0,1)까지 거리
(82 초과)0 / 50 / 50.00.00.01.000
821 / 40 / 50.20.00.20.800
762 / 30 / 50.40.00.40.600
713 / 20 / 50.60.00.60.400
693 / 21 / 40.60.20.40.447
644 / 11 / 40.80.20.60.283
585 / 01 / 41.00.20.80.200
555 / 02 / 31.00.40.60.400
505 / 03 / 21.00.60.40.600
475 / 04 / 11.00.80.20.800
405 / 05 / 01.01.00.01.000
t = 58, J = 0.8 거짓양성률 (1 − 특이도) 참양성률 (민감도) 0 1 0 1 무작위 (AUC 0.5)
그림 2-1. 예시 데이터의 ROC 곡선. 보라색 계단 곡선이 경험적 ROC이고 점선 대각선은 정보가 없는 검사이다. 초록색 수직 선분은 최적 절단값에서의 유든 지수 J, 즉 곡선과 대각선 사이의 가장 큰 수직 거리이다.

2.4.2 사다리꼴 AUC

§4.2.2는 곡선하면적(AUC)을 사다리꼴 공식으로 계산한다. FPR 순으로 정렬한 이웃한 점 사이의 띠를 모두 더하는 방식이다.

AUC = Σ_i (FPR_{i+1} − FPR_i) × (TPR_{i+1} + TPR_i) / 2

계산 예 (FPR이 바뀌는 띠만 면적에 기여):
  FPR 0.0 → 0.2, TPR 0.6 : 0.2 × (0.6 + 0.6) / 2 = 0.12
  FPR 0.2 → 0.4, TPR 1.0 : 0.2 × (1.0 + 1.0) / 2 = 0.20
  FPR 0.4 → 0.6, TPR 1.0 :                       0.20
  FPR 0.6 → 0.8, TPR 1.0 :                       0.20
  FPR 0.8 → 1.0, TPR 1.0 :                       0.20
  AUC = 0.12 + 0.20 × 4 = 0.92

구현에서 중요한 세부 사항이 두 가지 있다. 곡선에는 양 끝점 (0, 0)과 (1, 1)이 반드시 들어가야 하며, 그렇지 않으면 빠진 띠의 면적이 소리 없이 사라진다. 또 여러 대상자가 같은 값을 가질 때는 서로 다른 값마다 점을 만들어, 동점인 환자와 대조군이 계단이 아니라 대각선 선분을 이루게 해야 한다. 미리 정한 절단값 격자에서만 계산하는 구현은 이 곡선의 근사치를 계산하는 셈이어서, 그 AUC는 정확한 경험적 값과 다를 수 있다. 이것이 SDK에서 어떤 문제가 되는지는 제4장에서 보인다.

2.4.3 순위 확률로서의 AUC

경험적 AUC에는 흔히 더 쓸모 있는 두 번째 의미가 있다. 무작위로 고른 환자 한 명의 바이오마커 값이 무작위로 고른 대조군 한 명의 값보다 클 확률(동점은 1/2로 계산)과 같다는 것이다. 이는 Mann-Whitney U 통계량을 환자-대조군 쌍의 수로 나눈 값이다. 예시에는 5 × 5 = 25개의 쌍이 있다. 환자 82, 76, 71은 대조군 다섯 명 모두보다 크고(15쌍), 64와 58은 각각 69를 제외한 네 명보다 크다(8쌍). 따라서 25쌍 중 23쌍의 순서가 맞고, 23 / 25 = 0.92로 사다리꼴 합과 같다. ROC를 서로 다른 모든 값으로 만들면 이 동치는 정확히 성립하므로, 어떤 AUC 구현이든 이것으로 직접 검산할 수 있다.

이 해석은 AUC가 말해 주지 않는 것도 드러낸다. AUC는 아무도 임상에서 쓰지 않을 절단값까지 포함해 모든 절단값에 걸친 성능을 평균한다. 또 보정(calibration)에 둔감하여, 모든 값에 10을 곱하든 다른 어떤 순증가 변환을 가하든 AUC는 변하지 않는다. AUC가 같은 두 바이오마커라도 선별검사 프로그램이 실제로 요구하는 특이도에서의 민감도는 크게 다를 수 있다.

2.4.4 해석 구간

AUCWIA-BIO-004 §4.2.2의 표현순위 확률로서의 의미
1.0완벽한 판별모든 환자가 모든 대조군보다 위
0.90 – 0.99탁월 (excellent)환자-대조군 쌍 10개 중 9개 이상의 순서가 맞음
0.80 – 0.89양호 (good)10쌍 중 8~9쌍
0.70 – 0.79보통 (fair)10쌍 중 7~8쌍
0.50 – 0.69불량 (poor)동전 던지기보다 겨우 나은 수준
0.5무작위 (판별력 없음)순서가 질환 여부와 무관

WIA-BIO-004 문서군의 다른 문서는 조금씩 다른 구간을 쓴다(품질 지표를 다룬 단계 부속서는 AUC 0.8 초과를 "탁월"이라 부르고, SDK의 임상 유용성 등급은 0.60부터 시작한다). 이 책은 등급을 붙일 때 본 명세 §4.2.2의 구간을 쓰며, 서로 다른 기준값은 모두 제5장의 조정표 하나에 모아 둔다. AUC가 0.5보다 작다고 마커가 쓸모없다는 뜻은 아니다. 판정 방향이 뒤집혔다는 뜻이며, "값 ≤ t를 양성"으로 보면 1 − AUC를 얻는다. 검증 레코드는 방향을 명시해야 한다.

2.5 절단값 선택

ROC 곡선이 바이오마커를 기술한다면, 절단값은 그것을 검사로 만든다. 표준 §4.2.3은 세 가지 규칙을 든다. 어떤 규칙을 쓰든, 최종 성능을 보고할 데이터를 보기 전에 정해야 한다. 그렇지 않으면 보고된 민감도와 특이도는 낙관적으로 부풀려진다. 실제로는 개발 데이터에서 절단값을 고르고, 독립된 검증 데이터에서 그 성능을 보고한다는 뜻이다(제6장).

2.5.1 유든 지수

W. J. Youden이 1950년에 제안한 유든 지수는 J = Sens + Spec − 1 = TPR − FPR이다. 기하학적으로는 ROC 점과 무작위 대각선 사이의 수직 거리이며, 이를 최대로 만드는 절단값이 최적이다. 예시에서 J는 t = 58일 때 0.8로 가장 크다(Sens 1.0, Spec 0.8). J는 놓친 환자와 거짓 경보를 비율로서 같은 무게로 다루므로, 유병률이 50 %이고 두 오류의 비용이 같을 때에만 기대 오류 수를 최소화하는 것과 같아진다. 외부 정보가 전혀 필요 없다는 이유로 SDK의 기본값이며, 탐색 단계와 분석적 작업에서 합리적이고 재현 가능한 출발점이 된다.

2.5.2 왼쪽 위 모서리에 가장 가까운 점

두 번째 규칙은 ROC 점에서 완벽한 분류기 (0, 1)까지의 유클리드 거리 d = √[(1 − Sens)² + (1 − Spec)²]를 최소화한다. 예시에서는 같은 점(t = 58에서 d = 0.200)을 고르는데, 모양이 고른 곡선에서는 흔한 일이다. 그러나 곡선이 비대칭이면 두 규칙이 서로 다른 점을 고를 수 있다. 거리 기준에는 결정이론적 근거가 없으므로, 기하학적 경험칙으로 여기고 그렇게 보고하는 것이 좋다.

2.5.3 기대 비용 규칙

세 번째 규칙은 오류 유형마다 비용을 매겨 절충을 명시적으로 드러낸다. 표준은 이를 개수와 유병률을 섞어 Cost = CFN × FN × Prevalence + CFP × FP × (1 − Prevalence)로 적는다. 비율로 일관되게 쓰면, 검사 1인당 기대 비용은 다음과 같다.

E[비용](t) = C_FN × (1 − Sens(t)) × p + C_FP × (1 − Spec(t)) × (1 − p)

예시: p = 0.5, 거짓양성의 비용이 거짓음성의 4배 (C_FP = 4, C_FN = 1),
환자 5명·대조군 5명 데이터 동일:
  t = 58 : 1 × 0.0 × 0.5 + 4 × 0.2 × 0.5 = 0.40
  t = 64 : 1 × 0.2 × 0.5 + 4 × 0.2 × 0.5 = 0.50
  t = 71 : 1 × 0.4 × 0.5 + 4 × 0.0 × 0.5 = 0.20   ← 최소
  t = 76 : 1 × 0.6 × 0.5 + 4 × 0.0 × 0.5 = 0.30

거짓양성의 비용이 크면 선호되는 절단값이 58에서 71로 옮겨 가며, 민감도 40 %를 내주고 완벽한 특이도를 얻는다. 여기의 비용은 계산 원리를 보이려고 임의로 정한 것이다. 실제 적용에서는 각 오류의 임상적 결과(불필요한 조직검사, 치료 지연 등)에서 비용을 끌어내야 하며, 가정한 유병률과 함께 검증 연구에 기록해야 한다.

2.5.4 유든 지수를 쓰지 말아야 할 때

의도된 용도가 비대칭이면 유든 J는 좋지 않은 선택이다. 선별검사나 배제용 검사는 놓친 환자가 가장 중요한 오류이므로 최소 민감도에 맞추어야 한다(예: "민감도 95 % 이상을 유지하는 가운데 특이도가 가장 높은 점"). 확정용 검사는 반대로 최소 특이도에 맞춘다. SDK의 민감도 분석은 바로 이 두 절단값(민감도 90 %와 특이도 90 %를 달성하는 절단값)을 보고하며, 그 읽는 법은 제4장에서 다룬다. 어떤 규칙을 택하든 WIA-BIO-004 검증 레코드에는 그 이름을 적어야 한다. 선택 규칙이 적혀 있지 않은 절단값은 감사할 수 없다.

규칙기준외부 입력주요 용도
유든 지수max (Sens + Spec − 1)없음탐색 단계, 대칭적 문제, SDK 기본값
(0,1)에 가장 가까운 점min √[(1 − Sens)² + (1 − Spec)²]없음기하학적 경험칙, 민감도 점검
기대 비용min CFN(1 − Sens)p + CFP(1 − Spec)(1 − p)비용과 목표 유병률의사결정 중심 응용
민감도 고정 / 특이도 고정Sens ≥ 목표에서 최고 Spec (또는 그 반대)임상 목표값선별(배제) 검사 또는 확정 검사

2.6 불확실성과 비교

이 장의 모든 지표는 유한한 표본에서 얻은 추정치이므로 불확실성과 함께 보고해야 한다. 그래서 WIA-BIO-004 성능 보고서(§5.3.1)는 AUC, 민감도, 특이도에 95 % 신뢰구간을 싣는다.

2.6.1 AUC의 표준오차 (Hanley와 McNeil)

§10.3은 J. A. Hanley와 B. J. McNeil이 Radiology(1982)에 발표한 근사식을 채택한다. 질환자 n₁명, 비질환자 n₀명일 때 다음과 같다.

Q1 = AUC / (2 − AUC)
Q2 = 2 × AUC² / (1 + AUC)
SE(AUC) = √{ [ AUC(1 − AUC) + (n₁ − 1)(Q1 − AUC²) + (n₀ − 1)(Q2 − AUC²) ] / (n₁ × n₀) }
95 % 신뢰구간 ≈ AUC ± 1.96 × SE(AUC)

Q1은 무작위로 고른 환자 두 명이 모두 대조군 한 명보다 위에 놓일 확률, Q2는 환자 한 명이 대조군 두 명보다 모두 위에 놓일 확률이다. 위의 닫힌 형태는 측정값이 지수형 분포를 따른다는 가정에서 나온다. 이 근사는 빠르고 연구 계획에는 충분하지만, DeLong 방법이 쓰는 비모수 분산과 같지 않으며 표본이 작거나 AUC가 1에 가까우면 부정확할 수 있다. 정규 근사 구간은 1을 넘을 수도 있는데, 그때는 잘라 내거나 로짓 변환 구간, 부트스트랩처럼 [0, 1] 범위를 지키는 방법으로 바꾸어야 한다. 99 % 구간이라면 승수는 1.96 대신 2.576이다.

2.6.2 상관된 두 AUC의 비교 (DeLong)

두 바이오마커, 또는 바이오마커 하나와 결합 점수를 같은 대상자에게서 측정했다면 두 AUC는 서로 상관되어 있으며, 신뢰구간을 눈으로 비교하는 것은 타당한 검정이 아니다. §4.3.1은 E. R. DeLong, D. M. DeLong, D. L. Clarke-Pearson의 검정(Biometrics, 1988)을 지정한다. 이 검정은 "구조 성분"으로 만들어진다. 각 환자 i에 대해 V₁₀(i)는 그 환자가 앞서는 대조군의 비율(동점은 ½)이고, 각 대조군 j에 대해 V₀₁(j)는 그 대조군을 앞서는 환자의 비율이다. AUC는 어느 쪽 성분 집합의 평균이기도 하며, 분산은 다음과 같이 추정한다.

Var(AUC) = S₁₀ / n₁ + S₀₁ / n₀        (S = 구조 성분의 표본분산)

같은 대상자에서 측정한 마커 A와 B:
Var(AUC_A − AUC_B) = Var(AUC_A) + Var(AUC_B) − 2 Cov(AUC_A, AUC_B)
Z = (AUC_A − AUC_B) / √Var(AUC_A − AUC_B)      → N(0, 1)과 비교

공분산 항은 두 마커의 짝지은 구조 성분으로부터 같은 방식으로 계산한다. 공분산은 대개 양수이므로, 이를 무시하면 분산이 과대평가되어 실제 차이도 유의하지 않은 것처럼 보이게 된다. 검정은 기본적으로 양측이며, 표준은 p < 0.05를 차이의 근거로 본다. 제4장에서 설명하듯 v1.0 SDK는 Hanley-McNeil 구간을 계산할 뿐 DeLong 검정은 구현하지 않으므로, 현재 두 마커를 비교하려면 별도의 통계 패키지가 필요하다.

2.6.3 민감도·특이도의 신뢰구간

민감도와 특이도는 이항 비율이며, 그 구간은 열 합계를 기준으로 계산한다. 민감도는 n₁, 특이도는 n₀이다. 단순한 Wald 구간 p̂ ± 1.96 √[p̂(1 − p̂)/n]은 널리 가르치지만 0이나 1 근처, 또 n이 작을 때 성질이 나쁘고 100 %를 넘기도 한다. Wilson 점수 구간이나 정확 Clopper-Pearson 구간이 권장되며, 보고서에 사용한 방법의 이름을 밝혀야 한다. 부록 A.1의 개수로 계산하면 다음과 같다.

지표추정치Wald 95 % 신뢰구간Wilson 95 % 신뢰구간
민감도 (42 / 50)84.0 %73.8 – 94.2 %71.5 – 91.7 %
특이도 (45 / 50)90.0 %81.7 – 98.3 %78.6 – 95.7 %

Wilson 구간은 50 % 쪽으로 당겨진 비대칭 구간인데, 100 %에 가까운 추정치는 한 방향으로만 틀릴 수 있다는 사실을 반영한 것이다. 군당 50명이면 구간 폭이 대략 ±10 %p에 이르러, "민감도 90 % 이상" 같은 주장을 뒷받침하기에는 턱없이 넓다. 이 관찰이 제6장 표본 크기 설계의 출발점이 된다.

2.7 처음부터 끝까지: 종합 계산 예

표준의 부록 A.1은 이 장의 내용을 하나로 묶는다. 질환자 50명과 건강 대조군 50명으로 이루어진 균형 연구를 기술하고, 절단값 75(값 ≥ 75를 양성)에서의 혼동행렬을 제시한다. 부록에는 개별 측정값이 실려 있지 않으므로, 아래 계산은 제시된 개수에서 출발한다. 파생된 수치는 모두 이 책을 위해 다시 계산하였다.

연구: 환자 50명, 대조군 50명 (표본 유병률 0.50), 절단값 = 75, "값 ≥ 75" = 양성

혼동행렬                    환자      대조군
  검사 양성                  TP 42     FP 5
  검사 음성                  FN 8      TN 45

민감도       = 42 / (42 + 8)          = 0.840  → 84.0 %
특이도       = 45 / (45 + 5)          = 0.900  → 90.0 %
PPV (개수)   = 42 / (42 + 5)          = 0.894  → 89.4 %   (유병률 0.50에서만 유효)
NPV (개수)   = 45 / (45 + 8)          = 0.849  → 84.9 %   (유병률 0.50에서만 유효)
정확도       = (42 + 45) / 100        = 0.870  → 87.0 %
LR+          = 0.84 / (1 − 0.90)      = 8.4
LR−          = (1 − 0.84) / 0.90      = 0.178  → 0.18
유든 J       = 0.84 + 0.90 − 1        = 0.74

표준이 보고한 AUC: 0.91
Hanley-McNeil 검산 (n₁ = n₀ = 50):
  Q1 = 0.91 / 1.09          = 0.8349
  Q2 = 2 × 0.8281 / 1.91    = 0.8671
  SE = √{[0.0819 + 49 × 0.0068 + 49 × 0.0390] / 2500} ≈ 0.0305
  95 % 신뢰구간 = 0.91 ± 1.96 × 0.0305 ≈ 0.85 – 0.97

다시 계산한 구간은 부록의 0.85–0.97과 일치하며, 부록이 §10.3의 Hanley-McNeil 공식을 썼다는 해석과 부합한다. 심사자의 눈으로 결과를 읽으면 몇 가지가 눈에 띈다. AUC 0.91은 "탁월" 구간에 들지만, 선택한 절단값 75는 곡선 위의 한 점일 뿐이고 부록에는 그것을 어떻게 골랐는지 적혀 있지 않다. 완전한 레코드라면 선택 규칙을 밝혔을 것이다(§2.5). 개수로 계산한 PPV 89.4 %는 연구가 균형 설계였기 때문에 성립한다. 임상 유병률 10 %라면 같은 동작점의 PPV는 48.3 %이다(§2.2.2). 우도비는 양방향 모두 중간 구간에 놓여, README가 지향하는 LR+ > 10, LR− < 0.1에는 미치지 못한다. 그리고 §2.6.3의 Wilson 구간은 군당 50명으로는 민감도가 대략 72 %에서 92 % 사이 어디든 될 수 있음을 보여 준다.

이런 관찰이 예시를 틀리게 만드는 것은 아니다. 통계적으로 완전한 보고서가 무엇을 담아야 하는지를 보여 줄 뿐이다. 아래 표는 이 장에서 쓴 공식을, 이후 장과 SDK, 적합성 시험이 참조하는 형태로 요약한 것이다.

지표공식답하는 질문유병률 의존?
민감도 (TPR)TP / (TP + FN)질환자 가운데 몇 명을 찾아내는가?아니오 (스펙트럼에는 의존)
특이도 (TNR)TN / (TN + FP)비질환자 가운데 몇 명을 음성으로 가려내는가?아니오 (스펙트럼에는 의존)
정확도(TP + TN) / N전체 중 올바르게 분류된 비율은?예
PPVTP / (TP + FP) 또는 베이즈 형태양성일 때 질환이 있을 확률은?예, 강하게
NPVTN / (TN + FN) 또는 베이즈 형태음성일 때 질환이 없을 확률은?예, 강하게
LR+Sens / (1 − Spec)양성 결과가 오즈를 몇 배로 만드는가?아니오
LR−(1 − Sens) / Spec음성 결과가 오즈를 몇 배로 만드는가?아니오
유든 JSens + Spec − 1이 절단값은 무작위보다 얼마나 나은가?아니오
AUC사다리꼴 합 = P(환자 > 대조군)모든 절단값에 걸쳐 환자를 대조군보다 얼마나 잘 위에 놓는가?아니오
SE(AUC)Hanley-McNeil, §2.6.1AUC 추정치는 얼마나 정밀한가?n₁, n₀에 의존

진단 성능 결과 보고 점검표

장 요약

진단 성능 통계는 모두 혼동행렬의 네 칸에서 나온다. 민감도와 특이도는 이미 알려진 집단 안에서 검사를 기술하며 유병률에 의존하지 않는다. 예측도는 결과가 검사받은 사람에게 무엇을 뜻하는지를 기술하며 유병률에 크게 좌우되므로, 균형 설계 연구의 값을 그대로 읽을 것이 아니라 의도된 환경에 맞게 다시 계산해야 한다. 우도비는 각 환자의 검사 전 오즈에 작용하여 두 세계를 잇는다. ROC 곡선은 절충의 전 범위를 보여 주고, AUC는 이를 환자가 대조군보다 위에 놓일 확률로 요약하며, 절단값은 유든 지수·거리 기준·명시적 비용 모형·고정된 임상 목표 가운데 하나로 내리는 별도의 문서화된 결정이다. 마지막으로 모든 추정치에는 구간이 필요하고, 상관된 AUC에는 짝지은 검정이 필요하다.

제3장에서는 산술에서 그릇으로 옮겨 간다. 측정값, 참고구간, 그리고 이 장에서 다룬 계산의 결과를 저장하고 교환하는 WIA-BIO-004 JSON 레코드를 살펴본다. §2.6의 구간에 곧바로 기대는 표본 크기 설계는 제6장에서 다룬다.

복습 문제

  1. 환자 200명과 대조군 200명을 모집한 연구가 PPV 92 %를 보고하였다. 이 수치를 선별검사 프로그램에 인용할 수 없는 이유는 무엇이며, 다시 계산하려면 어떤 정보가 더 필요한가?
  2. Sens 84 %, Spec 90 %일 때 검사 전 확률이 5 %인 환자의 양성 결과 후 확률을 계산하라. 유병률 10 %에서의 PPV와 비교하라.
  3. §2.4.1의 예시 데이터에 값이 80인 대조군 한 명을 추가하라. 사다리꼴 공식과 환자-대조군 쌍 세기 두 방법으로 AUC를 다시 계산하고 둘이 일치하는지 확인하라.
  4. 응급실에서 쓸 배제용 검사라면 어떤 절단값 규칙을 택하겠으며 그 이유는 무엇인가? 그 선택을 감사할 수 있게 하려면 검증 연구에 무엇을 기록해야 하는가?
  5. 같은 환자 150명에게서 측정한 두 마커의 AUC가 0.82와 0.86이고 95 % 신뢰구간이 겹친다. 구간이 겹친다는 사실만으로 결론을 낼 수 없는 이유와 써야 할 검정을 설명하라.
  6. 민감도 48 / 50에 대해 Wald 구간보다 Wilson 구간이 권장되는 이유는 무엇인가? 각 방법이 주는 상한을 추정하고 결과를 논하라.