R语言进行聚类分析

发布于:2025-04-10 ⋅ 阅读:(37) ⋅ 点赞:(0)

目录

简述6种系统聚类法

实验实例和数据资料:

上机实验步骤:

进行最短距离聚类:

进行最长距离聚类:

进行中间距离聚类:

进行类平均法聚类:

进行重心法聚类:

进行ward.D聚类:

进行ward.D2聚类:


简述6种系统聚类法

(一)单链接聚类法:也称为最小距离聚类法,它通过计算两个簇中最近的成员之间的距离来确定簇之间的距离。该方法通常会产生长而细的簇,对异常值敏感。

(二)完全链接聚类法:也称为最大距离聚类法,它通过计算两个簇中最远的成员之间的距离来确定簇之间的距离。该方法通常会产生紧凑的簇,对异常值不敏感。

(三)平均链接聚类法:它通过计算两个簇中所有成员之间的平均距离来确定簇之间的距离。该方法可以在一定程度上平衡单链接和完全链接的缺点。

(四)中心链接聚类法:它通过计算两个簇的质心之间的距离来确定簇之间的距离。质心是指簇中所有成员的平均值。该方法产生的簇具有更加均衡的大小。

(五)Ward聚类法:它基于最小方差准则,通过计算将两个簇合并后整体的方差增加量来确定簇之间的距离。该方法倾向于产生方差相对较小的簇。

(六)类平均聚类法:它通过计算两个簇中所有成员之间的平均距离来确定簇之间的距离。类平均聚类法与平均链接聚类法类似,但不同于平均链接聚类法使用所有成员之间的距离,而是只使用两个簇之间的成员之间的距离。

实验实例和数据资料:

P2122) 为了比较我国 31个省、市、自治区 1996年和2007(数据见本章例7.2d3.1)城镇居民生活消费的分布规律,根据调查资料作区域消费类型划分。并将1996年和2007年的数据进行对比分析。今收集了八个反映城镇居民生活消费结构的指标(1996年数据见表1和表2)

表1 八个反映城镇居民生活消费结构的指标

符号

指标

单位

X1

X2

X3

X4

X5

X6

X7

X8

人均食品支出

人均衣着商品支出

人均家庭设备用品及服务支出

人均医疗保健支出

人均交通和通信支出

人均娱乐教育文化服务支出

人均居住支出

人均杂项商品和服务支出

/

/

/

/

/

/

/

/

表2 1996年全国31个省、市、自治区城镇居民消费数据

X1

X2

X3

X4

X5

X6

X7

X8

北京

8170.22

2794.87

1974.25

1717.58

4106.04

3984.86

2125.99

1401.08

天津

7943.06

1950.68

1205.62

1694.29

3468.86

2353.43

2088.62

1007.31

河北

4404.4

1488.11

977.46

1117.3

2149.57

1550.63

1526.28

426.29

山西

3676.65

1627.53

870.91

1020.61

1775.3

2065.44

1612.36

516.84

内蒙古

6117.93

2777.25

1233.39

1394.8

2719.92

2111

1951.05 

943.72

辽宁

5803.9

2100.71

1145.57

1343.05

2589.18

2258.46

1936.10 

852.69

吉林

4658.13

1961.2

908.43

1692.11

2217.87

1935.04 

1932.24

627.3

黑龙江

5069.89

1803.45

796.38

1334.8

1661.35

1396.38

1543.29 

556.16

上海

9822.88

2032.28

1705.47

1350.28

4736.36

4122.07

2847.88

1537.78

江苏

7074.11

2013

1378.85

1122

3135

3290

1564.3

794.00 

浙江

8008.16

2235.21

1400.57

1244.37

4568.32

2848.75

2004.69

947.13

安徽

6370.23

1687.49

898.55

869.89

2411.16

1904.15

1633.55

480.16

福建

7424.67

1685.07

1416.94

935.5

3219.46

2448.36

2013.53

949.19

江西

5221.1

1566.49

1004.15

672.5

1812.78

1671.24

1414.89

471.58

山东

5625.94

2277.03

1269.65

1109.37

2474.83

1909.84

1780.07

665.52

河南

4913.87

1916.99

1281.06

1054.54

1768.28

1911.16

1315.28

660.81

湖北

6259.22

1881.85

1059.22

1033.46

1745.05

1922.83

1456.30 

391.57

湖南

5583.99

1520.35

1146.65

1078.82

2409.83

2080.46

1529.50 

537.51

广东

8856.91

1614.87

1539.09

1122.71

4544.21

3222.40 

2339.12

893.95

广西

5841.16

1015.88

1086.46

776.26

2564.92

2093.99

1622.50 

386.46

海南

6979.22

932.63

1030.79

734.28

2005.73

1923.48

1578.65

408.26

重庆

7245.12

2333.81

1325.91

1245.33

1976.19

1722.66

1376.15

588.70 

四川

6471.84

1727.92

1196.65

1019.04

2185.94

1877.55

1321.54

542.99

贵州

4915.02

1401.85

1083.77

633.72

1870.08

1950.28

1496.49

351.66

云南

5741.01

1356.91

987.24

1085.46

2197.73

2045.29

1384.91

357.61

西藏

5889.48

1528.14

541.46

617.97

500.6

1551.34

963.99

638.89

陕西

6075.58

1915.33

1060.49

1310.19

2019.08

2208.06

1465.81

626.16

甘肃

5162.87

1747.32

939.48

1117.42

1503.61

1547.65

1596

406.37

青海

4777.1

1675.06

890.08

813.13

1742.96

1471.98

1684.78

484.41

宁夏

4895.2

1737.21

1001.82

1158.83

2503.65

1868.42

1497.98

657.99

新疆

5323.5

2036.94

977.8

1179.77

2210.25

1597.99

1275.35

604.55

试对该数据进行聚类分析。​​​​​​​

上机实验步骤:

1.准备数据:根据提供的消费数据,将数据保存在一个Excel文件中,并确保每个地区在所有指标上都有完整的数据。将文件命名为"1996年数据.xlsx"。

2. 加载数据并计算距离矩阵

data=read.xlsx('1996年数据.xlsx',rowNames=T);data  
dist_matrix <- dist(data)  

结果如下

进行最短距离聚类:

j1 <- hclust(dist_matrix, method = "single")  
plot(j1, main = "最短距离聚类树状图")  

结果如下

进行最长距离聚类:

j2 <- hclust(dist_matrix, method = "complete")  
plot(j2, main = "最长距离聚类树状图")  

结果如下

进行中间距离聚类:

j3 <- hclust(dist_matrix, method = "median")  
plot(j3, main = "中间距离聚类树状图")  

结果如下

进行类平均法聚类:

j4 <- hclust(dist_matrix, method = "average")  
plot(j4, main = "类平均法聚类树状图")  

结果如下

进行重心法聚类:

j5 <- hclust(dist_matrix, method = "centroid")  
plot(j5, main = "重心法聚类树状图")

结果如下

进行ward.D聚类:

j6 <- hclust(dist_matrix, method = "ward.D")  
plot(j6, main = "ward.D聚类树状图")  

结果如下

进行ward.D2聚类:

j7 <- hclust(dist_matrix, method = "ward.D2")  
plot(j7, main = "ward.D2聚类树状图") 

结果如下