【统计联盟原创---小青龙 李】用sas做roc曲线
SAS宏包将复杂的编程程序打包,小伙伴们无需掌握编程过程,调用时只需知道各参数的意义,相应的应用于自己的数据即可。在此我将以实例在SAS软件中使用SAS宏包实现诊断试验评价的最佳截断值点的选择,为小伙伴们提供参考。也不用手动去找最佳切值点了,而且你还可以有多种选择去决定你的切值点。此外,你的ROC曲线颜值也会飙升哦。
1.sas宏程序包的下载与安装
本文主要介绍SAS官方网页中提供关于ROC分析的两个宏程序包:第一宏程序包名称rocplot,适用于ROC曲线的绘制及最优截断点选择;第二个宏程序包名称为roc,适用于两相关诊断实验曲线下面积比较。在将相应宏包下载到本地后,建议修改文件名并储存为SAS格式:rocplot宏程序包下载后更改为rocplot.sas;roc宏程序包下载后更改为roc.sas。本文所介绍的宏包适用于SAS9.3及以上版本。
2.数据来源与加载
本文数据来源于芜湖市城区7-17岁学龄儿童体检数据,其目的是研究肥胖指标对青少年高血压的鉴别诊断能力及各参数的截断值,并对各参数的诊断价值作比较。数据形式见表1。具体加载方式:启动SAS软件,打开永久性数据库,如本文中的bp数据集存放地址为:C:\Users\sumsung\Desktop\roc\data。具体命令如下:
libname data "C:\Users\sumsung\Desktop\roc\data";
表1 数据库格式
3.数据分析
在进行数据分析之前,需要加载调用之前保存的宏程序包。
(1)绘制ROC并寻找最佳截断点
以肥胖指标hipline(臀围)采用 “Youden指数最**”计算最佳截断点为例:
步骤1:加载rocplot宏包,将rocplot.sas宏包加载到SAS中
%include "C:\Users\sumsung\Desktop\roc\rocmacro\rocplot.sas";
注释: %include “宏包所处的位置目录”。
步骤2:运行proc logistc语句,将结果输出为rocplot宏包使用作准备
proc logistic 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指数最**”选择最佳截断点
title "ROC plot for result = hipline";
%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:查看并解释相应结果
① proc logstic语句运行的结果给出了hipline作为自变量,result为因变量的logistic回归结果(见表2)以及相应的ROC曲线图(见图1)。
表2 高血压影响因素hipline的logistic回归分析
图1 腰围hipline诊断青少年高血压的ROC曲线图
② rocplot宏包语句的结果给出了信息更加全面的ROC曲线图以及最佳截断点的选择结果,以Hipline为诊断指标,以”Youden指数”最大为评价标准,则切点值选择为0.12258,对应的Hipline为83,Youden指数为0.2261。详见图2与表3。
表3 最佳截断点筛选结果表
申明:本文由作者原创,旨在介绍推广实用统计方法,未经同意,不得转稿