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

📄 regplot.sas

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