Analysis of Means for Rate Data

 /****************************************************************/
 /*       S A S   S A M P L E   L I B R A R Y                    */
 /*                                                              */
 /*    NAME: ANOMU                                               */
 /*   TITLE: Analysis of Means for Rate Data                     */
 /* PRODUCT: QC                                                  */
 /*  SYSTEM: ALL                                                 */
 /*    KEYS: ANOM, Analysis of Means,                            */
 /*   PROCS: PRINT SHEWHART                                      */
 /*    DATA:                                                     */
 /*                                                              */
 /*     REF: P. R. Nelson (1982), "Exact Critical Points for the */
 /*          Analysis of Means", Communications in Statistics,   */
 /*          A11, 699-709                                        */
 /*                                                              */
 /*          Robert N. Rodriguez (1996), "Health Care            */
 /*          Applications of Statistical Process Control:        */
 /*          Examples Using the SAS System", Proceedings of the  */
 /*          Twenty-First Annual SAS Users Group International   */
 /*          Conference, 1381-1396                               */
 /*                                                              */
 /*   NOTES: This sample program uses the anomsig macro defined  */
 /*          in the ANOMSIG sample program.  The statements in   */
 /*          that program must be submitted before this program. */
 /*                                                              */
 /****************************************************************/

 options ls=64 nodate nonumber;
 goptions htext= 2.8 pct htitle=4.0 pct
          ftext='albany amt';

 data msadmits;
    length id $ 2;
    input id count94 mms94 count95 mms95;
    myrs94 = mms94/12000;
    myrs95 = mms95/12000;
    label  id = 'Medical Group Id Number';
    cards;
 1A   1979   685566      1882    697204
 1K    555   196229       600    224715
 1B    402   159259       438    154720
 1D    306    84241       318     82254
 3M    163    63444       183     76450
 3I    185    70216       220     73529
 1N    134    37149       121     60169
 3H    103    38326       105     52886
 1Q    117    48546       124     52595
 1E    171    46421       171     51229
 3B     92    30620        88     34775
 1C    114    33911       100     31959
 1H     98    28544       112     28782
 3C     60    23432        84     27478
 1R     69    20505        69     26494
 1T     12    18033        21     25096
 1M     94    18494       130     24723
 1O     61    23578        61     24526
 3D     80    21573        66     22359
 1J     42    18845        54     19101
 3J     27    13843        30     16089
 3G     36    12075        36     13851
 3E     36    10744        26     10587
 1G     20     8979        28     10351
 1I     16     6417        25      6041
 1L     13     4223        20      5138
 1S      3     1461         7      2723
 1F     10     2973         7      2424
 1P    119    39912         2      2030
 ;
 run;

 title 'Medical/Surgical Admissions Data';
 proc print noobs data=msadmits;
    var id count95 myrs95;
 run;

 %anomsig( 0.01, 29 );

 title 'Analysis of Medical/Surgical Admissions';

 symbol v=none w=7;

 proc shewhart data=msadmits;
    uchart count95 * id /
       subgroupn = myrs95
       sigmas   =  &sigmult
       cframe   =  blue
       cneedles =  yellow
       climits  =  black
       llimits  =  1
       cinfill  =  green
       lcllabel =  'LDL'
       ucllabel =  'UDL'
       turnhlabels
       nolegend
       haxis=axis1;

 axis1 value = ( h=2.2 pct ) ;
 label count95 =
       'Admits per 1000 Member Years';

 run;