全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
10918 14
2010-12-04
悬赏 500 个论坛币 未解决
请求画出诊断指标的ROC曲线面积的SAS程序以及多个不同诊断指标的ROC曲线两两比较的SAS程序,以及这多个诊断指标ROC曲线比较无意义时,请写出它们各自等效性检验的SAS程序,我要急用,请各位高手指点!谢谢!补充一下,如果高手觉得满足我的全部要求有困难,那就请您能写多少算多少,我最后还是会把写得最多最好的那位高手的答案选为最佳答案!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-12-5 22:50:12
谢谢大家,我刚刚搜索了一下,发现我可以用Medcalc软件解决我的问题,大家可以试一试,界面友好!当然如果哪位高手能够用SAS程序解决我的问题,我还是会把他的答案设为最佳答案!谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-12-6 00:16:21
各位高手,我还有一个问题,就是用medcalc软件怎样计算两条ROC曲线有交叉时的两两比较,后者说如果Medcalc软件无法计算两条ROC曲线有交叉时的两两比较时,可用什么软件,谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-12-16 11:05:02
我也想知道,我的数据有好几万,用medcalc做不了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-12-16 16:15:54
用SPSS检验过正确,你试试看,别忘了付钱
%macro ROC(variable=,binary=,intable=,outtable=);
option notes=1;
proc sql;
    create table &outtable.
    (FLAG char(20)
    ,VAR char(20)
    ,ROC  num
    ,constraint ok_roc  check(roc  between 0.5 and 1)
    );
quit;
proc sql noprint;
    create table temp_1 as
    select &variable.,count(*) as bin_sum ,sum(&binary.) as bin_resp from &intable.
    where  &variable. is not null
    group by &variable.
    order by &variable.;
    select count(*)-sum(&binary.) into :total_nresp from &intable. where &variable. is not null;
    select sum(&binary.) into :total_resp from &intable. where &variable. is not null;
quit;
data temp_2;
    set temp_1;
length area 8.;
retain C_sum 0 C_resp 0  C_nresp 0 l_resp 0 l_nresp 0;
    C_sum=sum(C_sum,bin_sum);
    C_resp=sum(C_resp,bin_resp);
    C_nresp=C_sum-C_resp;
    _sensit=C_resp/&total_resp.;
    _1mspec=C_nresp/&total_nresp.;
    area=(C_nresp-l_nresp)/&total_nresp.*(C_resp+l_resp)/&total_resp./2;
    l_resp=C_resp;
    l_nresp=C_nresp;
run;
proc sql;
    insert into &outtable.
    select
       distinct "&binary." as FLAG,
       "&variable." as VAR,
       case when sum(a.area) ge 0.5 then sum(a.area)
   else 1-sum(a.area) end as ROC
from temp_2 as a;
quit;
proc sql;drop table temp_1,temp_2;quit;
%mend;
%ROC(variable=诊断指标,binary=二值变量,intable=要检验的数据集,outtable=输出数据集);
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-12-16 22:07:44
如果楼主用的是SAS9.2版本的话,直接在logistic过程中加上ROC和ROCCONTRAST两条语句即可实现你的目的,以下是帮助文档里的案例。
data roc;
      input alb tp totscore popind @@;
      totscore = 10 - totscore;
      datalines;
   3.0 5.8 10 0   3.2 6.3  5 1   3.9 6.8  3 1   2.8 4.8  6 0   
   3.2 5.8  3 1   0.9 4.0  5 0   2.5 5.7  8 0   1.6 5.6  5 1   
   3.8 5.7  5 1   3.7 6.7  6 1   3.2 5.4  4 1   3.8 6.6  6 1   
   4.1 6.6  5 1   3.6 5.7  5 1   4.3 7.0  4 1   3.6 6.7  4 0   
   2.3 4.4  6 1   4.2 7.6  4 0   4.0 6.6  6 0   3.5 5.8  6 1   
   3.8 6.8  7 1   3.0 4.7  8 0   4.5 7.4  5 1   3.7 7.4  5 1   
   3.1 6.6  6 1   4.1 8.2  6 1   4.3 7.0  5 1   4.3 6.5  4 1   
   3.2 5.1  5 1   2.6 4.7  6 1   3.3 6.8  6 0   1.7 4.0  7 0   
   3.7 6.1  5 1   3.3 6.3  7 1   4.2 7.7  6 1   3.5 6.2  5 1   
   2.9 5.7  9 0   2.1 4.8  7 1   2.8 6.2  8 0   4.0 7.0  7 1   
   3.3 5.7  6 1   3.7 6.9  5 1   3.6 6.6  5 1   
   ;
ods graphics on;
   proc logistic data=roc plots=roc(id=prob);
      model popind(event='0') = alb tp totscore / nofit;
      roc 'Albumin' alb;
      roc 'K-G Score' totscore;
      roc 'Total Protein' tp;
      roccontrast reference('K-G Score') / estimate e;
   run;
   ods graphics off;
图形和检验结果都会同时给出。
如果不是9.2版本,参考楼上给出的宏。。
更详细的宏参数设置及使用说明请参考:
http://support.sas.com/kb/25/017.html
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群