在医学研究或平时的日常工作中,同一个指标有多重检测/测量方法,两种方法结果一致性怎么样?该如何评价?
一致性检验的方法有很多,但侧重点不同:
其中,对于定量数据,Bland—Altman plot 的使用尤为广泛。Bland—Altman分析最初是由Bland JM和AltmanDG于1986年提出的,其基本思想是计算出两种测量结果的一致性界限(limits of agreement),并用图形的方法直观地反映这个一致性界限。
Bland-Altman plot 作图方法是以两个指标的均值作为横坐标,两个指标的差值作为纵坐标,然后比较散点在差值±1.96SD线内分布的情况。
例:A、B两种方法测定100名患者的血红蛋白(g/L),对两种方法一致性进行评价。
1.R软件实操如下:
1.导入数据
data<-read.delim("clipboard")
View(data)
2.安装包
library(ggplot2)
library(ggExtra)
3.分别计算A和B的差值和平均值,生成新变量
BAdata2<-transform(data,diff=A-B,meand=(A+B)/2)
View(BAdata2)
4.计算差值的平均值和标准差(SD)及1.96SD
describe(BAdata2)
t.test(BAdata2$diff)
可以看到差值(diff)的均值和SD分别为-2.43、51.48。
5.绘图(绘制横坐标为均值,纵坐标为差值的散点图)
BAplot<-ggplot(BAdata2,aes(meand,diff))+
geom_point(shape=18,color="blue")+
geom_hline(yintercept= 0,lty=3,lwd=1,color="black")+
geom_hline(yintercept= mean(BAdata2$diff),lty=1,lwd=1,color="red")+
geom_hline(yintercept=mean(BAdata2$diff)+1.96*sd(BAdata2$diff),linetype=2,color="red")+
geom_hline(yintercept=mean(BAdata2$diff)-1.96*sd(BAdata2$diff),linetype=2,color="red")
6.在以上基础上继续完善,添加标记
+labs(x="(A+B)/2",y="A-B")+
theme(axis.line.x = element_line(color="black"),
axis.line.y = element_line(color="black"))+
theme(axis.text=element_text(face="bold"),
axis.title.x=element_text(size=15,face="bold"),
axis.title.y =element_text(size=15,face="bold"))+
geom_text(x=150, y=80, label="+1.96SD\n98.47",cex=3.5,family="serif")+
geom_text(x=150, y=-80, label="-1.96SD\n-103.33",cex=3.5,family="serif")+
geom_text(x=150, y=30, label="Mean=-2.43\n95%CI(-12.65,7.79) ",cex=3.5,family="serif")
7.更换主题,并增加密度分布直方图
BAplot1 <- BAplot+theme_bw()
ggMarginal(BAplot1, type="histogram",bins = 40,fill="grey")
上图中,红色实线为差值的均值,黑色虚线差值为0,上下红色虚线为差值±1.96SD(95%LoA上/下限)。由图看出有95个点落在95%一致性界限(95% limits of agreement,95% LoA)内,说明二者一致性可接收,平均负向偏移为2.43g/L。
★Bland-Altman 在实际应用中须满足以下条件,结果更具说服力:
(1)Bland-Altman图中数据点呈水平带状分布,即差值和均值之间不存在任何线性或非线性关系,可以通过差值与均值的回归分析进行判定;
(2)Bland-Altman图中数据点散在分布于等宽的水平区域内,即满足差值的方差齐同;
(3)原始结果可以不是正态分布,但差值的分布须呈正态分布,通过直方图(或P-P图/Q-Q图)和正态性检验判定。