Stata:聚类分析-cluster

发布时间:2021-10-20 阅读 20335

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:李秋萍 (中国地质大学)
邮箱liqiuping2017@outlook.com


目录


1. 简介

  • 聚类分析是一种探索性的数据分析,用于分类观察和辨别不同的群体的多元统计分析方法;
  • 将样本或变量根据数据特征 (内在相似性 ) 划分成不同类别,类别内的数据差异尽可能小,而类别之间的差异尽可能大;
  • 它适合用来分析复杂的数据集,通常使用的回归建模方法可能由于异常值、复杂的相互影响或违背假设而不适用;
  • 应用方向广泛,被广泛应用于数据挖掘、经济分析、地质勘探、土壤分类、天气预报等各个领域。

2. 理论背景

2.1 聚类分析的原理

基本思想:研究的样本或变量之间存在着程度不同的相似性 (亲疏关系)。

基本原理:根据样本自身的属性,用数学方法按照某种相似性 (或差异性 ) 指标,定量地确定样本之间的亲疏关系,并按这种亲疏关系程度对样本进行聚类。

分析步骤

  • 对数据进行变换处理;
  • 找出能够度量样本或变量之间相似程度的统计量;
  • 利用统计量将样本或变量进行分类;
  • 决定类的个数,得出聚类结果。

2.2 聚类分析统计量

研究样本或变量的相似性的数量指标有两种:

相似系数:性质越相似的样本或变量,它们的相似系数越接近于 1 或 -1,而彼此越无关的变量或样本相似系数越接近于 0。常用相似系数统计量有两个:

  • 相关系数
  • 夹角余弦

距离:将每一个样本看作 p 维空间的一个点,用某种度量测量点与点之间的距离,距离较近的归为一类,距离较远的点归为不同类。常用距离统计量有以下几种:

  • 绝对距离
  • 欧式距离
  • 兰式距离
  • 马氏距离
  • 切比雪夫距离

2.3 聚类分析的类型

根据聚类对象的不同,分为 Q 型聚类和 R 型聚类:

  • Q 型聚类:样本之间的聚类,按照变量对所观察的样本进行分类,常用距离来测度样本之间的相似程度。
  • R 型聚类:变量之间的聚类,按照样本对多个变量进行分类,常用相似系数来测度变量之间的相似程度。

根据聚类方法的不同分为系统聚类、K 均值聚类、模糊聚类、图论聚类法等,其中,

  • 系统聚类法:最常用的聚类方法之一,又称为层次聚类 (hierarchical cluster)。事先不确定要分多少类,先把每一个对象作为一类,然后按照一定层次进行分类聚类。不仅度量个体之间的距离,还度量类与类之间的距离,由类间距离定义的不同产生不同的聚类方法;

  • K 均值聚类法:又称为快速聚类 (quick cluster),事先需要确定要分的类别数据,效率比层次聚类要高。若观测数据比较大 (通常 200 以上),宜使用快速聚类分析方法。

3. Stata 实操

3.1 cluster 命令

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

// Kmedians cluster analysis
  cluster kmedians [varlist] [if] [in] , k(#) [ options ]
options                  Description
---------------------------------------------------------------
* k(#)                   聚类到 # 个组
  measure(measure)       相似性或不相似性度量,默认为 L2 (欧式距离)
  name(clname)           聚类分析结果名称

Options
  start(start_option)    获取 k 个初始组
  keepcenters            将 k 个最终组的平均值或中位数添加到数据中

Advanced
  generate(groupvar)     分组变量名称
  iterate(#)             最大迭代次数,默认是迭代 (10000)
---------------------------------------------------------------
. webuse labtech, clear //加载数据
. cluster kmeans x1 x2 x3 x4, k(8) //进行 kmeams 聚类分析,生产8个组
. cluster kmeans x1 x2 x3 x4, k(8) measure(L1) name(k8abs)  //用绝对值距离代替欧氏距离,命名聚类分析结果为k8abs
. cluster kmedians x1 x2 x3 x4, k(6) measure(Canberra)      //执行kmedians聚类分析,使用兰式距离创建6个组
. cluster kmedians x1 x2 x3 x4, k(6) start(firstk)          //创建6个组,使用数据集中的前6个观察数据作为起始中心
. cluster kmedians x1 x2 x3 x4, k(6) start(firstk, exclude) //不包括前6个观察结果

3.2 clustermat 命令

clustermat 命令是 cluster 命令中的一部分,对用户提供的不相似矩阵进行层次聚类分析。使用 clustermat 命令可以使用所有的分层聚类方法,但不可以使用分区聚类方法 (kmeans 和 kmedians)。

clustermat linkage matname ...
linkage                Description
----------------------------------------------------------------
singlelinkage          single-linkage cluster analysis
averagelinkage         average-linkage cluster analysis
completelinkage        complete-linkage cluster analysis
waveragelinkage        weighted-average linkage cluster analysis
medianlinkage          median-linkage cluster analysis
centroidlinkage        centroid-linkage cluster analysis
wardslinkage           Ward's linkage cluster analysis
---------------------------------------------------------------
. webuse wclub, clear //加载数据
. matrix dissimilarity clubD = , variables Jaccard dissim(oneminus)
. matlist clubD[1..5, 1..5] //检查不相似矩阵
. clustermat singlelinkage clubD, name(singlink) clear //执行最短距离聚类分析,并清除内存中的数据集
. cluster dendrogram singlink  //图形
. clustermat wardslinkage clubD, name(wardslink) add   //执行Ward距离聚类分析,在内存中添加结果
. cluster dendrogram wardslink  //查看结果

在聚类命令后,可用 cluster list 命令描述聚类过程:

. cluster list
wardslink  (type: hierarchical,  method: wards,  dissimilarity: user matrix clubD)
      vars: wardslink_id (id variable)
            wardslink_ord (order variable)
            wardslink_hgt (height variable)
     other: cmd: clustermat wardslinkage clubD, name(wardslink) add

singlink  (type: hierarchical,  method: single,  dissimilarity: user matrix clubD)
      vars: singlink_id (id variable)
            singlink_ord (order variable)
            singlink_hgt (height variable)
     other: cmd: clustermat singlelinkage clubD, name(singlink) clear

4. 参考文献

  • 陈峰. 现代医学统计方法与 Stata 应用. 第2版[M]. 中国统计出版社, 2003.
  • cluster 帮助文档

5. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh cluster 聚类, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxhsongbl 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh