Documentation Example 3 for PROC CLUSTER
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: CLUSEX3 */
/* TITLE: Documentation Example 3 for PROC CLUSTER */
/* PRODUCT: STAT */
/* SYSTEM: ALL */
/* KEYS: CLUSTER ANALYSIS IRIS DATA */
/* PROCS: FREQ, CANDISC, SGPLOT, CLUSTER, TREE, FASTCLUS */
/* DATA: */
/* */
/* SUPPORT: sasrbk */
/* REF: PROC CLUSTER, Example 3. */
/* MISC: */
/****************************************************************/
/*--- Define macro show ---*/
%macro show;
proc freq;
tables cluster*species / nopercent norow nocol plot=none;
run;
proc candisc noprint out=can;
class cluster;
var petal: sepal:;
run;
proc sgplot data=can;
scatter y=can2 x=can1 / group=cluster;
run;
%mend;
title2 'By Ward''s Method';
ods graphics on;
proc cluster data=sashelp.iris method=ward print=15 ccc pseudo;
var petal: sepal:;
copy species;
run;
proc tree noprint ncl=3 out=out;
copy petal: sepal: species;
run;
%show;
title2 'By Two-Stage Density Linkage';
proc cluster data=sashelp.iris method=twostage k=8 print=15 ccc pseudo;
var petal: sepal:;
copy species;
run;
proc tree noprint ncl=3 out=out;
copy petal: sepal: species;
run;
%show;
title2 'Preliminary Analysis by FASTCLUS';
proc fastclus data=sashelp.iris summary maxc=10 maxiter=99 converge=0
mean=mean out=prelim cluster=preclus;
var petal: sepal:;
run;
proc freq;
tables preclus*species / nopercent norow nocol plot=none;
run;
proc sort data=prelim;
by preclus;
run;
/*--- Define macro clus ---*/
%macro clus(method);
proc cluster data=mean method=&method ccc pseudo;
var petal: sepal:;
copy preclus;
run;
proc tree noprint ncl=3 out=out;
copy petal: sepal: preclus;
run;
proc sort data=out;
by preclus;
run;
data clus;
merge out prelim;
by preclus;
run;
%show;
%mend;
title2 'Clustering Clusters by Ward''s Method';
%clus(ward);
title2 "Clustering Clusters by Wong's Hybrid Method";
%clus(twostage hybrid);