Bland-Altman
1. Bland-Altman 플롯이란?
만약 동일한 변수를(예: 혈압, 체온, 혹은 어떤 기기의 측정값 등) 두 가지 다른 측정 방법으로 측정한다면, 다음과 같은 쌍(pair) 데이터를 얻게 됩니다:
- = 측정 방법 1에 의한 측정값
- = 측정 방법 2에 의한 측정값
- Bland-Altman 방법은 이렇게 짝지어진 측정값 간의 차이(즉, 두 값이 얼마나 다른지)에 주목하며, 그 차이가 측정값의 크기(수준)에 따라 달라지는지를 살펴봅니다. 일반적인 형태는 다음과 같습니다:
- 두 측정값의 평균(Mean):
- 두 측정값의 차이(Difference):
자료에 따라서 형태로 정의하기도 합니다. 중요한 것은 일관성을 유지하는 것이며, 어느 방법의 측정값을 빼는지 명확히 정의해야 합니다.
- 플롯 구성:
- x축: (두 측정값의 평균) :
- y축: (두 측정값의 차이) : 결과적으로, 그래프의 각 점은 두 방법이 그 측정 수준에서 얼마나 멀리 떨어져 있는지를 보여줍니다.
2. 단순 상관계수 대신 왜 Bland-Altman 플롯을 사용하는가?
- 상관계수(예: Pearson의 r)는 두 측정 방법이
선형적으로 어떻게 관련``되어 있는지를 말해주지만, 실제로두 방법이 ``얼마나 일치``하는지 여부는 알려주지 않습니다. 예를 들어, 두 방법이 매우 높은 상관을 보이더라도, 한 방법이 다른 방법보다 일관되게 더 높게(또는 낮게) 측정하는 경우도 있습니다. - 반면, Bland-Altman 플롯은
평균적인 차이(편향, bias)를 직접 보여주고, 측정값이 큰 구간이나 작은 구간에서 그 차이가 달라지는지를 명확히 시각화해 줍니다.
3. Bland-Altman 플롯 구성하기
두 측정값 집합 이 있다고 가정합시다.
- 평균과 차이 계산:
- 산포도 그리기:
- x축(수평축) :
- y축(수직축) :
- 참조선(Reference lines) 추가:
- 평균 차이(mean difference): D‾\overline{D} 이는 모든 의 평균값으로, 두 방법 간 *전반적인 편향(bias)*을 의미합니다.
- 동의한계(Limits of Agreement, LoA): 보통 D‾±1.96×SD(D)\overline{D} \pm 1.96 \times \mathrm{SD}(D) 형태로 나타내며, 이는 차이값들이 정규 분포를 따른다고 가정할 때 약 95%의 차이가 포함되는 구간입니다.
- 상한(Upper limit of agreement):
- 하한(Lower limit of agreement):
이 구간(LoA)은 대략 95%의 차이가 이 범위 내에 있을 것임을 의미합니다. 범위가 좁을수록 두 방법의 일치도가 높고, 범위가 넓을수록 일치도가 낮습니다.
4. 해석
- 평균 차이(편향, bias): 가 0에 가깝다면, 큰 체계적 편향이 없음을 시사합니다(한쪽 방법이 일관되게 더 높지도, 더 낮지도 않음). 가 양수라면 평균적으로 방법 1이 방법 2보다 크게 측정한다는 뜻이고, 음수라면 그 반대를 의미합니다.
- 동의한계(LoA): 범위가 좁을수록 두 방법 간 일치도가 높습니다. 만약 임상적 또는 실제 적용 측면에서 어떤 특정 범위 이내로 차이가 허용되어야 한다면, 이 LoA가 그 범위를 초과하는지 여부를 확인할 수 있습니다.
- 범위 전반의 추세(Trend):
- 평균값이 커질수록 차이가 함께 커진다면, 이는 측정 수준이 높아질 때 두 방법 간 차이가 점점 커지는 비례적 편향(proportional bias)을 시사합니다.
- 점들이 무작위로 흩어져 있고 뚜렷한 패턴이 없다면, 전 범위에서 두 방법의 일치도는 비교적 균일합니다.
- 이상값(Outliers): 동의한계 바깥에 크게 벗어나는 점들이 있다면, 특별한 경우나 측정 오류가 있었을 수 있습니다.
5. 예시 (개념적 이해)
- 10명의 환자에 대해 혈압을 두 기기(방법 A와 방법 B)로 측정했다고 합시다. 각 쌍에 대해 평균과 차이를 계산합니다.
- Bland-Altman 플롯에서 평균 차이가 +5 mmHg, 95% 동의한계가 -2 mmHg ~ +12 mmHg라고 나온다면, 방법 A가 평균적으로 방법 B보다 5 mmHg 정도 더 높게 측정한다는 의미이며, 측정값의 차이는 95% 확률로 -2 mmHg에서 +12 mmHg 사이에 분포합니다. 임상적으로 ±5 mmHg 이내의 차이라면 수용 가능하다고 판단했을 때, 이 범위가 실제 95% 동의한계와 어떻게 비교되는지를 보고, 두 방법이 충분히 교환 가능(interchangeable)한지 판단할 수 있습니다.
6. 실무 적용 팁
- 정규성 가정(Normality assumption) 확인: LoA 계산 방식은 차이가 대략 정규 분포를 이룬다고 가정합니다. 만약 데이터가 정규 분포를 따르지 않는다면, 비모수적(non-parametric) 방법을 사용하거나, 데이터 변환(예: 로그 변환)을 고려해야 합니다.
- 비례적 편향(proportional bias) 확인: 를 에 대해 플롯했을 때 증가 추세나 특정 형태가 보인다면, 회귀(Regression) 접근법이나 비율(로그) 변환을 고려해볼 수 있습니다.
- 표본 크기(Sample size): 데이터가 많을수록 평균 차이와 동의한계를 더 안정적으로 추정할 수 있습니다. 데이터가 매우 적다면 추정값의 신뢰도가 낮아집니다.
- 반복 측정(Repeatability): Bland-Altman 방법은 동일한 방법으로 반복 측정된 값들 간의 변동(방법 자체의 반복성)을 평가하는 데도 활용할 수 있습니다.
7. 간단한 코드 예시
Python 코드
import numpy as np
import matplotlib.pyplot as plt
# 예시 데이터
x = np.array([10, 12, 13, 15, 18, 22, 25])
y = np.array([11, 11, 14, 14, 20, 23, 26])
# 평균과 차이 계산
M = (x + y) / 2.0
D = x - y
# 평균 차이와 표준편차
mean_diff = np.mean(D)
sd_diff = np.std(D, ddof=1) # 표본 표준편차를 위해 ddof=1
loa_upper = mean_diff + 1.96 * sd_diff
loa_lower = mean_diff - 1.96 * sd_diff
# 플롯
plt.scatter(M, D)
plt.axhline(mean_diff, color='blue', linestyle='-')
plt.axhline(loa_upper, color='red', linestyle='--')
plt.axhline(loa_lower, color='red', linestyle='--')
plt.title('Bland-Altman Plot')
plt.xlabel('Mean of Methods (M)')
plt.ylabel('Difference of Methods (D)')
plt.show()
8. 핵심 요점 (Key Takeaways)
- Bland-Altman 플롯은 두 측정 방법 간의 과 를 시각적으로 평가하는 방법입니다.
- 측정값의 범위 전반에 걸쳐 차이가 일정한지, 혹은 특정 범위에서 달라지는지를 확인할 수 있습니다.
- 단순 상관계수(correlation)만으로는 드러나지 않는, 일치도(agreement)를 평가하는 데 더 유용합니다.
결론적으로, Bland-Altman 플롯은 두 가지 측정 방법을 비교할 때 필수적인 도구입니다. 측정값의 평균 대비 차이를 그래프로 나타냄으로써, 체계적 편향의 유무를 평가하고, 측정값의 크기에 따라 일치도가 달라지는지, 그리고 전반적인 차이가 어느 정도인지 명확히 확인할 수 있습니다.