专栏首页数据医生专栏用Pythn进行简单的Bland-Altman分析

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

参考资料:

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

在医学中,经常会遇到评价两种或多种检测、测量方法结果一致性(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法还有许多需要注意到的点,在此暂不做进一步深入讨论。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SELECT from world | SQL刷题

    Observe the result of running this SQL command to show the name, continent and p...

    数据医生
  • 用Python验证指数基金定投策略

    运行代码之后返回到Jupyter Notebook的主页,就能看到保存的000300.csv文件,可以下载到本地进行操作,也可以直接在聚宽的研究环境中进行操作。...

    数据医生
  • SQL复杂查询

    注意:SELECT语句中列的排列顺序和视图中列的排列顺序相同,SELECT语句中的第1列就是视图中的第1列,以此类推。视图的列名在视图名称之后的列表中定义。

    数据医生
  • 麻省理工提出快速设计与制造机器人的新方法

    尽管机器人在世界各地变得越来越常见,但要制造它们仍然很难。从设计建模到制造测试,整个过程缓慢且昂贵:即使是一个小的改动也可能意味着需要几天或几周的时间来重新思考...

    人工智能快报
  • 哪些算法和数据结构是程序员需要掌握的?

    作为一名程序员,大家有没有想过:编码最本质的知识是什么?算法和数据结构或许是,至少很多人这么认为。很多程序员也意识到了算法和数据结构的重要性,下定决心花力气学习...

    double
  • 工程能力UP!| LightGBM的调参与并行

    【这里必须说一下,lightbg的参数的同义词实在太多了,很多不同的参数表示的是同一个意思,不过本文中使用“/”分开】

    机器学习炼丹术
  • Redux 入门教程(二):中间件与异步操作

    上一篇文章,我介绍了 Redux 的基本做法:用户发出 Action,Reducer 函数算出新的 State,View 重新渲染。 ? 但是,一个关键问题没有...

    ruanyf
  • K8S 分布式构建 Docker 镜像的一些小技巧

    崔秀龙
  • 入门 | 6大最流行、最有用的自然语言处理库对比

    现在自然语言处理(NLP)变得越来越流行,这在深度学习发展的背景下尤其引人注目。NLP 是人工智能的一个分支,旨在从文本中理解和提取重要信息,进而基于文本数据进...

    机器之心
  • BMC Medicine:自闭症谱系障碍静息态EEG信号的定量递归分析​

    自闭症谱系障碍(ASD,Autism spectrum disorder )是一种神经发育障碍,患病率为1-2%。特别是在低资源环境中,对ASD的早期识别和诊...

    用户1279583

扫码关注云+社区

领取腾讯云代金券