📄 regplot.sas
字号:
%macro REGPLOT;
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* */
/* LAST MODIFIED: August 17, 2000 */
/* */
/* CALL INDIVIDUAL PLOT MACROS FROM THIS MACRO... */
/* */
/* 0. CHECK IF PERMANENT CATALOG ALREADY EXISTS; IF SO, */
/* DELETE IT. */
/* */
/* 1. PRINT SCATTER PLOTS OF INDIVIDUAL PREDICTORS ONLY, */
/* INCLUDING WEIGHT VAR IF USED. */
/* */
/* 2. PRINT ALL STANDARD DEVIATION PLOTS. */
/* */
/* 3A. PRINT HISTOGRAM OF RESIDUALS. */
/* */
/* 3B. PRINT NORMAL PROBABILITY PLOT. */
/* */
/* 3C. PRINT HISTOGRAM OF INFLUENCES. */
/* */
/* */
/* NOTE: IF OUTPUT CATALOG IS _NOT_ SPECIFIED IN PLOT */
/* STATEMENT IN JACKKNIFE *.SET FILE, THEN FINAL */
/* PLOTS WILL BE WRITTEN TO A CATALOG NAMED */
/* WORK.REGPLOT. IF WORK.REGPLOT ALREADY EXISTS, IT */
/* WILL BE DELETED AND REPLACED BY A NEW ONE. */
/* */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
%if %sysfunc(exist(&PLOTCAT,catalog)) %then
%do;
proc catalog cat=&PLOTCAT kill;
run;
quit;
%end;
%if %sysfunc(exist(WORK.REGPLOT,catalog)) %then
%do;
proc catalog cat=WORK.REGPLOT kill;
run;
quit;
%end;
%SCATPLOT
%SDPLOT
%HISTOGRM
%macro PLAYNUM(NUM);
/* TREPLAY STATEMENT SYNTAX: PANEL-NUMBER:ENTRY-ID. */
%if &NUM LE 4 %then
%do;
treplay
%do i=1 %to #
&i:&i
%if %eval(&i=&NUM) %then 5:%eval(&NUM+1);
%end;
;
%end;
%else %if &NUM GE 5 and &NUM LE 8 %then
%do;
treplay
%do i=1 %to 4;
&i:&i
%end;
5:%eval(&NUM+1)
;
treplay
%do i=5 %to #
%eval(&i-4):&i
%if %eval(&i=&NUM) %then 5:%eval(&NUM+1);
%end;
;
%end;
%else %if &NUM GE 9 and &NUM LE 12 %then
%do;
treplay
%do i=1 %to 4;
&i:&i
%end;
5:%eval(&NUM+1)
;
treplay
%do i=5 %to 8;
%eval(&i-4):&i
%end;
5:%eval(&NUM+1)
;
treplay
%do i=9 %to #
%eval(&i-8):&i
%if %eval(&i=&NUM) %then 5:%eval(&NUM+1);
%end;
;
%end;
%mend PLAYNUM;
/* SET GOPTIONS TO DISPLAY, THEN RUN GREPLAY.... */
goptions reset=ALL
cback=white
htitle=5
htext=3
ftext=swissb
colors=(black)
gunit=pct
border
rotate=landscape
display
%if &SYSSCP eq WIN %then
%do;
device=WIN
%end;
%else %do;
device=XCOLOR
%end;
;
proc greplay nofs igout=WORK.SCTPLCAT
%if &PLOTCAT NE %then
%do;
gout=&PLOTCAT
%end;
%else %do;
gout=WORK.REGPLOT
%end;
tc=WORK.TEMPLATE
;
tdef T2X2
/* upper-left panel. */
1 / llx=1 ulx=1 urx=50 lrx=50
lly=50 uly=89 ury=89 lry=50
/* upper-right panel. */
2 / llx=50 ulx=50 urx=99 lrx=99
lly=50 uly=89 ury=89 lry=50
/* lower-left panel. */
3 / llx=1 ulx=1 urx=50 lrx=50
lly=1 uly=50 ury=50 lry=1
/* lower-right panel. */
4 / llx=50 ulx=50 urx=99 lrx=99
lly=1 uly=50 ury=50 lry=1
/* full display panel. */
5 / llx=0 ulx=0 urx=100 lrx=100
lly=0 uly=100 ury=100 lry=0
;
/* REPLAY SCATTER PLOTS INTO TEMPLATE PANELS. */
template T2X2;
%PLAYNUM(&COUNTSCT)
%if &PLOTCAT NE %then
%do;
igout=&PLOTCAT;
%end;
%else %do;
igout=WORK.REGPLOT;
%end;
%if &COUNTSCT LE 4 %then
%do;
modify TEMPLATE / name="SCATTER" DES="Residual Plots"
;
%end;
%else %if &COUNTSCT GE 5 and &COUNTSCT LE 8 %then
%do;
modify TEMPLATE
/ name="SCATTER1" DES="Residual Plots, page 1"
TEMPLAT1
/ name="SCATTER2" DES="Residual Plots, page 2"
;
%end;
%else %if &COUNTSCT GE 9 and &COUNTSCT LE 12 %then
%do;
modify TEMPLATE
/ name="SCATTER1" DES="Residual Plots, page 1"
TEMPLAT1
/ name="SCATTER2" DES="Residual Plots, page 2"
TEMPLAT2
/ name="SCATTER3" DES="Residual Plots, page 3"
;
%end;
run;
quit;
/* REPLAY STANDARD DEVIATION PLOTS USING SAME TEMPLATE.... */
proc greplay nofs igout=WORK.SDPLTCAT
%if &PLOTCAT NE %then
%do;
gout=&PLOTCAT
%end;
%else %do;
gout=WORK.REGPLOT
%end;
tc=WORK.TEMPLATE
;
/* REPLAY STANDARD DEVIATION GRAPHS INTO TEMPLATE PANELS. */
template T2X2;
%PLAYNUM(&COUNTSD)
%if &PLOTCAT NE %then
%do;
igout=&PLOTCAT;
%end;
%else %do;
igout=WORK.REGPLOT;
%end;
%if &COUNTSD LE 4 %then
%do;
modify TEMPLATE / name="STDDEV"
DES="Standard Deviation Plots"
;
%end;
run;
quit;
/* REPLAY HISTOGRAMS / NORM. PROB. PLOT. USE SAME TEMPLATE. */
proc greplay nofs igout=WORK.HISTOCAT
%if &PLOTCAT NE %then
%do;
gout=&PLOTCAT
%end;
%else %do;
gout=WORK.REGPLOT
%end;
tc=WORK.TEMPLATE
;
/* REPLAY HISTOGRAMS INTO TEMPLATE PANELS.... */
template T2X2;
%PLAYNUM(&COUNTHST)
%if &PLOTCAT NE %then
%do;
igout=&PLOTCAT;
%end;
%else %do;
igout=WORK.REGPLOT;
%end;
%if &COUNTHST LE 4 %then
%do;
modify TEMPLATE / name="HISTNORM"
DES="Histograms and Normal Probability Plot"
;
%end;
run;
quit;
/* LAST: DELETE REMAINING WORK DATASETS AND CATALOGS... */
/* DELETE REMAINING MACROS FROM SASMACR CATALOG... */
proc datasets lib=WORK nolist memtype=catalog;
delete HISTOCAT SCTPLCAT SDPLTCAT TEMPLATE / memtype=catalog
;
run;
quit;
proc datasets lib=WORK nolist memtype=data;
delete MERGED1 MERGED2 MERGED3 / memtype=data ;
run;
quit;
%mend REGPLOT;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -