用SAS进行聚类分析----基于我国主要省市综合实力状况进行分析
在学习聚类分析时,最常用的软件有SAS,R,SPSS,而其中SAS的分析过程更为精确,便捷。
在进行系统聚类分析中,类之间的距离一共有八种方法,分别为最短距离法,最长距离法,中间距离法,等8种方法,而在实际使用中,离差平方和法(WARD)是效果较好的方法,并且基于本文是针对我国主要省市综合实力状况评价进行分类,选择离差平方和法得到的分类结果更为准确些,下面通过SAS对我国主要省市做离差平方和法的聚类分析。
同样选取全国除甘肃,青海,宁夏,新疆外的25个省并通过–人均 GDP(X1)、人均新增固定资产(X2)、人均居民消费支出 (X3)、人均高等学校数(X4)、人均卫生机构数(X5)、参加城镇职工基本医疗保险人数与人口数的比例(X6)、人均全社会建设总规模(X7)、等 13 项主要指标进行聚类分析和判别分析,部分数据如下:
通过SAS编程计算可得到如下的谱系聚类图:
从上图的谱系聚类图中,我们可以清楚的看到,各个省份之间聚类的流程,而在选择最优聚类数量时,通过画出R2与分类个数NCL的散点图:
通过图中各点的位置,我们可以得出,分类个数为3个时最优。
data work2;
input group $ x1-x13;
cards;
北京 48832 111 165 50 30 42 96 32 7066 336 19978 2546 3306
天津 40351 119 104 41 22 32 61 18 3879 145 14283 582 1376
河北 16836 37 49 12 25 8 16 7 899 68 10305 35 471
山西 14064 38 48 16 28 10 18 10 1728 60 10028 48 560
内蒙古 20025 83 57 15 33 13 38 10 1432 88 10358 168 539
辽宁 21674 63 68 18 37 22 32 11 1914 148 10370 218 740
吉林 15605 58 57 16 35 13 20 9 900 100 9775 50 639
黑龙江 16268 37 51 17 21 18 12 12 1011 96 9182 128 612
上海 56733 119 207 33 13 56 102 18 8683 168 20668 2150 2330
江苏 28541 83 82 15 22 16 33 8 2194 202 14084 369 881
浙江 31424 60 110 13 28 14 49 12 2606 115 18265 428 1141
安徽 10052 24 44 13 15 7 17 5 700 103 9771 37 413
福建 21084 26 78 17 27 10 32 12 1520 74 13753 413 704
江西 10645 29 41 15 23 7 14 6 704 56 9551 32 435
山东 23468 50 70 11 18 10 24 9 1456 117 12192 108 535
河南 13271 36 46 8 15 7 12 7 723 50 9810 29 381
湖北 13169 30 55 15 17 9 19 9 836 73 9803 56 595
湖南 11815 24 54 15 24 8 14 6 753 55 1050 79 509
广东 27911 45 107 11 18 15 31 10 2342 234 16016 809 866
广西 10176 18 43 11 21 6 15 6 725 108 9899 89 388
海南 12589 23 47 17 27 10 16 9 978 79 9395 274 560
四川 10574 25 17 9 29 8 18 6 743 66 9350 48 444
贵州 5733 18 12 9 16 5 12 5 603 71 9117 30 371
云南 9150 22 14 11 22 7 16 5 847 29 10070 146 442
陕西 11737 35 16 20 31 10 17 8 970 50 9268 136 624
;
proc print data work2;
run;
proc cluster data =work2 method=ward std pseudo ccc /*使用的方法是word聚类法*/
outtree=work3;
var x1-x13;
id group;
proc tree data=work3 horizontal graphics;
title 'the tree graph of clustering by ward mothod';
run;
proc sort data=work4;
by cluster;
proc mean data=work4;
by cluster;
var x1-x13;
run;