16
图4 离差平方和法聚类历史图
由图4可知,离差平方和法聚类结果与类平均法一致。NCL=1,2时半偏R 2分别为最大、次大;伪F统计量在NCL=3,4时分别为最大、次大(NCL<6);而伪t方统计量在NCL=1,2时的值分别为最大、次大。因此,将16个样品划分为三组较为合适。
SAS绘制的谱系聚类图及聚类结果图如下所示。
图5 离差平方和法谱系聚类图
图6 离差平方和法聚类结果图
2 综合分析
离差平方和法与平均法分类结果相同
(3)(3)G1(3)??6,8,9,13?,G2??1,2,3,7,10,14,15?,G3??4,5,11,12,16?。
17
原始的样品分组情况如表4所示。
表4 样品原始分组情况 样品号 6 8 9 13 1 2 3 类别 1 1 1 1 2 2 2 样品号 7 10 14 4 5 11 12 类别 2 2 2 3 3 3 3 表1中样品的原始分组与离差平方和法和类平均法进行系统聚类分析得到的结果完全一致。因此,可以认为离差平方和法和类平均法得到的分类能有效应用到样品15、16,它们应分别归为2、3类。
附录
_____________________________________1(6-10问题1 SAS程序)
data d610;
input group $ x1-x7 @@; cards;
1 0.05798 5.515 347.1 21.91 8586 1742 61.69 2 0.08441 3.97 347.2 19.71 7947 2000 2440 3 0.07217 1.153 54.85 3.052 3860 1445 9497 4 0.1501 1.702 307.5 15.03 12290 1461 6380 5 5.744 2.854 229.6 9.657 8099 1266 12520 6 0.213 0.7058
240.3 13.91 8980 2820 4135
;
proc print data=d610; run;
proc cluster data=d610 method=ave std pseudo ccc outtree=b610; var x1-x7; id group;
proc tree data=b610 horizontal graphics ; title '使用类平均法的谱系聚类图'; run; title;
proc cluster data=d610 method=med std pseudo ccc outtree=b610; var x1-x7; id group;
proc tree data=b610 horizontal graphics ; title '使用中间距离法的谱系聚类图'; run; title;
proc cluster data=d610 method=fle std pseudo ccc outtree=b610; var x1-x7; id group;
proc tree data=b610 horizontal graphics ; title '使用可变类平均法的谱系聚类图'; run; title;
proc cluster data=d610 method=ward std pseudo ccc outtree=b610; var x1-x7; id group;
proc tree data=b610 horizontal graphics n=2 out=c610 ;
copy group x1-x7;
title '使用Ward法的谱系聚类图'; run;
title '使用Ward法'; proc sort data=c610; by cluster; run;
proc print data=c610;
var cluster group x1-x7; run;
proc means data=c610 ; by cluster; var x1-x7; run; quit;
_____________________________________
2(6-10问题2 SAS程序)
data d6101;
input group $ x1-x6 @@; cards; Ag 0.05798 0.08441
0.07217
0.1501
5.744 0.213
Al 5.515 3.97 1.153 1.702 2.854 0.7058 Cu 347.1 347.2 54.85 307.5 229.6 240.3 Ca 21.91 19.71 3.052 15.03 9.657 13.91 Sb 8586 7947 3860 12290 8099 8980 Bi 1742 2000 1445 1461 1266 2820 Sn 61.69 2440 9497 6380 12520 4135
;
proc print data=d6101; run;
proc cluster data=d6101 method=ave std pseudo ccc outtree=b6101; var x1-x6; id group;
proc tree data=b6101 horizontal graphics ; title '使用类平均法的谱系聚类图'; run; title;
proc cluster data=d6101 method=med std pseudo ccc
outtree=b6101; var x1-x6; id group;
proc tree data=b6101 horizontal graphics ; title '使用中间距离法的谱系聚类图'; run; title;
proc cluster data=d6101 method=fle std pseudo ccc outtree=b6101; var x1-x6; id group;
proc tree data=b6101 horizontal graphics ; title '使用可变类平均法的谱系聚类图'; run; title;
proc cluster data=d6101 method=ward std pseudo ccc outtree=b6101; var x1-x6; id group;
proc tree data=b6101 horizontal graphics n=? out=c6101 ;/*?=4/5*/ copy group x1-x6;
title '使用Ward法的谱系聚类图'; run;
title '使用Ward法'; proc sort data=c6101; by cluster; run;
proc print data=c6101; var cluster group x1-x6; run;
proc means data=c6101; by cluster; var x1-x6; run; quit;
_____________________________________3(6-11 SAS程序)
data d611;
input group $ x1-x3 @@; cards; 1 2.58 0.9 0.95 2 2.9 1.23 1 3 3.55 1.15 1 4
2.35 1.15 0.79
5 3.54 1.85 0.79 6 2.7 2.23 1.3 7 2.7 1.7 0.48 8 2.25 1.98 1.06 9 2.16 1.8 1.06 10 2.33 1.74 1.1 11 1.96 1.48 1.04 12 1.94 1.4 1 13 3 1.3 1 14 2.78 1.7 1.48
;
proc print data=d611; run;
proc cluster data=d611 method=ave std pseudo ccc outtree=b611; var x1-x3; id group;
proc tree data=b611 horizontal graphics out=c1 ncl=2; run;
proc print data=c1; run;
proc cluster data=d611 method=fle std pseudo ccc outtree=b611; var x1-x3; id group;
proc tree data=b611 horizontal graphics out=c2 ncl=2; run;
proc print data=c2; run;
proc cluster data=d611 method=ward std pseudo ccc outtree=b611; var x1-x3; id group;
proc tree data=b611 horizontal graphics n=2 out=c611 ;
copy group x1-x3; run;
proc sort data=c611; by cluster; run;
proc print data=c611;
var cluster group x1-x3; run;
proc means data=c611; by cluster; var x1-x3; run; quit;
_____________________________________4(6-12 SAS程序)
data d612;
input group $ x1-x3; cards; 1 0.045 0.043 0.265 2 0.066 0.039 0.264 3 0.094 0.061 0.194 4 0.003 0.003 0.102 5 0.048 0.015 0.106 6 0.21 0.066 0.263 7 0.086 0.072 0.274 8 0.196 0.072 0.211 9 0.187 0.082 0.301 10 0.053 0.06 0.209 11 0.02 0.008 0.112 12 0.035 0.015 0.17 13 0.205 0.068 0.284 14 0.088 0.058 0.215 15 0.101 0.052 0.181 16 0.045 0.005 0.122
;
proc print data=d612; run;
proc cluster data=d612 method=ave std pseudo ccc outtree=b612; var x1-x3; id group;
proc tree data=b612 horizontal graphics out=c612 ncl=3; run;
proc print data=c612; run;
proc cluster data=d612 method=ward std pseudo ccc outtree=b612; var x1-x3; id group;
proc tree data=b612 horizontal graphics n=3 out=c612;
copy group x1-x3;
run;
proc sort data=c612; by cluster; run;
proc print data=c612;
var cluster group x1-x3; run;
proc means data=c612; by cluster; var x1-x3; run; quit;

