📄 scatplot.sas
字号:
%macro SCATPLOT;
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* */
/* LAST MODIFIED: June 15, 2000 */
/* */
/* Use GPLOT to create scatter plots of residuals. */
/* */
/* a. Calculate residuals: depvar - predvar = residual. */
/* */
/* b. Scatter plots of... */
/* i) residuals vs predicted values. */
/* ii) residuals vs continuous predictor variables. */
/* iii) residuals vs weight var. (check if available).*/
/* */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
goptions reset=ALL
cback=white
htitle=5
htext=3
ftext=swissb
colors=(black)
gunit=pct
border
rotate=landscape
NOdisplay
%if &SYSSCP eq WIN %then
%do;
device=WIN
%end;
%else %do;
device=XCOLOR
%end;
;
symbol1 color=black
value=star
height=3
;
axis99 label=("Residuals")
;
axis98 label=("Predicted Dependent Variable")
;
/* 1. CALCULATE AND PLOT THE RESIDUALS. */
data WORK.XPREDFLE ;
set &PREDFILE ;
RESID = &DEPVAR - &PREDVAR ;
run;
proc gplot data=WORK.XPREDFLE
gout=WORK.SCTPLCAT
;
plot RESID * &PREDVAR /* Y-var first, X-var second. */
/ frame vaxis=AXIS99 haxis=AXIS98 name='PREDICT';
title1 "Residuals vs. Predicted Values";
footnote;
run;
/* MERGE RESIDUALS WITH ORIGINAL DATAFILE. */
proc sort data=&DATAFILE ;
by &IDVAR;
run;
proc sort data=WORK.XPREDFLE ;
by &IDVAR;
run;
data WORK.MERGED1 ;
merge &DATAFILE (keep=&IDVAR
%if &WGTVAR NE %then
%do;
&WGTVAR
%end;
&CONPREDS &CATPREDS)
WORK.XPREDFLE (keep=&IDVAR RESID)
;
by &IDVAR ;
run;
/* 2. PLOT RESIDUALS VS PREDICTORS. */
%macro MULT1;
%if %length(&CONPREDS) GT 0 %then
%do;
%macro COUNTCON;
%let COUNT=0;
%if &CONPREDS NE %then
%do;
%let WORD=%scan(&CONPREDS,1);
%do %while(&WORD NE );
%let COUNT=%eval(&COUNT+1);
%let WORD=%scan(&CONPREDS,&COUNT+1);
%end;
%end;
&COUNT
%mend COUNTCON;
%do i=1 %to %COUNTCON;
%let var&i=%scan(&CONPREDS,&i);
axis&i label=("&&VAR&i")
;
proc gplot data=WORK.MERGED1
gout=WORK.SCTPLCAT
;
plot RESID * &&VAR&i
/ frame vaxis=AXIS99 haxis=AXIS&i name="PRED&i";
title1 "Residuals vs. &&VAR&i";
run;
%end;
%end;
%mend MULT1;
%MULT1
/* 3. MUST SKIP THIS PLOT IF WEIGHT VAR IS MISSING. */
%if (%length(%scan(&WGTVAR,1))>0) %then
%do;
AXIS95 label=("&WGTVAR")
;
proc gplot data=WORK.MERGED1
gout=WORK.SCTPLCAT
;
plot RESID * &WGTVAR
/ frame vaxis=AXIS99 haxis=AXIS95 name='WEIGHT VAR';
title1 "Residuals vs. Weight Variable";
run;
quit;
%end;
/* COUNT NUMBER OF GRAPHS, ASSIGN TO GLOBAL MACRO VARIABLE. */
proc catalog cat=WORK.SCTPLCAT;
contents out=WORK.SCTPLCON;
run;
quit;
data _NULL_ ;
set WORK.SCTPLCON end=LAST ;
%global COUNTSCT;
if LAST eq 1 then call symput("COUNTSCT",trim(left(_N_)));
run;
/* GENERATE MAIN TITLES WITH GSLIDE... */
proc gslide gout=WORK.SCTPLCAT name='SCATSLID';
title1 "Regression Diagnostic Plots";
title2 "Residual Plots";
footnote1;
run;
quit;
/* MORE HOUSECLEANING: DELETE REMAINING TEMPORARY DATASETS.*/
/* DELETE MACROS FROM SASMACR CATALOG. */
/* NOTE: KEEP WORK.MERGED1, IT IS NEEDED BY HISTOGRM.SAS. */
proc datasets lib=WORK nolist;
delete XPREDFLE SCTPLCON ;
run;
quit;
proc catalog cat=WORK.SASMACR;
delete MULT1 / entrytype=macro;
run;
quit;
%mend SCATPLOT;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -