但是其实通过SAS的宏程序,我们可以轻松的做出你想要的ROC曲线图,而且功能十分丰富。
宏程序SAS官网有提供下载→http://support.sas.com/kb/25/018.html#req
有一定英语基础的朋友可以阅读其Result页面的例子介绍,看完介绍后你也基本上就能搞懂大部分的功能了。
接下来我们就直入正题,如何作图:
我们先来看下效果图:
第一张为SAS默认样式,后两张为利用宏程序画出的ROC曲线
首先我们需要将宏文件下载,保存为rocplot.sas文件。
然后在SAS中调用该宏
- %inc 'C:\SAS\Marco\rocplot.sas';*import the macro, 引号内的为宏文件的路径;
- proc logistic data=dateset des;*dataset为你的数据集名称;
- model Y=x/ outroc=roc1 roceps=0;*绘制ROC曲线所需的数据集为roc1;
- output out=out p=phat;*每个观测值x的预测概率输出到out数据集,并重命名为phat;
- run;
- title "ROC plot for ";
- title2 ""
- %rocplot( inroc = roc1,inpred = out, p = phat,
- id = x _sens_ _spec_,
- optcrit=correct youden , x=x)
- /*inroc=绘制ROC曲线所需的数据集*/
- /*inpred=观测值预测概率值数据集*/
- /*p=预测概率值变量名*/
- /*id=ROC曲线上切点显示的标签(此处显示x实际值、灵敏度、特异度、正确率、Youden指数)*/
- /*optcrit=最佳切断点选择标准(此处为正确率、Youden指数)*/
- /*x=切点选择对应的变量*/
幸运的是,通过SAS的提示发现是lineparm这个语句9.2不识别,通过series语句替代后,在9.2上成功运行。
相应版本的宏文件请见附件,下载后将文件名改为rocplot.sas或者修改导入宏步骤的路径名为现文件名即可。
相应的SAS官网的宏程序介绍我也以word文档的形式上传了附件,文末还有修改语句以适配9.2版本的过程,感兴趣的朋友可以阅读。
- rocplot (for version 9.2).sas
- rocplot (for version 9.3 or above).sas
希望这个宏程序的分享能够帮助到你,让你在使用SAS的过程中能更高效,如果你有什么好的宏程序也可以分享出来,大家互相学习:P
P.S.
大家在SAS作图的时候应该有一个共同的感受就是SAS默认的图片像素很低,这是因为程序默认输出的分辨率较低造成的。
可以通过语句重新定义图片的像素,一般设置为300dpi就ok了。
该语句同样可以修改图片的尺寸,解决了小图文字不可读的问题。/height=2in 设置为2in正好可以在word中并排放两张图。
具体可以参见→https://blogs.sas.com/content/graphicallyspeaking/2012/03/22/high-quality-graphs/
- %let gpath='D:\SAS Graph';*定义路径;
- ods listing image_dpi=300 gpath=&gpath;*;
- ods graphics /height=2in;*设置图片分辨率 DPI=300 及路径。/height=设置图片尺寸 保证文字的可读性;