实用多元统计分析期末实验报告郭寿杰PB11030015中国科学技术大学统计与金融系一、前言实验数据摘自中国国家统计局官方网站,分为3个数据集。data1是从2012年第2季度到2013年第3季度的各省地区生产总值的累计值;data2是2012年4个季度的各省城市居民人均收入的累计值;data3包括2013年第3季度的各省地区生产总值的累计值(v1)、2012年全年各省城市居民人均收入(v2)、2012年全年各省农村居民人均收入(v3)、2013年第3季度农产品生产价格指数的当季值(v4)、2013年第3季度固定资产投资价格指数的当季值(v5)。报告使用K-means方法分别将data1、2、3中的31个省市自治区分为4组,对data3使用分层聚类法将30个省市(不包括西藏自治区)进行分类,并比较data3数据分类结果的异同。最后针对data1和data3的K-means分组结果,从统计理论和国情两方面进行讨论。data1、data2、data3以“.txt”格式存储在F盘下。二、方法数据变换。输入数据后,在作聚类分析之前,为同等地对待每个变量,消除数据在数量级的影响,先对数据作标准化变换。数据标准化变换公式是kjkjkkkxxzs。采用欧氏距离作为项目对的相似性度量。12[x,x,,x]'px12[y,y,,y]'py,(x,y)(xy)'(xy)d.K-means方法由MacQueen提出。这种算法的基本思想是将每一个项目分给具有具有最近中心(均值)的聚类。最简单形式中的算法包括以下三个步骤:(1)将所有项目分成K个初始聚类。;(2)将项目表中的某个项目划入中心(均值)离它最近的聚类,对得到项目和失去项目的两个聚类重新计算他们的中心坐标。这里的距离是用标准化数据算出的欧氏距离(3)重复步骤(2),直至所有的点都不能再分配时为止。步骤(1)也可以不从分割出K个初始聚类开始,而从规定K个初始中心(种子点)开始,然后进入步骤(2)(3)。分层聚类方法是通过一系列或者是相继的合并,或者是相继的分割来进行的,包括聚集分层法和分割分层法。聚集分层法从单个对象开始,将那些最相似的对象首先分组,然后将组与组根据他们之间的相似性进行合并。最后随着相似性的不断下降,所有的组渐渐融合为一个聚类。分割分层法的工作方式与聚集分层法正好相反。最初由所有对象组成的一个组开始,将它分割成两个子组,使一个子组的对象“远离”另一个子组的对象。然后将这两个组进一步分割成不相似的组,直至每个对象单独成为一组时为止。实验报告中使用的分层聚类方法属于聚集分层法中的连接法。连接法包括单连接(最小距离或者最近邻近点)、完全连接(最大距离或者最远邻近点)和平均连接(平均距离)。下图是三种连接规则下聚类合并的示意图。从图中可以看到,当两个组根据它们最邻近成员之间的距离融合时,产生单连接结果;当两个组根据它们最远成员之间的距离融合时,产生完全连接;当两个组根据它们相应位置上的各对成员之间的平均距离融合时,产生平均连接。三、结果与分析问题一:对data1用K–means方法将31个省市自治区分为4组。(1)方法:K-means(2)R程序(红色部分是程序解释,不在R程序中写出,也不在R软件中运行):data1=read.table(F:\\data1.txt,header=T)\\读取data1is.data.frame(data1)\\验证是否为数据框形式输出结果Adata1=as.matrix(data1)\\data1由数据框形式转换为矩阵形式km=kmeans(data1,4)\\K-means方法将数据分成4组km输出结果Bsort(km$cluster)\\对分组起先情况排序输出结果C(3)程序输出结果输出结果A[1]TRUE输出结果B输出结果C(4)分析与结论K-means方法将data1数据分成四类:第一类(3个):江苏省、山东省、广东省;第二类(7个):海南省、贵州省、西藏自治区、甘肃省、青海省、宁夏回族自治区、新疆维吾尔自治区;第三类(13个):北京市、天津市、山西省、内蒙古自治区、吉林省、黑龙江省、安徽省、福建省、江西省、广西壮族自治区、重庆市、云南省、陕西省;第四类(8个):河北省、辽宁省、上海市、浙江省、河南省、湖北省、湖南省、四川省。【注】重复使用Kmeans()函数,系统随机选择4行作为初始聚类中心,得到相同的聚类分析结果,只是聚类分组编号不同,说明输出结果C聚类分析结果不会随初始聚类中心的选择而改变,比较稳定。问题二:对data2用K–means方法将31个省市自治区分为4组。(1)方法:K-means(2)R程序(红色部分是程序解释,不在R程序中写出,也不在R软件中运行):data2=read.table(F:\\data2.txt,header=T)\\读取data2is.data.frame(data2)\\验证是否为数据框形式输出结果Ddata1=as.matrix(data2)\\data2由数据框形式转换为矩阵形式km=kmeans(data2,4)\\K-means方法将数据分成4组km输出结果Esort(km$cluster)\\对分组起先情况排序输出结果F(3)程序输出结果输出结果D[1]TRUE输出结果E输出结果F(4)分析与结论K-means方法将data2数据分成四类:第一类(5个):天津市、江苏省、福建省、山东省、广东省;第二类(3个):北京市、上海市、浙江省;第三类(7个):黑龙江省、贵州省、西藏自治区、甘肃省、青海省、宁夏回族自治区、新疆维吾尔自治区;第四类(16个):河北省、山西省、内蒙古自治区、辽宁省、吉林省、安徽省、江西省、河南省、湖北省、湖南省、广西壮族自治区、海南省、重庆市、四川省、云南省、陕西省。【注】重复使用Kmeans()函数,系统随机选择4行作为初始聚类中心,得到相同的聚类分析结果,只是聚类分组编号不同,说明输出结果F聚类分析结果不会随初始聚类中心的选择而改变,比较稳定。问题三:对data3用K–means方法将31个省市自治区分为4组。(1)方法:K-means(2)R程序(红色部分是程序解释,不在R程序中写出,也不在R软件中运行):data3=read.table(F:\\data3.txt,header=T)\\读取data3is.data.frame(data3)\\验证是否为数据框形式输出结果Gdata3=as.matrix(data3)\\data3由数据框形式转换为矩阵形式km=kmeans(data3,4)\\K-means方法将数据分成4组km输出结果Hsort(km$cluster)\\对分组起先情况排序输出结果I(3)程序输出结果输出结果G[1]TRUE输出结果H输出结果I(4)分析与结论K-means方法将data3数据分成四类:第一类(4个):北京市、天津市、上海市、浙江省;第二类(3个):江苏省、山东省、广东省;第三类(15个):山西省、内蒙古自治区、吉林省、黑龙江省、江西省、广西壮族自治区、海南省、重庆市、贵州省、云南省、陕西省、甘肃省、青海省、宁夏回族自治区、新疆维吾尔自治区;第四类(8个):河北省、辽宁省、安徽省、福建省、河南省、湖北省、湖南省、四川省。【注】重复使用Kmeans()函数,系统随机选择4行作为初始聚类中心,得到相同的聚类分析结果,只是聚类分组编号不同,说明输出结果I聚类分析结果不会随初始聚类中心选择的不同而改变,比较稳定。问题四:对data3用分层聚类法将30个省市(不包括西藏自治区)进行分类。讨论问题三、四得到的结论的异同。(1)方法:聚集分层法中的连接法。(2)R程序(红色部分是程序解释,不在R程序中写出,也不在R软件中运行):data3=read.table(F:\\data3.txt,header=T)\\读取data3data3=as.matrix(data3)\\data3由数据框形式转换为矩阵形式d=dist(data3)\\生成距离结构hc1=hclust(d,”single”)\\单连接法hc2=hclust(d,”complete”)\\完全连接法hc3=hclust(d,”median”)\\平均连接法plot(hc1,hang=-1)\\绘制单连接法树形图rect.hclust(hc1,k=4,border=”red”)输出结果Jplot(hc2,hang=-1)\\绘制完全连接法树形图rect.hclust(hc2,k=4,border=”red”)输出结果Kplot(hc3,hang=-1)\\绘制平均连接法树形图rect.hclust(hc3,k=4,border=”red”)输出结果L(3)程序输出结果输出结果J输出结果K输出结果L(4)分析与结论聚集分层法分别采用单连接、完全连接和平均连接将data3数据分成四类:单连接法第一类(2个):北京市、上海市;第二类(3个):山东省、江苏省、广东省;第三类(1个):浙江省;第四类(24个):天津市、福建省、辽宁省、新疆维吾尔自治区、吉林省、黑龙江省、内蒙古自治区、海南省、宁夏回族自治区、青海省、贵州省、甘肃省、河南省、河北省、四川省、湖北省、湖南省、安徽省、江西省、重庆市、云南省、陕西省、山西省、广西壮族自治区。完全连接第一类(3个):山东省、江苏省、广东省;第二类(5个):天津市、浙江省、福建省、北京市、上海市;第三类(6个):辽宁省、四川省、湖北省、湖南省、河北省、河南省;第四类(16个):海南省、宁夏回族自治区、青海省、贵州省、甘肃省、新疆维吾尔自治区、吉林省、黑龙江省、江西省、陕西省、山西省、广西壮族自治区、重庆市、云南省、内蒙古自治区、安徽省。平均连接第一类(3个):山东省、江苏省、广东省;第二类(2个):北京市、上海市;第三类(1个):浙江省;第四类(24个):海南省、宁夏回族自治区、青海省、贵州省、甘肃省、新疆维吾尔自治区、吉林省、黑龙江省、安徽省、内蒙古自治区、重庆市、云南省、江西省、陕西省、山西省、广西壮族自治区、辽宁省、河南省、河北省、四川省、湖北省、湖南省、天津市、福建省。上述三种分类结果中,单连接法和平均连接法中,“浙江省”均单独作为一个聚类,但是完全连接法中,浙江省与“北京市、上海市”合并,再和“天津市、福建省”合并,形成一个聚类;三种连接法中,“山东省、江苏省、广东省”、“北京市、上海市”、“辽宁省、四川省、湖北省、湖南省、河北省、河南省”均属于同一个聚类。因此,三种连接法聚类分析结果有很高的相似性,他们之间的差别可以接受。通常,以完全连接法得到的聚类分析结果作为连接法分类结果的代表。一方面,完全连接法中只有一个元素的聚类比较少;另一方面,其他连接法中,元素数目最多的聚类往往是多个子聚类的集合,在指定聚类数目k=4时,这些子聚类之间的差异被忽略。例如,平均连接法中,最大的聚类可以分成三个小聚类。比较问题三Kmeans聚类分析结果和问题四中完全连接法聚类分析结果可知,只有“安徽省”和“福建省”的聚类安排不同。两种方法聚类分析结果相同的部分如下:第一类(3个):山东省、江苏省、广东省;第二类(4个):天津市、浙江省、北京市、上海市;第三类(6个):辽宁省、四川省、湖北省、湖南省、河北省、河南省;第四类(15个):海南省、宁夏回族自治区、青海省、贵州省、甘肃省、新疆维吾尔自治区、吉林省、黑龙江省、江西省、陕西省、山西省、广西壮族自治区、重庆市、云南省、内蒙古自治区。在Kmeans方法中,“安徽省、福建省”被同时归入聚类四;在完全连接法中,“安徽省”归入聚类四,“福建省”归入聚类二。问题五:讨论为什么data1和data3的K–means分组不完全一样。(从统计理论和国情两方面进行讨论)K-means方法对于data1和data3聚类分析结果如下:data1:第一类(3个):江苏省、山东省、广东省;第二类(7个):海南省、贵州省、西藏自治区、甘肃省、青海省、宁夏回族自治区、新疆维吾尔自治区;第三类(13个):北京市、天津市