2017-08-06 121 views
0

我正在SAS大学建立ROC曲线,有100个观测值,其中状态是自然状态 - 正或负测试,OD是光密度。数据集称为datain。SAS宏不起作用,但没有错误或警告

data datain; 
length State $ 1; 
input State $ OD @@; 
datalines; 
P 0.745 N 0.790 P 1.440 P 0.790 (and so on...); 
run; 
%let lowlim=0.50; 
%let uplim=1.50; 
%macro roc(datain, lowlim, uplim, ninc=20); 
options mtrace mprint; 
data roc; 
set &datain; 
lowlim=&lowlim; uplim=&uplim; ninc=&ninc; 
do i=1 to ninc+1; 
cutoff=lowlim+(i-1)*((uplim-lowlim)/ninc); 
if OD > cutoff then test="R"; else test="N"; 
output; 
end; 
drop i; 
run; 
proc print; 
run; 
%mend; 

当我运行宏和PROC打印,没有任何错误或警告。在LOG说:

OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK; 
ODS HTML CLOSE; 
&GRAPHTERM; ;*';*";*/;RUN;QUIT; 
QUIT;RUN; 
ODS HTML5 (ID=WEB) CLOSE; 
ODS RTF (ID=WEB) CLOSE; 
ODS PDF (ID=WEB) CLOSE; 
FILENAME _GSFNAME; 
DATA _NULL_; 
RUN; 
OPTIONS VALIDMEMNAME=COMPAT; 
OPTIONS NOTES STIMER SOURCE SYNTAXCHECK; 

任何想法,为什么这不工作?

回答

1

您是否尝试过实际调用您的宏?

%roc(datain,&lowlim,&uplim,ninc=20); 
+0

同意,但看起来像调用应该是:'%ROC(数据输入,及lowlim,与uplim,NINC = 20)' – Quentin

+0

不错,遗憾的是,就是这样。我对此很新。如何转换此代码 proc gplot data = roc; plot tp_rate * fp_rate = cutoff; 跑; 使用sgplot? –

+1

谢谢昆汀 - 更新。 Lucija--不确定你在问什么,我建议提出一个新问题,明确说明你正在努力实现的目标,以及你所尝试过的。 –

相关问题