SAS_聚类分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用系统聚类方法,距离使用类平均法
proc cluster data=d641 method=ave std pseudo ccc outtree=b641; var x1-x6; id group; proc tree data=b641 horizontal graphics ; title '使用类平均法的谱系聚类图'; run; title; cluster过程,用来进行系统聚类 method=ave或method=AVERAGE,表示类间距离使用类平均距离 std或standard选项,变量数据都标准化(均值0,标准差1)以后,再计算距 离 pseudo,输出伪F、伪t平方统计量 ccc选项,计算半偏R平方、ccc统计量 var x1-x6,用x1、x2、…、x6作为计算距离的变量 id group,用group变量的值作为每一个样品的id outtree=b641,将树形分类结果输出到数据集b641 tree过程,输出CLUSTER和VARCLUS过程产生的树形分类结果
如果我们想分别计算分成5组以 后,每组样本的均值。。
上表是d641,下表是out653,它们有一个公共的变量group。如果我们能按group变量, 把两个表合并起来,我们就可以计算每个cluster的均值。而不利的是,x1-x6的值从 d641到out653时,发生了改变。
data out653a; set out653; keep group cluster; run; proc sort data=out653a; by group; run; proc sort data= d641; by group; run; data out653b; merge d641 out653a; by group; run; proc sort data=out653b; by cluster; run; proc means data=out653b; by cluster; var x1-x6; run; proc print data=out653b; var cluster x1-x6; run;
5.排序后,就可以用means过程计算按 cluster变量分类的均值了。 6.最后用print过程,把结果列表打印出来。
变量聚类法
书p261,例6.7.2,还用p260表6.12的数据,但使 用变量聚类
data d672(type=corr); title '在中学生中测量八个体型指标的相关系数'; label x1='身高' x2='手臂长' x3='上肢长' x4='下腿长' x5='体重' x6='颈围' x7='胸围' x8='胸宽'; input _name_ $ x1-x8; _type_='corr'; cards; x1 1.000 .846 .805 .859 .473 .398 .301 .382 x2 .846 1.000 .881 .826 .376 .326 .277 .415 x3 .805 .881 1.000 .801 .380 .319 .237 .345 x4 .859 .826 .801 1.000 .436 .329 .327 .365 x5 .473 .376 .380 .436 1.000 .762 .730 .629 x6 .398 .326 .319 .329 .762 1.000 .583 .577 x7 .301 .277 .237 .327 .730 .583 1.000 .539 x8 .382 .415 .345 .365 .629 .577 .539 1.000 ; proc print; title;
最简单的变量聚类:
proc varclus data=d672; run;
变量聚类也可以不使用主成份,而使用质心:
proc varclus data=d672 centroid; run; centroid表示距离用质心法
复杂一点的变量聚类,可以打印出图形:
proc varclus data=d672 maxc=8 summary outtree=o672; run; proc tree data=o672 horizontal graphics ; run; maxc=8表示聚类为8个类,这将使树形聚类显示,从8个变量各成一小类开始。 如果这里maxc=2,则树形的聚类显示,一开始就从两个类开始,就看不出8个变 量是如何逐步聚成两个大类的。 Varclus过程的summary选项输出一个概要表。
NCL为聚类数; FREQ为新类中所含 的样品数; SPRSQ为半偏R2, PSF为伪F, PST2为伪T2 Norm RMS Dist是正 规化的的两类元素间 距离的均方根
使用系统聚类方法,距离使用中间距离法
proc cluster data=d641 method=med std pseudo ccc outtree=b641; var x1-x6; id group; proc tree data=b641 horizontal graphics ; title '使用中间距离法的谱系聚类图'; run; title; method=med或method=MEDIAN,表示类间距离使用中间距离
115.65
42.6 47.12 23.54 19.52 19.19 33.61 20.2
50.82
27.3 34.35 18.18 21.75 15.97 33.77 20.5
5.89
5.74 5 6.39 6.73 4.94 3.85 4.3
输入资料:
data d641; input group $ x1-x6; cards; 北京 190.33 43.77 9.73 60.54 49.01 9.04 天津 135.20 36.40 10.47 44.16 36.49 3.94 河北 95.21 22.83 9.30 22.44 22.81 2.80 山西 104.78 25.11 6.40 9.89 18.17 3.25 内蒙 128.41 27.63 8.94 12.58 23.99 3.27 辽宁 145.68 32.83 17.79 27.29 39.09 3.47 吉林 159.37 33.38 18.37 11.81 25.29 5.22 黑龙江 116.22 29.57 13.24 13.76 21.75 6.04 上海 221.11 38.64 12.53 115.65 50.82 5.89 江苏 144.98 29.12 11.67 42.60 27.30 5.74 浙江 169.92 32.75 12.72 47.12 34.35 5.00 安徽 153.11 23.09 15.62 23.54 18.18 6.39 福建 144.92 21.26 16.96 19.52 21.75 6.73 江西 140.54 21.50 17.64 19.19 15.97 4.94 山东 115.84 30.26 12.20 33.61 33.77 3.85 河南 101.18 23.26 8.46 20.20 20.50 4.30 ; proc print data=d641; run;
使用系统聚类方法,距离使用可变类平均法
proc cluster data=d641 method=fle std pseudo ccc BETA=-0.25 outtree=b641; var x1-x6; id group; proc tree data=b641 horizontal graphics ; title '使用可变类平均法的谱系聚类图'; run; title;
means过程的by cluster语句,以cluster变量 进行分组,并分别计算各个分组的均值。
动态聚类法
书p251,例6.5.3,还用表6.7的数据,但动态聚类
proc standard mean=0 std=1 data=d641 out=sta653; var x1-x6; run; proc fastclus data=sta653 out=out653 maxc=5 list; var x1-x6; id group; run;
1.首先,因为out653中的x1-x6发生了改 变,我们把out653中的数据拷贝到 out653a中,但去掉x1-x6,只保留group、 cluster的信息。
2.为了合并out653a和d641(它们有公共 变量group),必须将它们都按变量 group来排序。
3.将out653a和d641合并为数据集 out653b(用merge语句)。 4.为了在合并的数据集out653b中计算按 照cluster变量分类后的各类的均值,要 将out653b按cluster变量进行排序。
使用系统聚类方ward法,聚类为5类的结果输出,并分别计算各类均值
proc sort data=c641; by cluster; run; proc print data=c641; var cluster group x1-x6; run; proc means data=c641 ; by cluster; var x1-x6; run;
method=fle或methoBiblioteka Baidu=FLEXIBLE,表示类间距离可变类平均法
BETA=-0.25,这也是缺省值,故可以省略,表示可变类平均法中的参数beta 的取值
D (1 )
2 rl
n p D nq D
2 pl
2 ql
n p nq
2 D pq
使用系统聚类方法,距离使用离差平方和(ward)法
用SAS进行聚类分析
系统聚类法
书p243,表6.7,16个地区农民生活水平调查数据
地区 北京 天津 河北 山西 内蒙 辽宁 吉林 黑龙江 x1 190.33 135.2 95.21 104.78 128.41 145.68 159.37 116.22 x2 43.77 36.4 22.83 25.11 27.63 32.83 33.38 29.57 x3 9.73 10.47 9.3 6.4 8.94 17.79 18.37 13.24 x4 60.54 44.16 22.44 9.89 12.58 27.29 11.81 13.76 x5 49.01 36.49 22.81 18.17 23.99 39.09 25.29 21.75 x6 9.04 3.94 2.8 3.25 3.27 3.47 5.22 6.04
standard过程,将数据标准化
mean=0 std=1,标准化后的数据,均值为0,标准差为1
out=sta653,结果输出到数据集sta653中 fastclus,进行快速(动态)聚类 maxc=5,或写为MAXCLUSTERS=5,聚为5类。默认值为100。 list,列表显示所有的样本点,它的id值、它归为哪一个cluster、它到自己的 cluster的凝聚点的距离
method=ward或method=war,表示类间距离使用离差平方和(ward)法 tree过程中,n=5 out=c641表示,分为5类时,分类的结果输出到数据集c641中 copy语句不能少,它表示要把b641中的group、x1、…、x6拷贝到c641中去
如果我们想分别计算分成5组以 后,每组样本的均值。。
上海
江苏 浙江 安徽 福建 江西 山东 河南
221.11
144.98 169.92 153.11 144.92 140.54 115.84 101.18
38.64
29.12 32.75 23.09 21.26 21.5 30.26 23.26
12.53
11.67 12.72 15.62 16.96 17.64 12.2 8.46
proc cluster data=d641 method=ward std pseudo ccc outtree=b641; var x1-x6; id group; proc tree data=b641 horizontal graphics n=5 out=c641 ; copy group x1-x6; title '使用Ward法的谱系聚类图'; run; title '使用Ward法';