Analysis of Artificial Five-Group Data

``` /****************************************************************/
/*          S A S   S A M P L E   L I B R A R Y                 */
/*                                                              */
/*    NAME: FASTCLUS                                            */
/*   TITLE: Analysis of Artificial Five-Group Data              */
/* PRODUCT: STAT                                                */
/*  SYSTEM: ALL                                                 */
/*    KEYS: CLUSTER                                             */
/*   PROCS: FASTCLUS SGPLOT SORT                                */
/*    DATA:                                                     */
/*                                                              */
/* SUPPORT:                             UPDATE: January 2010    */
/*     REF:                                                     */
/*    MISC:                                                     */
/*                                                              */
/****************************************************************/

title 'Cluster Analysis Of Artificial Five-Group Data';

data clusdata(drop=n);
do g=1 to 5;
if      g=1 then do; xm=1;  ym=4;  end;
else if g=2 then do; xm=1;  ym=1;  end;
else if g=3 then do; xm=6;  ym=1;  end;
else if g=4 then do; xm=15; ym=5;  end;
else             do; xm=3;  ym=20; end;
do n=1 to 20;
x=xm+rannor(12345);
y=ym+rannor(12345);
random=ranuni(12345);
output;
end;
end;
run;

proc sort;
by random;
run;

proc sgplot;
scatter y=y x=x / markerchar=g group=g;
run;

* Set up macro for repeated runs of FASTCLUS followed by PROC SGPLOT;

%macro onemore(start=2,end=6);
%do clus=&start %to &end;
title2 "Fitting &clus Clusters";

proc fastclus maxc=&clus data=clusdata out=clusters;
var x y;
run;

proc sgplot noautolegend;
scatter y=y x=x / markerchar=cluster group=cluster;
run;
%end;
%mend;

* The analysis is run for 2 to 6 clusters;

%onemore;

```