聚类分析在STATA中的实现和案例

聚类分析在STATA中的实现和案例


2024年3月15日发(作者:)

第15章 聚类分析

聚类分析是根据样品或指标的“相似”特征进行分类的一种多元统计分析方

法,其目标是发现样品或指标的自然分类方法。在社会经济领域中存在着大量分

类问题,比如对我国31个省市自治区独立核算工业企业经济效益进行分析,一

般不逐个分析省市自治区,而较好的做法是选取反映企业经济效益的代表性指

标,如百元固定资产实现利率、资金利税率、产值利税率、百元销售收入实现利

润、全员劳动生产率等等,根据这些指标对31个省市自治区进行分类,然后根

据分类结果对企业经济效益进行综合评价,就易于得出科学的分析。

聚类分析方法包括两个体系:系统聚类和非系统聚类。系统聚类法包括最短

距离法、最长距离法、中间距离法、可变距离法、重心法、类平均法、加权类平

均法、Ward最小方差法。非系统聚类方根包括K均值、K中位数法。

15.1 相似性测度

很多多元统计方法,包括聚类分析,是基于变量或观测值的相近程度来分析

的,因此在介绍聚类的Stata命令之前,我们首先介绍一下Stata中关于矩阵相

似性或异性的测度方法。统计学中用各种距离来测度变量或观测值的相似性或相

异性。一般将这种相似性称为相似系数,来刻画两个指标的相似程度,相似系数

绝对值越接近于1,表示两个指标之间的关系越密切,相似系数绝对值越接近于

0,则表示两个指标之间的关系越疏远。Stata计算相似性的命令格式如下:

matrix dissimilarity matname = [varlist] [if] [in] [,options]

一般情况下,我们选用默认情况就行了,对于options不用去理。

15.2 系统聚类法

命令格式1(利用数据进行系统聚类):

cluster singlelinkage [varlist] [if] [in] [, options] 最短距离法

将两个组之间最接近的一对观测案例之间的相异性作为两个组之间的相异性来加以计

算。尽管简单,但是这一方法对特异值或测量错误的耐抗性较差。观测案例是一次性聚类,

往往形成非平衡的、不断加大的组。在这组中,成员很少具有共性,但是又通过中间观测案

例连结起来,这种问题被称作链接问题。

cluster completelinkage [varlist] [if] [in] [, options] 最长距离法

使用两组之间距离最远的一对观测案例作为代表。该方法对特异值没有最短联结法那样

敏感,但具有相反的倾向,即容易将许多案例聚集成空间紧密的群。

cluster averagelinkage [varlist] [if] [in] [, options] 类平均法

使用两个组之间观测案例的平均相异性,产生的属性居于最短联结法和最长联结法之

间。模拟研究报告表明,这一方法在许多情况下都表现很好,并且合理地稳健。这种方法常

用于考古学中。

cluster waveragelinkage [varlist] [if] [in] [, options] 加权类平均法

cluster medianlinkage [varlist] [if] [in] [, options] 中间距离法

加权平均联结法和中位数联结法分别是平均联结法和重心联结法的变种。在这两种情形

中,差异在于不等规模的组在合并时是如何处理的。对于平均联结法和重心联结法说,每一

组元素的数量被分解到计算中,并对更大的组相应地赋予更大的影响(因为每条观测案例权

数相同)。对于加权平均联结法和中位数联结法而言,不管每组中有多少观测案例,两个组

都被赋予相同的权数。同重心联结法一样,中位数联结法也很容易受到逆转的影响。

cluster centroidlinkage [varlist] [if] [in] [, options] 重心法

重心法合并那些平均数最为接近的组(与基于两组元素之间平均距离的平均联结法不

同)。这一方法容易发生逆转,即某次聚合的点比前面的聚合的相异性水平更低。逆转是聚

类结构不稳定的迹象,它难以解释,并且不能用cluster tree画出来。

cluster wardslinkage [varlist] [if] [in] [, options] Ward最小方差法

合并能使误差平方和增加最少的两个组。尽管可以适当地处理多元正态和相似规模的

组,但是在聚类具有不相等的观测案例数时表现较差。

命令格式2(利用矩阵进行系统聚类,一般是用于分等级变量的聚类分析):

clustermat averagelinkage [varlist] [if] [in] [, options]

clustermat medianlinkage [varlist] [if] [in] [, options]

clustermat wardslinkage [varlist] [if] [in] [, options]

clustermat waveragelinkage [varlist] [if] [in] [, options]

clustermat singlelinkage [varlist] [if] [in] [, options]

clustermat completelinkage [varlist] [if] [in] [, options]

clustermat centroidlinkage [varlist] [if] [in] [, options]

在options选项中比较重要,要掌握的有以下几个:

clear 将内存的数据替换为聚类信息

labelvar(varname) 将相似矩阵的行名称以变量表示

name(clname) 聚类分析的名称

在clustermat中,一般是用于我们在社会调查的数据中,我们调查出来的

数据常为如:好、不好和认为、反对这些分等级的数据,在记录时常用0、1、2、

3这些序数来表示等级,所以单单用cluster命令就无法处理这方面的聚类了。

例子1:

webuse labtech,clear

cluster singlelinkage x1 x2 x3 x4, name(L2slnk)

cluster dendrogram L2slnk, xlabel(, angle(90) labsize(*.75))

例子2:

webuse wclub,clear

matrix dissimilarity clubD = , variables Jaccard dissim(oneminus)

* 生成相似系数矩阵clubD

matlist clubD[1..5, 1..5]

clustermat singlelinkage clubD, name(singlink) clear

cluster dendrogram singlink

clustermat wardslinkage clubD, name(wardslink) add

cluster dendrogram wardslink

15.3 K均值聚类法

利用数据进行k均值聚类和k中位数聚类的Stata命令为:

cluster kmeans [varlist] [if] [in] ,k(#) [options]

cluster kmedians [varlist] [if] [in] ,k(#) [options]

其中,k(#)表示分为#组。

measure(measure) 相似性的测度方法,见测度方法汇总表

name(clname) 聚类分析的名称

start(*) 初始值的设定方法,包括如下几种:

krandom[(seed#)] 随机抽取k个不同的观测值作为k组的中心点

firstk[,exclude] 前k个观测值作为k组的初始中心点,exclude表示前k个

观测值不进行聚类

last[,exclude] 后k个观测值作为k组的初始中心点,exclude表示后k个

观测值不进行聚类

random[seed(#)] 从[min,max]的均匀分布中随机生成k个数作为k组的初始

中心点

prandom[seed(#)] 将观测值随机分为k组,用k组的均值作为k组的初始中心

例子:

use /data/r11/physed,clear

summarize flex speed strength

graph matrix flex speed strength

*从图形中判断要分成多少类

cluster k flex speed strength,k(4) name(g4abs)

cluster list g4abs

table g4abs

tabstat flex speed strength,by(g4abs) stat(min mean max)

graph matrix flex speed strength,m(i) mlabel(g4abs) mlabpos(0)

cluster k flex speed strength,k(3) name(g3abs)

cluster k flex speed strength,k(5) name(g5abs)

table g3abs g4abs,col

table g5abs g4abs,col

15.4 聚类停止法则

对于系统聚类法,Stata可以计算不同分类的Calinski and

Harabasz(1974)pseudo-F指数和Duda and Hart(1973)Je(2)/Je(1)指数,从而

判断最优的分类数。对于k均值分类法,Stata则给出了特定分类数下的两种指

数。

Stata中通过数据停止聚类的命令格式为:

cluster stop [clanme] [, options]

Stata中通过矩阵停止聚类的命令格式为:

cluster stop [clanme],variables(varlist) [ options]

例子1:

use /data/r11/physed,clear

cluster k flex speed strength,k(3) name(kmed3) measure(abs) start(lastk)

cluster k flex speed strength,k(4) name(kmed4) measure(abs) start(kr(11736))

cluster k flex speed strength,k(5) name(kmed5) measure(abs) start(prand(8723))

*k表示k均值聚类

cluster stop kmed3

cluster stop kmed4

cluster stop kmed5

*通过聚类停止法则可以得出Calinski and Harabaszpseudo-F指数,

*这是默认情况下的情况。Calinski and Harabaszpseudo-F值越大越好。

cluster averagelink flex speed strength,name(avglnk)

cluster tree avglnk,xlabel(,angle(90) labsize(*.75))

cluster gen avgg=groups(4/5),name(avglnk)

table kmed4 avgg4

table kmed5 avgg5

cluster stop avglnk,rule(calinski)

cluster stop avglnk

cluster stop

cluster stop avglnk,rule(duda) groups(1/10)

*对于Duda and Hart(1973)Je(2)/Je(1)聚类停止法,

*得到了两个统计值Je(2)/Je(1)和pseudo T-squared,

*其判断准则是Je(2)/Je(1)越大越好而pseudo T-squared越小越好。

15.5 分层树

命令格式:

cluster dendrogram [clname] [if] [in] [, options]

案例:

根据中国31个省市自治区的农村居民的收入和消费支出水平,将31个省市

农村科生活水平分成几个级别。

X1——农村居民家庭人均食品支出;x2——农村居民家庭人均衣着支出;x3

——农村居民家庭人均居住支出;x4——农村居民家庭人均家庭设备及服务支

出;x5——农村居民家庭人均交通和通讯支出;x6——农村居民家庭人均文教、

娱乐用品及服务支出;x7——农村居民家庭人均医疗保健支出;x8——农村居民

家庭人均其他商品及服务支出。

反映农村居民生活费支出的变量:x5——农村居民家庭人均食品支出;x6

——农村居民家庭人均衣着支出;x7——农村居民家庭人均居住支出;x8——农

村居民家庭人均家庭设备及服务支出;x9——农村居民家庭人均交通和通讯支

出;x10——农村居民家庭人均文教、娱乐用品及服务支出;x11——农村居民家

庭人均医疗保健支出;x12——农村居民家庭人均其他商品及服务支出。

area

北京市

天津市

河北省

山西省

内蒙古

辽宁省

吉林省

黑龙江省

上海市

江苏省

浙江省

安徽省

福建省

江西省

山东省

河南省

湖北省

湖南省

广东省

广西

海南省

重庆市

四川省

贵州省

云南省

西藏

陕西省

甘肃省

青海省

宁夏

新疆

x1

6389.31

4064.95

1979.52

1713.55

806.48

2035.53

810.17

916.76

8108.32

3895.5

4587.44

1737.84

2421.46

1842.36

2263.46

1499.93

1742.33

1990.52

3684.47

1283.39

808.63

1764.64

1620.4

1002.68

617.47

759.72

1243.57

867.98

983.16

1260.04

422.82

x2

2058.57

3097.14

2416.22

1986.38

3218.01

2931.26

3344.72

3163.7

711.26

2812

3762.93

2114.24

3146.09

2552.59

2962.96

2699.3

2690.83

2196.61

2001.5

2190.62

3235.09

2016.64

2061.7

1512.47

2156.8

1845.04

1475.01

1543.24

1602.74

2032.01

2779.71

x3 x4 x5 x6 x7 x8 x9 x10 x11

709.44

301.06

219.32

210.32

320.62

283.37

380.71

351.05

697.11

290.93

532.06

199.44

197.85

205.68

280.49

215

210.36

244.17

259

154.32

123.82

197.15

209.22

96.38

181.97

53.84

251.23

164.72

270.06

318.77

244.59

x12

127.29

82.75

64.68

69.85

69.43

107.78

93.27

83.41

179.06

120.56

146.14

58.94

113.01

60.58

79

66.27

99.8

78.67

136.82

50.81

86.67

42.87

53.49

33.75

43.97

70.09

60.7

31.05

61.54

72.2

46.24

1142.8 1071.25 2470.72 577.81 1162.96 402.56 950.53 883.35

463.39 285.3 1568.95 292.52 699.21

696.14

486.75

569.6

601.71

530.69

871.51

153.61 402.87 324.47

151.94 346.73 250.07

138.26 328.74 380.7

118.63 281.09 1192.93 203.74

153.05 244.26 1206.69 276.23

114.9

201.29

183.2

516.79 1483.61 239.96

408.4 1549 298.82

128.8 406.74 399.35

158.91 426.47 387.97

124.8 355.58

130

341.7 594.66 1362.44 254.05

243.57 531.57 1267.68 308.49 395.02 437.57

855.3 849.83 1770.85 3731.27 467.33 1806.08 503.96 879.57

253.47 395.5 2202.58 276.39

2779.1

860.35 250.11 614.23 713.23

747 437.52 470.04 454.79 1659.88 364.05 851.06

650.51

777.51

559.39

804.75

712.61

651.5

629.75

964.53

535.45

391.04

328.97

469.73

427.4

626.12

324.07

598.59

387.83

568.79

582.47

492.77

119.04 231.37 1454.18 180.04

179.03 449.49

66.55

2162.3 263.59

165.53 280.63 294.84

222.86 534.68 390.15

155 301.68 236.01 235.69 1633.12 157.75

163.93 251.07 1551.77 250.29

53

40.82

57.06

202.02 1165.81 209.75

182.4 1711.34 187.07

240.91 452.55 417.27

169.61 290.79 214.38

234.92 290.44 267.13

171.11 286.01 278.67

189.01 483.66 272.87

124.01 261.85 172.73

104.07 261.57 288.49

167.74 238.43 211.83

163.99 256.08 173.26

94.36 159.61 122.1

268.26 1947.52 169.06

339.47 374.35 2388.91 177.67

41.76

53.58

50.9

71.37

63.92

109.83

185.46

86.01

19.49

148.55

65.73

174.58 1594.67

292.68 1537.55

91.19

89.89

294.03 1537.59 160.34

367.74 1627.58 174.59

217.86 1119.64 112.46

218.5

385.6

1483.16 119.63

1153.37 248.68

175.5

118.97 248.25 168.55

140.06 147.21 62.26

331.87 1115.66 155.07 270.63 351.99

95.58 234.69 219.91

110.35 316.75 148.86

123.91 299.29 192.57

97.58 276.31 168.99

293.08 1132.53 134.66

326.8 1220.02 200.26

323.64 1288.47 217.17

121.15 179.23 1146.69 218.61

程序:

*定义变量的标签

label var area 省份

label var x1 "农村居民家庭人均工资性收入"

label var x2 "农村居民家庭人均家庭经营收入"

label var x3 "农村居民家庭人均财产性收入"

label var x4 "农村居民家庭人均转移性收入"

label var x5 "农村居民家庭人均食品支出"

label var x6 "农村居民家庭人均衣着支出"

label var x7 "农村居民家庭人均居住支出"

label var x8 "农村居民家庭人均家庭设备及服务支出"

label var x9 "农村居民家庭人均交通和通讯支出"

label var x10 "农村居民家庭人均文教、娱乐用品及服务支出"

label var x11 "农村居民家庭人均医疗保健支出"

label var x12 "农村居民家庭人均其他商品及服务支出"

*average

cluster averagelinkage x1-x12,name(consum)

cluster dendrogram consum, xlabel(,angle(90) labsize(*.80))

cluster tree consum,labels(area) xlabel(,angle(-90) labsize(*.75))

cluster generate areatype = groups(3),name(consum) /*分组,不过效果不是很*/

*cluster K值分类

summarize x1-x12

graph matrix x1-x12

cluster kmeans x1-x12,k(4) name(g4abs)

cluster list g4abs

table g4abs

list area if g4abs==1

list area if g4abs==2

list area if g4abs==3

list area if g4abs==4

tabstat x1-x12,by(g4abs) stat(min mean max) /*观察各分组的消费指标差异*/

graph matrix x1-x12,m(i) mlabel(g4abs) mlabpos(0)

cluster kmeans x1-x12,k(3) name(g3abs)

cluster kmeans x1-x12,k(5) name(g5abs)

table g3abs g4abs,col

table g5abs g4abs,col

*聚类停止法则

cluster stop g3abs

cluster stop g4abs

cluster stop g5abs

cluster stop consum,rule(calinski)

cluster stop consum,rule(duda)

gen id=_n

gen n=0

replace n=1 if id==27

replace n=2 if id==19

replace n=3 if id==31

replace n=4 if id==18

replace n=5 if id==1

sort n

cluster k x1-x12,k(3) name(kmed3) measure(abs) start(lastk)

cluster k x1-x12,k(4) name(kmed4) measure(abs) start(kr(11736))

cluster k x1-x12,k(5) name(kmed5) measure(abs) start(prand(8723))

cluster stop kmed3

cluster stop kmed4

cluster stop kmed5

list area if kmed3==1

list area if kmed3==2

list area if kmed3==3

cluster k x1-x12,k(3) name(nkmed3) measure(abs) start(lastk)

cluster k x1-x12,k(4) name(nkmed4) measure(abs) start(lastk)

cluster k x1-x12,k(5) name(nkmed5) measure(abs) start(lastk)

cluster stop nkmed3

cluster stop nkmed4

cluster stop nkmed5

list area if nkmed3==1

list area if nkmed3==2

list area if nkmed3==3

list area if nkmed3==4

list area if nkmed3==5

list area if nkmed5==1

list area if nkmed5==2

list area if nkmed5==3

list area if nkmed5==4

list area if nkmed5==5

list area if g3abs==1

list area if g3abs==2

list area if g3abs==3

练习:

x1——农村居民家庭人均工资性收入;x2——农村居民家庭人均家庭经营收

入;x3——农村居民家庭人均财产性收入;x4——农村居民家庭人均转移性收入。

area

北京市

天津市

河北省

山西省

内蒙古

辽宁省

吉林省

黑龙江省

上海市

江苏省

浙江省

安徽省

福建省

江西省

山东省

河南省

湖北省

湖南省

广东省

广西

海南省

重庆市

四川省

贵州省

云南省

西藏

陕西省

甘肃省

青海省

宁夏

新疆

x1

6389.31

4064.95

1979.52

1713.55

806.48

2035.53

810.17

916.76

8108.32

3895.5

4587.44

1737.84

2421.46

1842.36

2263.46

1499.93

1742.33

1990.52

3684.47

1283.39

808.63

1764.64

1620.4

1002.68

617.47

759.72

1243.57

867.98

983.16

1260.04

422.82

x2

2058.57

3097.14

2416.22

1986.38

3218.01

2931.26

3344.72

3163.7

711.26

2812

3762.93

2114.24

3146.09

2552.59

2962.96

2699.3

2690.83

2196.61

2001.5

2190.62

3235.09

2016.64

2061.7

1512.47

2156.8

1845.04

1475.01

1543.24

1602.74

2032.01

2779.71

x3

1142.8

463.39

118.63

153.05

114.9

201.29

183.2

243.57

849.83

253.47

437.52

119.04

179.03

66.55

163.93

53

40.82

57.06

339.47

41.76

53.58

50.9

71.37

63.92

109.83

185.46

86.01

19.49

148.55

65.73

121.15

x4

1071.25

285.3

281.09

244.26

516.79

408.4

594.66

531.57

1770.85

395.5

470.04

231.37

449.49

235.69

251.07

202.02

182.4

268.26

374.35

174.58

292.68

294.03

367.74

217.86

218.5

385.6

331.87

293.08

326.8

323.64

179.23


发布者:admin,转转请注明出处:http://www.yc00.com/news/1710453919a1759505.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信