多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题

第7章 聚类分析

文章会用到的数据请在这个网址下下载多元统计分析及R语言建模(第五版)数据
练习题
1)下面给出5个元素两两之间的距离,利用最短距离法、最长距离法和类平均法做出5个元素的谱系聚类,画谱系图并做出比较。

x1 <- c(0,4,6,1,6)
x2 <- c(4,0,9,7,3)
x3 <- c(6,9,0,10,5)
x4 <- c(1,7,10,0,8)
x5 <- c(6,3,5,8,0)
x <- rbind(x1,x2,x3,x4,x5)
y <- as.dist(x)
y

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第1张图片
最短距离法

hc = hclust(y,"single")
hc

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第2张图片

names(hc)

在这里插入图片描述

data.frame(hc $ merge,hc $ height)

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第3张图片

plot(hc)

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第4张图片
最长距离法

hc = hclust(y)
hc

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第5张图片

names(hc)

在这里插入图片描述

data.frame(hc $ merge,hc $ height)

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第6张图片

plot(hc)

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第7张图片
类平均距离法

hc = hclust(y,"average")
hc

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第8张图片

names(hc)

在这里插入图片描述

data.frame(hc $ merge,hc $ height)

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第9张图片

plot(hc)

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第10张图片
2)为了比较全国31个省、市、自治区1996年和2007年城镇居民生活消费的分布规律,根据调查资料做区域消费类型划分。并将1996年和2007年数据进行对比分析。今收集了8个反应城镇居民生活消费结构的指标,…
x1——人均食品支出(元/人) x2——人均衣着商品支出(元/人) x3——人均家庭设备用品及服务支出(元/人) x4——人均医疗保健支出(元/人) x5——人均交通和通信支出(元/人) x6——人均娱乐教育文化服务支出(元/人) x7——人均居住支出(元/人) x8——人均杂项商品和服务支出(元/人)

library(openxlsx)
d7.2=read.xlsx("mvexer5.xlsx",sheet = 'E7.2',rowNames = T)
d7.2

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第11张图片散点图

plot(d7.2,gap=0)

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第12张图片
计算距离矩阵

D =dist(d7.2)
D

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第13张图片
聚类
最短距离法

hc = hclust(D,"single")
hc

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第14张图片

names(hc)

在这里插入图片描述

data.frame(hc $ merge,hc $ height)

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第15张图片

plot(hc)

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第16张图片
最长距离法

hc = hclust(D)
hc

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第17张图片

names(hc)

在这里插入图片描述

data.frame(hc $ merge,hc $ height)

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第18张图片

plot(hc)

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第19张图片
中间距离法

plot(hclust(D,"median"))

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第20张图片类平均法

plot(hclust(D,"average"))

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第21张图片重心法

plot(hclust(D,"centroid"))

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第22张图片Ward.D法

plot(hclust(D,"ward.D"))

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第23张图片Ward.D2法

plot(hclust(D,"ward.D2"))

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第24张图片综合考虑以上分析结果,使用类平均方法聚类效果比较好,且分为四类比较合适。
类平均法

hc = hclust(D,"average")
hc

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第25张图片分两类

plot(hc)
rect.hclust(hc,k = 2,border = 'green')

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第26张图片

cutree(hc,k = 2)

在这里插入图片描述
分三类

plot(hc)
rect.hclust(hc,k = 3,border = 'blue')

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第27张图片

cutree(hc,k = 3)

在这里插入图片描述

分四类

plot(hc)
rect.hclust(hc,k = 4,border = 'pink')

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第28张图片

cutree(hc,k = 4)

在这里插入图片描述
3)按例7.3模拟方法对n=20,50,100,1000,10000分别进行聚类
当n=20时

set.seed(1) #设定种子数
x1 = matrix(rnorm(20,0,0.25),ncol = 10) #生成矩阵1
x2 = matrix(rnorm(20,1,0.25),ncol = 10) #生成矩阵2
x = rbind(x1,x2) #按行合并
hc = hclust(dist(x))
hc

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第29张图片

plot(hc)
rect.hclust(hc,k = 2,border = "blue")

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第30张图片

km = kmeans(x,2) #kmeans聚类
kc = km$cluster
kc #kmeans聚类结果
plot(x,pch = kc,col = kc) #画聚类结果图

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第31张图片当n=50时

set.seed(1) #设定种子数
x1 = matrix(rnorm(50,0,0.25),ncol = 10) #生成矩阵1
x2 = matrix(rnorm(50,1,0.25),ncol = 10) #生成矩阵2
x =  rbind(x1,x2) #按行合并
hc = hclust(dist(x))
hc

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第32张图片

plot(hc)
rect.hclust(hc,k = 2,border = "blue")

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第33张图片

km = kmeans(x,2) #kmeans聚类
kc = km$cluster
kc #kmeans聚类结果
plot(x,pch = kc,col = kc) #画聚类结果图

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第34张图片当n=100时

set.seed(1) #设定种子数
x1 = matrix(rnorm(100,0,0.25),ncol = 10) #生成矩阵1
x2 = matrix(rnorm(100,1,0.25),ncol=10) #生成矩阵2
x = rbind(x1,x2) #按行合并
hc = hclust(dist(x))
hc

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第35张图片

plot(hc)
rect.hclust(hc,k = 2,border = "blue")

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第36张图片

km = kmeans(x,2) #kmeans聚类
kc = km $ cluster
kc #kmeans聚类结果
plot(x,pch = kc,col = kc) #画聚类结果图

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第37张图片当n=1000时

set.seed(1) #设定种子数
x1 = matrix(rnorm(1000,0,0.25),ncol = 10) #生成矩阵1
x2 = matrix(rnorm(1000,1,0.25),ncol = 10) #生成矩阵2
x = rbind(x1,x2) #按行合并
hc = hclust(dist(x))
hc

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第38张图片

plot(hc)
rect.hclust(hc,k = 2,border = "blue")

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第39张图片

km = kmeans(x,2) #kmeans聚类
kc = km $ cluster
kc #kmeans聚类结果
plot(x,pch = kc,col = kc) #画聚类结果图

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第40张图片
多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第41张图片当n=10000时

set.seed(1) #设定种子数
x1 = matrix(rnorm(10000,0,0.25),ncol = 10) #生成矩阵1
x2 = matrix(rnorm(10000,1,0.25),ncol = 10) #生成矩阵2
x = rbind(x1,x2) #按行合并
hc = hclust(dist(x))
hc

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第42张图片

plot(hc)
rect.hclust(hc,k = 2,border = "blue")

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第43张图片

km = kmeans(x,2) #kmeans聚类
kc = km $ cluster
kc #kmeans聚类结果

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第44张图片

plot(x,pch=kc,col=kc) #画聚类结果图

多元统计分析及R语言建模(第五版)——第7章 聚类分析课后习题_第45张图片

你可能感兴趣的:(多元统计分析及R语言建模)