SAS中文论坛

标题: SAS聚类分析模型---谱系聚类分析模型 [打印本页]

作者: shiyiming    时间: 2007-11-30 13:29
标题: SAS聚类分析模型---谱系聚类分析模型
[b:4np6n907]问题的提出:[/b:4np6n907]
为研究1辽宁、2浙江、3河南、4甘肃、5青海5省分1991年城镇居民生活消费规律,需要利用调查资料对这5个省份分类,试建立数学模型对这5个省份进行消费类型的分类,并排列出它们相似程度的顺序。指标变量共8个,含义如下:
X1:人均粮食支出
X2:人均副食支出  
X3:人均烟酒类支出
X4:人均其他副食支出   
X5:人均衣着商品支出
X6:人均日用品支出
X7:人均燃料支出
X8:人均非商品支出

[b:4np6n907]模型的建立:[/b:4np6n907]
在植物分类学中,分类的单位是:门、纲、目、科、属、种,其中种是分类的基本单位。分类单位越小,它所包含的植物就越少,植物之间的共同特征就越多。利用这种分类思想,我们建立谱系聚类分析模型。首先视各省份的居民消费自成一类,然后把消费类型最相似(距离最小或相似系数最大)的省份聚为小类,再将已聚合的小类按其消费类型的相似性(用类间距离度量)再聚合,随着相似性的减弱,最后将一切子类都聚成一个大类,从而得到一个按相似性大小聚结起来的谱系图。我们可以通过分析该图,判断哪些省份的居民消费最相似,排列出它们相似程度的顺序:
1、基本概念:
设有 n个样品的多元观察数据,每个样品可看成p元空间的一个点,n个样品组成p元空间的n个点。
最短距离:用两类中样品之间的距离最短者作两类的距离(p和q 分别表示类中含有样品数)。
最长距离:用两类中样品之间的距离最长者作为两类的距离。
类平均距离 用两类中样品之间的距离平均作为两类的距离。
2、计算的步骤:
n个样品开始时作为n个类,计算两两之间的距离,构成一个对称距离矩阵。选择非对角线上的最小元素,合并成一个新类,消去所对应的行与列,并加入由新类与剩下的其他未聚合的类间的距离所组成的一行和一列,得到一个新的距离矩阵,它是n-1阶方阵。重复上述步骤,直到n个样品为1个大类为止。在合并过程中要记下合并的编号及两类合并时的水平(即距离)并绘制聚类谱系图。

[b:4np6n907]模型求解与分析:[/b:4np6n907]
先分析五个省份的居民消费八个指标的欧氏距离,求出欧氏距离矩阵:欧氏距离矩阵中的数据反应了5个省份消费水平的接近程度,即表明甘肃省与河南省的欧氏距离最小,反应这两个省份的居民消费水平最接近。现利用SAS统计软件对谱系聚类分析模型进行进一步的求解,得结果:
a) 以最短距离为标准的聚类表及聚类谱系图
图中,OB1—OB5代表省份这五个样品。第一步将OB3和OB4合并成CL4 (CL代表合并的新类,4代表合并后的总数);第二步将CL4和OB5={3,4}合并成CL3(此时,类的总数是3);第三步将OB1和OB2合并成CL2(此时,类的总数是2);最后,将CL2={1,2}和 CL3={3,4,5}合成CL1
b) 以最长距离为标准的聚类表及聚类谱系图
c) 以平均距离为标准的聚类表及聚类谱系图
由以上聚类分析可知:按三种标准的分类都一样,只是类间的距离不同。河南省与甘肃省的居民消费水平最接近,青海省与河南省、甘肃省也比较接近,辽宁省和浙江省与其他三省有较大区别,但辽宁省和浙江省的居民消费水平却很接近。以河南省的居民消费水平为标准,则相似程度从大到小的排序是:河南>甘肃>青海>辽宁>浙江  这与我国经济发展不平衡的现实相吻合(东部比中、西部经济发达,消费水平相对高)。

[b:4np6n907]模型的优点和改进:[/b:4np6n907]
优点:
1)利用三个标准(最小、最大、平均距离)综合预测,使预测结果更可靠。
2)直观的图形分析,使分析变得简易。
3)借用SAS软件的求解,使求解更方便,更精确。
改进:
该模型的预测基于一年的数据,是静态的预测,可以通过收集多年的数据,引入时间序列分析,可以预测出未来几年五省份的消费情况,再进行比较,使该模型具有动态预测能力。

[b:4np6n907]五省份的聚类分析的SAS程序:[/b:4np6n907]
[code:4np6n907]data a1;
input x1-x8;
cards;
7.90  39.77  8.49  12.94  19.27  11.05  2.04  13.29
7.68  50.37 11.35  13.30  19.25  14.59  2.75  14.87
9.42  27.93  8.20   8.14  16.17   9.42  1.55   9.76
9.16  27.98  9.01   9.32  15.99   9.10  1.82  11.35
10.06  28.64 10.52  10.05  16.18   8.39  1.96  10.81
;

proc cluster data=a1 method=single nonorm outtree=tree simple;
run;
proc tree;
run;

proc cluster data=a1 method=com nonorm outtree=tree ;
run;
proc tree;
run;

proc cluster data=a1 method=average nonorm nosquare  outtree=tree;
run;
proc tree;
run;[/code:4np6n907]




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2