美文网首页
用Pythn进行简单的Bland-Altman分析

用Pythn进行简单的Bland-Altman分析

作者: 活用数据 | 来源:发表于2019-12-14 21:43 被阅读0次

    参考资料:

    Bland-Altman分析在临床测量方法一致性评价中的应用
    bland-altman-plot-in-python

    在医学中,经常会遇到评价两种或多种检测、测量方法结果一致性(agreement)的问题。一般情况下,其中一种方法是目前广泛应用的被称为“金标准”的方法,而另一种则是更先进、更便于应用的方法。通过对两种测量方法进行一致性评价可以回答“这两种方法能否相互替代”这样的问题, Bland-Altman正是广泛使用的一种一致性评价方法

    原理和方法

    基本思想:计算出两种测量结果的一致性界限(limits of agreement),并用图形的方法直观地反映这个一致性界限。最后结合临床实际,得出两种测量方法是否具有一致性的结论。

    1.一致性界限

    进行两种方法的测定时,通常是对同一批受试对象进行测量。这两种方法一般不会获得完全相同的结果,总是存在着一定趋势的差异,如一种方法的测量结果经常大于(或小于)另一种方法的结果,这种差异被称为偏倚(bias)。
    偏倚可以用两种方法测定的结果的差值的均数\overline{d}进行估计,\overline{d}的变异情况则利用差值的标准差S_d来描述。

    如果差值的分布服从正态分布,则95%的差值应该位于\overline{d}-1.96S_d\overline{d}+1.96S_d之间。我们称这个区间为95%的一致性界限,绝大多数差值都位于该区间内。

    如果两种测量结果的差异位于一致性界限内在临床上是可以接受的,则可以认为这两种方法具有较好的一致性,这两种方法可以互换使用。

    当样本量较小时,抽样误差会相对较大,因此还要给出95%一致性界限的上下限的置信区间差值均数的标准误SE(\overline{d})=\frac{S_d}{\sqrt{n}},一致性界限的上、下限的标准误近似等于1.71SE(\overline{d}),则可以分别计算出一致性界限上限的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()函数,我们可以看到两组数据差值的情况大概如下:

    • 差值的均数:\overline{d}=-3.16

    • 差值的标准差:S_d = 14.35

    • 95%一致性界限:-3.16 \pm 1.96*14.35,即(-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法还有许多需要注意到的点,在此暂不做进一步深入讨论。

    相关文章

      网友评论

          本文标题:用Pythn进行简单的Bland-Altman分析

          本文链接:https://www.haomeiwen.com/subject/qsyhnctx.html