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

📄 histogrm.sas

📁 缺失数据的利器
💻 SAS
字号:
%macro HISTOGRM;

  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  /*                                                           */
  /*  LAST MODIFIED:  March 25, 2003                           */
  /*                                                           */
  /*  Use GCHART to run histograms (horz/vert bar charts) of   */
  /*  Residuals and Influences:                                */
  /*                                                           */
  /*     1. Histogram of the residuals.                        */
  /*                                                           */
  /*     2. Normal Probability Plot of the Residuals.          */
  /*                                                           */
  /*     3. Histogram of PSU Influence (if clusters).          */
  /*                                                           */
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */


  footnote;
  title;

  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 
  /*         interpol=L1  */
  ;



  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  /*                                                           */
  /*  1. Histogram of the residuals.                           */
  /*                                                           */
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

  /*  NOTE: WORK.MERGED1 WAS CREATED BY SCATPLOT.SAS...        */


  proc gchart data=WORK.MERGED1 
              gout=WORK.HISTOCAT
  ;
    vbar RESID / frame  type=FREQ  FREQ  levels=10 
                 name='HSTRESID';
    title1 "Histogram of Residuals";
    footnote1 ;
    label RESID="Residuals Midpoints";
  run;
  quit;


  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  /*                                                           */
  /*  2. Normal Probability Plot of the Residuals.             */
  /*                                                           */
  /*     a. Merge Rankit with Residuals.                       */
  /*                                                           */
  /*     b. Do scatter plot of Residuals vs ordered Rankits.   */
  /*                                                           */
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

  /*  NOTE: WORK.MERGED1 WAS CREATED BY SCATPLOT.SAS...        */


  proc sort data=WORK.MERGED1 ;
    by RESID;
    where RESID NE .;
  run;

  data WORK.MERGED2 ;
    set WORK.MERGED1 ;
    _OBS_=_n_;
  run;

  proc sort data=&RANKFILE (rename=(&SEQVAR=&IDVAR))
             out=WORK.XRANKFLE
  ;
    by &IDVAR;
  run;


  data WORK.MERGED3 ;
    merge WORK.MERGED2 
          WORK.XRANKFLE 
    ;
    by &IDVAR ;

  run;


  symbol1  interpol=SM40PS
           width=1
           height=3
           value=star
  ;

  axis97  label=("Residuals")
  ;

  axis96  label=("Rankits")
  ;


  proc gplot data=WORK.MERGED3 
             gout=WORK.HISTOCAT
  ;
    plot RESID * _RANKIT_   /*  Y-var first, X-var second.  */
    / frame  vaxis=AXIS97  haxis=AXIS96  name='NORMPROB';
    title1 "Normal Probability Plot of the Residuals";
  run;
  quit;


  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  /*                                                           */
  /*  3. Histogram of PSU Influence.                           */
  /*                                                           */
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

  %if (&INFLFILE ne ) %then %do;

    symbol1  interpol=NONE
    ;

    proc gchart data=&INFLFILE
                gout=WORK.HISTOCAT;
      vbar &INFLVAR / frame type=FREQ  FREQ  levels=10 
                      name='HISTINFL';
      title1 "Histogram of Influences";
      footnote1 ;
      label &INFLVAR="PSU Influence Midpoints";
    run;
    quit;

  %end;

  /*  COUNT NUMBER OF GRAPHS (BEFORE RUNNING GSLIDE), ASSIGN   */
  /*  TO A GLOBAL MACRO VARIABLE.                              */

  proc catalog cat=WORK.HISTOCAT;
    contents  out=WORK.HISTOCON;
  run;
  quit;


  data _NULL_ ;
    set WORK.HISTOCON  end=LAST ;

  %global COUNTHST;

  if LAST eq 1 then call symput("COUNTHST",trim(left(_N_)));

  run;


  /*  GENERATE MAIN TITLES WITH GSLIDE...                      */

  proc gslide gout=WORK.HISTOCAT  name='HSTSLIDE';
    title1 "Regression Diagnostic Plots";
    title2 "Histograms and Normal Probability Plot";
    footnote1;
  run;
  quit;


  /*  MORE HOUSECLEANING:  DELETE REMAINING TEMPORARY DATASETS.*/
  /*                       DELETE MACROS FROM SASMACR CATALOG. */
  /*  NOTE: WILL HAVE TO DELETE HISTOCAT CATALOG LATER.        */

  proc datasets  lib=WORK  nolist  memtype=data;
    delete XRANKFLE HISTOCON / memtype=data ;
  run;
  quit;


%mend HISTOGRM;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -