⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scatplot.sas

📁 缺失数据的利器
💻 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 + -