Dear Steve, Thank you for your reply. I have tested the macro-language, unfortunately, without succes: %macro pregibon; options mprint mlogic nocenter; %let links = log identity; %let loop = 1; %let data = test; %let y = total; %let x = sex age location; proc sql noprint; select n(&data) - 3 into :df from &data; quit; %do %while (%scan(&links, &loop) ne %str()); %let link = %scan(&links, &loop); proc genmod data= &data ; model &y= &x / dist=gamma link = &link; output out = _out1 p=p_1; run; data _out2; set _out1(rename = (p_1 = p1)); p2 = p1*p1; run; ods listing close; ods output ParameterEstimates = _parm; proc genmod data= _out2; model &y = p1 p2 / dist=gamma link = &link; run; ods listing; %if &loop = 1 then %do; data _parm1; format link $10.; set _parm(where = (variable = "p2")); link= upcase("&link"); run; %end; %else %do; data _parm1; set _parm1 _parm(where = (variable = "p2") in = new); if new then link = upcase("&link"); run; %end; data _parm2(drop=variable); set _parm1; _t= estimate / stderr; _df= &df; _p = (1 - probt(abs(_t), _df)) * 2; run; %let loop = %eval(&loop + 1); %end; title; proc report data= _last_ spacing = 1 headline nowindows split = "*"; column(" * PREGIBON TEST FOR GOODNESS OF LIN * H0: THE LINK FUNCTION IS SPECIFIED CORRECTLY * " link _t _df _p); define link / "Link function" width = 15 order order =data; define _t / "T-value" width = 15 format=12.4; define _df / "DF" width = 10; define _p/ "P-value" width = 15 format=12.4; run; %mend; %filasign Kind regards, Susanne
... View more