作者:王喜文# 董柏青 刘飞鹰 作者单位:(广西壮族自治区疾病预防控制中心 南宁530028)
【摘要】 目的:运用SAS程序实现两相关诊断试验ROC曲线下面积的计算和比较。方法:对两相关诊断试验RCO曲线面积的计算和比较过程编写SAS程序。结果:只要把两相关诊断试验各分类的数值按顺序输入相应数组,运行该程序即可得到ROC曲线面积及假设检验中间结果及最终结论。结论:编写的SAS程序具有较好的通用性、实用性、简便性和可操作性,而且还弥补了SPSS软件不能进行两诊相关诊断试验ROC曲线下面积比较的不足。
【关键词】 ROC曲线; SAS程序; 比较
计算ROC曲线下面积(记为AZ)可反映某个诊断试验的价值大小,还可比较两个试验的价值高低。为了准确地比较两种诊断试验的诊断价值,常常采用配对设计的方法来进行研究,即随机选择一些患者和非患者作为研究对象,对每一个研究对象同时用两种诊断试验进行诊断,此时两种试验的诊断结果具有一定的相关性,用ROC 曲线下面积来比较两诊断试验时要考虑到两面积间的相关性[1]。
但是目前较权威和常用的SPSS统计软件包和SAS统计没有提供两相关诊断实验曲线下面积比较的现成模块或过程,rockit 0.9β虽然可以进行两相关诊断试验曲线面积的比较,但是它只能用于符合参数法条件的资料,对于不符合条件的资料运用该软件将得到不正确的结果。为了弥补以上不足,笔者就非参数法两相关试验曲线下面积的比较编写了SAS程序。
1 ROC曲线下面积的计算及检验
1.1 原理及计算公式
假设有经过金标准的诊断方法判断为正常组的nn个标本,记为xnj(j=1,2,…, nn);异常组的na个标本,记为xai(i=1,2,…, na)。如果采用其它诊断方法对这些标本进行诊断,并将正常组和异常组分为若干类别,如果所属的类别较大为异常,可以证明,ROC曲线下面积(AZ)就是异常组观察值大于正常组观察值的概率,可用公式(1)计算:AZ=1nnnannj=1 nai=1φ(xnj,xai) (1)如果 xai>xnj,φ(xnj,xai) =1;如果xai=xnj,φ(xnj,xai)=0.5;如果 xai 如果样本所属类别较小为异常,则改变公式中的大于与小于符合即可。AZ的标准误SE(AZ)可按公式(2)计算:SE(Az)=Az(1-Az)+(na-1)(Q1-A2z)+(nn-1)(Q2-A2z)nnna(2)式中,Q1表示两个随机选择的异常组观察值比一个随机选择的正常组观察值都将有更大的可能分类为异常的概率,Q2表示一个随机选择的异常观察值比两个随机选择的正常组观察值都将有更大可能分类为异常的概率,Q1和Q2的算法见下例。
以上计算所得AZ是否与完全随机情况下获得的AZ=0.5间的差异有没有统计学意义,需做AZ=0.5的假设检验,检验统计量Z可用公式(3)计算:Z=Az-0.5SE(Az) (3)
1.2 ROC曲线下面积的计算及检验示例例
用诊断方法1和诊断方法2对先由金标准诊断方法判断为正常的58例标本及判断为异常的54例标本进行再次诊断,将诊断结果分为6类:1肯定正常、2可能正常、3正常可疑、4异常可疑、5可能异常和6肯定异常,结果见表1。
诊断方法2对正常组58 例标本和异常组54例标本按等级1~6进行分类后进行ROC曲线下面积及标准误的计算,结果见表2。表1 相同研究对象由两种不同诊断方法分类表2 诊断方法2 ROC曲线下面积及其标准误所需相关数据的计算利用上表数据获得计算AZ及其标准误所需的相关数据,其中第1,2行为基本数据,第3行是异常数大于该分类的筛选检查份数,它等于异常组总例数减该类及以下检查份数的和,第4行是正常组小于该分类的筛选份数,它等于正常组该类以下筛选检查份数的和,第5,6,7行利用第1~4行数据及相应各行所列公式计算获得。
AZ2=第5行合计/ nnna=0.9302Q1=第6行合计/ nnnana=0.8719Q2=第7行合计/ nnna=0.8965 将AZ值进行假设检验如下:H0:ROC曲线下面积是由完全随机情况下获得的,AZ=0.5 H1:ROC曲线下面积不是由完全随机情况下获得的,AZ≠0.5α=0.05SE2=0.0264Z2=16.2761 Z是正态离差,查μ界值表,得P<0.01,按α=0.05检验水准,拒绝H0,接受H1,可认为ROC曲线下面积不是由完全随机情况下获得的,根据所求得的AZ值为0.9302,AZ>0.9表示诊断价值较高。同理可得诊断方法1相应结果:SE1=0.0326 Az1=0.8828 Z1=11.7410,P<0.01,诊断价值较高。
1.3 ROC曲线下面积的计算及检验SAS程序
/*以下程序为适用于样本所属类别较大为异常,如样本所属类别较小为异常时,只需将正常组和异常组各分类数互换输入,其余相同*data roc;%let f=6; /*f为诊断试验的分类数*/ array xn(&f)( 31 19 5 3 0 0); /*正常组诊断方法2各分类的数值*/array xa(&f)( 3 2 5 19 15 10); /*异常组诊断方法2各分类的数值*/array ya(&f); /*异常组大于该分类的所有分类的数值和*/ array yn(&f); /*正常组小于该分类的所有分类的数值和*/array lfive(&f); /* 表格中第5行数值,由xn ya+ xn xa/2计算得到*/array lsix(&f); /* 表格中第6行数值,由xn(ya2+ ya xa+ xa2/3)计算得到*/array lseven(&f); /* 表格中第7行数值,由xa(ya2+ ya xa+ xa2/3)计算得到*/do i=1 to &f; num=0;do j=1 to i; num=num+xa(j); /*num为异常组小于等于第i类所有各类的数值和 */ end; ya(i)=sum(of xa(*))-num; /*计算异常组大于i类的所有分类的数值和*/ end;do i=1 to &f; mm=0; do j=2 to i;mm=mm+xn(j-1); /*mm为正常组小于该分类的所有分类的数值和*/end; yn(i)=mm; end;do i=1 to &f;lfive(i)=xn(i)*ya(i)+xn(i)*xa(i)/2; /*计算表中各分类第5行数据*/lsix(i)=xn(i)*(ya(i)**2+ya(i)*xa(i)+xa(i)**2/3);/*计算表中各分类第6行数据*/lseven(i)=xa(i)*(yn(i)**2+yn(i)*xn(i)+xn(i)**2/3);/*计算表中各分类第7行数据*/ end; Az=sum(of lfive(*))/(sum(of xn(*))*sum(of xa(*)));/*按公式计算曲线下面积*/Q1=sum(of lsix(*))/(sum(of xn(*))*sum(of xa(*))**2);/*Q1为第6行合计除以nnn2a 所得*/Q2=sum(of lseven(*))/(sum(of xn(*))**2*sum(of xa(*)));/*Q2为第7行合计除以n2nna 所得*/SE=sqrt(( Az *(1- Az)+(sum(of xa(*))-1)*( Q1- Az **2)+(sum(of xn(*))-1)*( Q2- Az **2))/(sum(of xa(*))*sum(of xn(*))));/*按公式计算曲线下面积Az的标准误 */Z=( Az -0.5)/SE; /*对曲线下面积Az进行假设检验 */ run;
1.4 计量资料ROC曲线下面积的计算及检验
计量资料ROC曲线下面积的计算,可看作是分类资料ROC曲线下面积计算的一个特例。首先根据所有样本测定值选择所有可能的截断点,如样本较大可根据实际要求精确的程度选择一定数量的截断点。对于每个截断点,分别清点正常组与异常组的观察例数,此时截断点相当于分类资料的类别,截断点数相当于分类资料的类别数,其余步骤与分类资料相同。
2 两相关诊断试验ROC 曲线下面积的比较
比较两个相关诊断试验ROC 曲线下面积间是否具有差异可按公式(4)计算Z统计量:Z=|Az1-Az2|SE21+SE22-2rSE1SE2 (4)其中Z 是正态离差值,AZ1 和AZ2 是两诊断试验的曲线下面积,SE1 和SE2 是其对应的标准误。r 是两个ROC曲线下面积间的相关系数,它的计算需要首先求得正常组的两诊断试验间相关系数rn 和异常组的两诊断试验间的相关系数ra 。两者的计算可采用传统的Pearson 积差法和Kendal tau等级相关法,前者适用于连续性资料,后者适用于等级资料,常用统计软件包如SAS、SPSS 均可计算。以两诊断试验平均相关系数(rn+ra)/2 和平均面积(Az1+Az2)/2 查表3 得r 值。表3 两个ROC曲线下面积估计值间的相关系数
2.1 计算两诊断方法AZ及SE(SAS程序见1.3)
将两种诊断方法的正常组及异常组各分类数据先后输入SAS程序xn数组和xa数组,运行SAS程序后可得AZ1=0.8828,SE1=0.0326, AZ2=0.9302, SE2=0.0264,平均面积(Az1+Az2)/2=(0.8828+0.9302)/2=0.9065。
2.2 计算两诊断方法在正常组和异常组间的Kendal相关系数
先后将正常组及异常组两种诊断方法各分类的数据输入后SAS程序中,运行程序后可得出:rn=0.3920, ra=0.7034。平均相关系数为:(rn+ra)/2=0.5477 ,又有(Az1+Az2)/2=0.9065 ,查表3可得r=0.45。计算Kendal相关系数的SAS程序如下:data;do x=1 to 6; do y=1 to 6;input freq @@; output; end; end; cards;9 3 0 0 0 017 9 2 0 0 03 4 1 0 0 01 2 2 1 0 01 1 0 2 0 00 0 0 0 0 0;proc corr kendall;freq freq;run;
2.3 两相关诊断方法ROC曲线下面积比较
将前面计算所得AZ1=0.8828 SE1=0.0326 , AZ2=0.9302 , SE2=0.0264,r=0.5477 代入两相关诊断方法ROC曲线下面积比较SAS程序中,可得Z=1.5102 , Z<1.96, 所以P>0.05 ,可得出两诊断方法ROC曲线下面积差异无统计学意义。
两相关诊断方法ROC曲线下面积比较SAS程序如下:data;Z=abs(Az1-Az2)/sqrt(SE1**2+SE2**-2*r*SE1*SE2);run;如果比较的两个诊断试验是独立的,可令r=0,即采用Z=Az1-Az2SE21+SE22 进行统计学检验。
3 讨论
一项新的诊断试验的诊断性能如何,它能否替代旧的诊断试验,这在很大程度上依赖于新的诊断试验的准确度大小。诊断试验的准确度评价指标有灵敏度、特异度、一致率、优势比、Youden指数、ROC曲线下面积、似然比等等,而其中的ROC 曲线下面积指标因其不受患病率和诊断界值的影响,以及可对两个诊断试验的准确度进行综合比较,因而成为目前公认的最佳评价指标[3]。ROC 曲线下面积作为诊断试验真实性评价的固有准确度指标已被普遍认可,完全无价值的诊断试验曲线下面积为0.5 ,理想的诊断试验曲线下面积为1 ,而一般认为对于一个诊断试验,ROC 曲线下面积在0.5~0.7 之间时诊断价值较低,在0.7~0.9 之间时诊断价值中等,在0.9 以上时诊断价值较高[4] 。本研究得出诊断方法1和诊断方法2曲线下面积分别为0.8828和0.9302,经检验两方法均具有中高度的诊断价值。再对两诊断方法诊断价值进行比较后,P>0.05,可认为两诊断方法的诊断价值差别无统计学意义。
笔者编写的SAS程序具有通用、简便和实用和可操作强的特点,具有一定的运用价值。鉴于目前较为流行和权威的SPSS统计软件包和SAS统计软件包都没有提供采用非参数法对两相关诊断试验曲线下面积比较的模块或是过程,手工计算计算量很大,费时费力而且容易出现错误,笔者对两诊断试验ROC曲线下面积的比较编写了SAS程序,并在程序中附上了SAS语句的详细注释。通过运行SAS程序对两相关诊断试验的ROC曲线下面积进行比较,结果显示:整个评价过程非常简单和快速,只需要更改分类资料中的分类数或是计量资料中的截断值个数(如果异常为分类较小时,可将正常组和异常组的数据互换),再将原始数据输入SAS程序中的相应数组,运行SAS程序便可很快得到两诊诊断试验的曲线下面积及相应标准误。之后运行SAS程序分别求正常组及异常组两诊断方法间的kendal相关系数rn和ra并计算平均相关(rn+ra)/2。再根据平均相关和平均面积查表得出两相关试验方法ROC曲线下面积的相关系数r。最后把面积AZ、标准误SE、相关系数r代入SAS程序便可得出两诊断方法ROC曲线下面积比较的统计量Z值及P值。可见笔者编写的诊断试验可靠性评价SAS程序具有通用、简便和实用和可操作强的特点,在实际进行两诊断试验ROC曲线下面积比较的工作实践中具有一定的运用价值。
【参考文献】 1 DeLong ER , DeLong DM , Clarke2Pearson DL. Comparing the areas under two or more correlated receiver operating characteristic curves : a nonparamet ric approach. Biomet rics , 1988 , 44 : 837~845.
2 Hanley JA,McNeil BJ. A method of comparing the areas under a receiver operating characteristic curves derived from the same cases. Radiology 1983,148:839~843.
3 傅华,主编. 预防医学. 第4版. 北京: 人民卫生出版社,2004,318~323.
4 余松林. 医学统计学. 北京: 人民卫生出版社, 2002,164~178. |