参考资料:
在医学中,经常会遇到评价两种或多种检测、测量方法结果一致性(agreement)的问题。一般情况下,其中一种方法是目前广泛应用的被称为“金标准”的方法,而另一种则是更先进、更便于应用的方法。通过对两种测量方法进行一致性评价可以回答“这两种方法能否相互替代”这样的问题, Bland-Altman正是广泛使用的一种一致性评价方法。
原理和方法
基本思想:计算出两种测量结果的一致性界限(limits of agreement),并用图形的方法直观地反映这个一致性界限。最后结合临床实际,得出两种测量方法是否具有一致性的结论。
1.一致性界限
进行两种方法的测定时,通常是对同一批受试对象进行测量。这两种方法一般不会获得完全相同的结果,总是存在着一定趋势的差异,如一种方法的测量结果经常大于(或小于)另一种方法的结果,这种差异被称为偏倚(bias)。
偏倚可以用两种方法测定的结果的差值的均数进行估计,的变异情况则利用差值的标准差来描述。
如果差值的分布服从正态分布,则95%的差值应该位于和之间。我们称这个区间为95%的一致性界限,绝大多数差值都位于该区间内。
如果两种测量结果的差异位于一致性界限内在临床上是可以接受的,则可以认为这两种方法具有较好的一致性,这两种方法可以互换使用。
当样本量较小时,抽样误差会相对较大,因此还要给出95%一致性界限的上下限的置信区间。差值均数的标准误,一致性界限的上、下限的标准误近似等于,则可以分别计算出一致性界限上限的95%置信区间和下限的95%置信区间。
2.一致性界限的图形表示——Bland-Altman图
Bland-Altman法可以通过Bland-Altman图进行一个直观的展示:
-
x轴表示两种方法测量每个对象的平均值;
-
y轴表示两种方法测量每个对象的差值;
-
上下两条水平实线代表95%一致性的上下限;
-
中间实线代表差值的均数,虚线代表差值均数为0。
根据95%一致性界限外的数据点数和一致性界限内的最大差值,以及临床上的可接受程度,对待评价的两种方法的一致性做出评价。
简单实例分析
1.原始数据
通过pandas
简单构造出16组数据,如下图DataFrame
所示:
“y_true”列为参考值,而“y_pred”则为测量值。
2.用差值进行Bland-Altman分析
计算“y_true”列和“y_pred”列差值结果如下:
通过describe()
函数,我们可以看到两组数据差值的情况大概如下:
-
差值的均数:
-
差值的标准差:
-
95%一致性界限:,即(-31.73,24.53)
通过下面的Python代码,我们可以绘制Bland-Altman图:
def bland_altman_plot(data1, data2, *args, **kwargs):
data1 = np.asarray(data1)
data2 = np.asarray(data2)
mean = np.mean([data1, data2], axis=0)
diff = data1 - data2 # Difference between data1 and data2
md = np.mean(diff) # Mean of the difference
sd = np.std(diff, axis=0) # Standard deviation of the difference
plt.scatter(mean, diff, *args, **kwargs)
plt.axhline(md, color='gray', linestyle='--')
plt.axhline(md + 1.96*sd, color='red')
plt.axhline(md - 1.96*sd, color='red')
差值的Bland-Altman图如下:
从图中可以看出,1/16的点在95%一致性界限以外;在一致性界限范围内,差值的绝对值最大为23.21。由于两种测量结果最大相差23.21,两种方法测量结果平均为115.99,这种相差的幅度在临床上是可以接受的,因此可以认为两种方法具有较好的一致性,在临床上可以互相代替。
小结
本文只是对Bland-Altman法进行了一个简单的介绍,同时介绍了Python绘制Bland-Altman图的方法,而Bland-Altman不仅有差值的分析方法,也有比值的分析方法,除此之外,Bland-Altman法还有许多需要注意到的点,在此暂不做进一步深入讨论。
网友评论