2017-08-06 145 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--不確定你在問什麼,我建議提出一個新問題,明確說明你正在努力實現的目標,以及你所嘗試過的。 –

相關問題