李太顺 刘 沛
东南大学公共卫生学院流行病与卫生统计学系(210009)
【提 要】 目的 探讨SAS宏包解决医学诊断数据中常见ROC曲线绘制以及曲线下面积比较的简单实现。方法 采用介绍的SAS宏包,对青少年儿童高血压样本数据,分别选择几种常见最佳截断点方法进行比较分析,并进行各指标曲线下面积比较分析。结果 rocplot与roc宏包不仅给出了不同截断点选择方法所对应的结果以及曲线下面积比较的结果,还给出了相应可视化图形。结论 rocplot与roc宏包使用方便,功能丰富,在指定相应参数情况下可完成最佳截断点选择以及曲线下面积比较的问题,对非统计专业的用户有较好的适用性。
诊断试验评价是医学研究的重要组成部分,在医学诊断试验中,常用灵敏度和特异度作为评价诊断试验的准确度指标。但其值依赖于截断点,截断值的改变会引起灵敏度与特异度值的变化。如何综合灵敏度与特异度,并且反映截断点诊断价值就成了诊断试验评价中的重要问题。受试者工作特征曲线(receiver operating characteristic curve,ROC)是解决此类问题的有效方法[1]。ROC是以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的曲线。ROC将灵敏度与特异度以图示方法结合在一起,可直观反映某方法不同截断点下灵敏度与特异度的关系,为选择最优截断点即诊断临界点提供依据,同时ROC下面积(area under the ROC curve,AUC)可用来评价诊断试验的准确性[3]。ROC是目前公认的评价诊断试验准确性最佳的方法之一[4]。
在临床诊断试验评价中,SAS是目前公认的权威软件,虽然通过编程可实现ROC分析的功能,但编程过程繁琐,不便非统计专业人员应用。SAS宏包可将复杂的程序打包,用户无需掌握编程过程,调用时只需赋值各参数值,应用于自己的数据即可。国内有学者关于ROC分析SAS实现的文献报道[5-6],但并未见介绍SAS宏包在诊断试验评价中的应用,本文以实例在SAS软件中使用SAS宏包实现诊断试验评价的最佳截断值点的选择和曲线下面积比较的过程,为广大医务工作者提供参考,也为SAS在诊断试验评价应用中的推广提供思路。
本文主要介绍SAS官网中提供的关于ROC分析的两个宏程序包:第一宏包名称rocplot,适用于ROC曲线的绘制及最优截断点选择,下载地址为:http://support.sas.com/kb/25/018.html;第二个宏包名称为roc,适用于两诊断实验曲线下面积比较,下载地址为:http://support.sas.com/kb/25/017.html。建议下载文件后储存为SAS格式:rocplot宏包命名为rocplot.sas;roc宏包命名为roc.sas。本文所介绍的宏包适用于SAS 9.3及以上版本。
数据源于芜湖市城区7~17岁学龄儿童体检数据,目的是研究肥胖指标对青少年高血压的鉴别诊断能力,并对各参数的诊断价值作比较。数据形式见表1,数据加载命令如下:
libname data "C:UserssumsungDesktop ocdata";
*:(id:样本编号;gender:性别;age:年龄;result:结局;weight:体重;waistline:腰围;hipline:臀围)
(1)绘制ROC并寻找最佳截断点
以指标hipline采用“Youden指数最大法”计算最佳截断点为例:
步骤1:加载rocplot宏包,将rocplot.sas宏包加载到SAS中。
%include "C:UserssumsungDesktop oc ocmacro ocplot.sas";
注释:%include “宏包所处的位置目录”。
步骤2:运行proc logistc语句,将结果输出为rocplot宏包使用作准备。
proclogistic data=bp;
model result(event="1")=hipline /outroc=roc1 roceps=0;
output out=outp p=phat;
run;
注释:在本例中研究因素为hipline,结局变量为result,result变量中“1”视为高血压发生,绘制ROC曲线所需的数据输出为roc1数据集,每个观测值hipline的预测概率数据输出为outp数据集,并将预测概率命名为phat。
步骤3:调用rocplot宏,绘制ROC曲线,以“Youden指数最大法”选择最佳截断点。
%rocplot(inroc=roc1,inpred=outp,p=phat,
id=hipline _cutpt__opty_,
optcrit= youden,x=hipline)。
注释:inroc=绘制ROC曲线所需数据集;inpred=观测值预测概率值数据集;p=预测概率值变量名称;id=ROC曲线图上显示的变量名称(此处显示腰围值、切点值、Youden指数值);optcrit=最佳切断点选择标准(此处为Youden指数);x=选择标准所适用对象(此处为hipline)。
步骤4:查看并解释相应结果。
rocplot宏包语句的结果给出了信息全面的ROC曲线图以及最佳截断点的选择结果,以hipline为诊断指标,以“Youden指数”最大为评价标准,则切点值选择为0.12258,对应的hipline为83,Youden指数为0.2261,详见图1。
图1 腰围hipline诊断青少年高血压的ROC曲线图
(2)两相关指标曲线下面积(AUC)的比较
步骤1:加载roc宏包,将roc.sas宏包加载到SAS中
%include "C:UserssumsungDesktop oc ocmacro oc.sas";
注释:%include “宏包所处的位置目录”。
步骤2:分别以age变量和hipline变量运行proc logistic语句
SAS程序参照上述第二步,绘制ROC曲线所需的数据集分别保存为roc1_age和roc1_hipline,预测概率数据集保存为outp_age和outp_hipline,预测概率命名为phat_age和phat_hipline。
步骤3:调用roc宏,绘制ROC曲线,比较曲线下面积
%roc( data=outp_ageoutp_hipline,var=age hipline,response=result)
注释:data=比较数据集来源,var=比较变量,response=结局变量。
步骤4:查看并解释相应结果
曲线下面积比较结果发现臀围的AUC大于年龄的AUC,差异有统计学意义(P<0.0001),臀围的诊断价值大,详见表2与图2。
表2 两相关指标曲线下面积比较结果
图2 两相关指标ROC曲线比较图
由于SAS宏包中的宏参数较多,用户在选择时存在困难。针对上述问题,本文事先在外部excel文件中列出宏包中所有宏参数列表,并列出默认值和解释说明,外部宏参数表相应框架格式见表3。用户根据说明在参数列表中选择相应参数并赋值,然后再使用SAS语句将外部excel参数表导入SAS中与宏包连接起来使用,大大简化了用户的操作难度。下面以rocplot宏包使用为例,具体实现过程如下:
%macrorocone(address1,dataset,result,name,address2,value);
/*第一步将rocplot.sas程式预先读入SAS中*/
%include "& address1";
/*第二步执行proc logistic 语句,输出结果,以供rocplot.sas程式应用*/
databp;
set& dataset;
run;
proc logistic data=bp;
model& result(event="1")=& name /outroc=roc1 roceps=0;
output out=outp p=phat;
run;
proc import datafile="& address2"/*将外部参数表格导入/
out=shun
dbms=excel
replace;
sheet=sheet1;
run;
data _null_;
set shun;
callsymputx(parname,& value);
run;
/*第三步为调用rocplot宏程序*/
title"ROC plot for result=& name";
%rocplot(inpred =& inpred,inroc=& inroc,p=& p,id= & id,idstat=& idstat,format=& format,charlen=& charlen,split=& split,thinsens=& thinsens,thiny=& thiny,optcrit=& optcrit,costratio=& costratio,pevent=& pevent,optbyx=& optbyx,x=& x,multoptplot=& multoptplot,multoptlist=& multoptlist,plottype=& plottype,linestyle=& linestyle,labelstyle=& labelstyle,optsymbolstyle=& optsymbolstyle,markerstyle=& markerstyle,markers=& markers,marker=& marker,offsetmin=& offsetmin,offsetmax=& offsetmax,grid=& grid,altaxislabel=& altaxislabel)
%mendrocone;
注释:address1=宏包rocplot的物理地址,dataset=要分析的数据集,result=分析的因变量,name=要分析的自变量,address2=外部宏参数表excel存放的物理地址,value=选择的外部参数表中赋值的列(用户可同时赋值多个列)。
表3 外部参数表框架结构
本文ROC曲线下面积估计采用非参数法[7],根据实验结果直接计算绘制出ROC曲线所需的工作点(灵敏度、1-特异度),绘制出ROC曲线,再由梯形规则计算出相应的曲线下面积,与患者和非患者实验结果秩和检验的Mann Whitney统计量相等,其优点是没有限制条件,适用于任何诊断试验ROC曲线下面积的估计。两相关ROC曲线下面积比较采用非参数检验方法[8],不适用于两独立ROC曲线下面积比较。
目前进行ROC曲线分析的软件主要有SPSS软件、SAS软件、R软件[9]和ROC曲线分析专用工具ROCKIT等。但上述软件要么在截断点选择和曲线下面积比较功能上存在不足,要么就是对数据资料存在限制或需要繁琐的编程。SPSS软件虽然可以绘制ROC曲线,但没有最优截断点选择和两相关诊断实验曲线下面积比较的模块,ROCKIT等ROC曲线分析专用软件虽然可以实现上述功能但对资料存在限制,仅适用于符合参数法条件的资料[10]。R软件在实现两诊断实验曲线下面积比较时需调动OptimalCutpoints包、Daim包、ROCR包或PROC包,过程过于繁琐[11]。SAS软件虽然也无ROC分析的专用模块,实现过程需要复杂的编程,但SAS宏包克服了上述不足,其方法和SAS程序简单方便。此外本文提出在外部建立宏参数表与SAS宏包配合使用的方法,方便了用户进行参数设置,降低了操作难度并适用于大批量作业分析。综上所述,利用SAS宏包技术完成诊断试验评价的过程既可以保证数据结果的权威,又可克服编程的困难。
本文介绍的SAS宏包功能强大,文章仅介绍了rocplot宏在Youden指数最大准则下最佳截断值选择的功能实现,临床上选择标准有很多,如正确区分率、灵敏度与特异度的绝对差值以及成本效益。rocplot宏可实现多种标准准则选择最佳截断点,并可做相应比较,roc宏可实现不同竞争模型ROC曲线下面积的比较,由于篇幅有限具体实现请参阅官网介绍。