← 方法工作台🌱 数据库🧭 逻辑地图下载 Markdown

🫧 聚类分析:把相似放在一起,也检查它们是否真的像

逻辑框架

分型目的 → 分析单位 → 特征及尺度 → 相似性/距离 → 算法 → 类数 → 稳定性与外部解释。 先说明要分的是患者、医院还是地区,以及分类将如何使用;不能先运行算法,再挑一种最方便解释的故事。

选择算法

数据形态 候选 检查
连续数值、欧氏距离、近球形 K-means 标准化、离群值、初始化与类大小
层级关系、需树状图 层次聚类 距离与连接方法匹配;Ward通常基于欧氏结构
不规则形状、噪声点 DBSCAN等密度法 距离、密度参数及高维距离退化
连续/分类混合 Gower距离+适当方法 变量类型、权重、缺失与稀有类别
需概率模型和归类不确定性 潜类别/潜剖面 分布、局部独立、可识别性与后验概率

普通K-means不能直接处理未经设计的类别编码;“医保类型1/2/3”不代表等距连续变量。纵向轨迹聚类另见公共数据库Skill,不能把多波数据简单摊成独立患者。

预处理与验证

预先排除ID、结果泄漏变量和重复信息,检查缺失、极端值及分布。标准化方式要与特征含义匹配;费用等偏态变量可能需合理变换,但不能自动对所有变量取对数。

类数结合研究目的、轮廓系数/间隙等指标、类大小、解释性与稳定性,而不是肘部图“看起来像”。更换随机种子、重抽样与预处理参数评估稳定性;可用调整Rand指数或类内一致度比较。若要把聚类标签用于外部人群,固定训练样本的变换/中心并独立验证,不能在测试集重新聚类后当同一标签。

R教学样例

set.seed(20261023)
X <- scale(iris[,1:4])
km <- kmeans(X,centers=3,nstart=50)
table(km$cluster)
aggregate(iris[,1:4],list(cluster=km$cluster),mean)
library(cluster)
sil <- silhouette(km$cluster,dist(X))
mean(sil[,"sil_width"])
# iris物种标签未参与建模;本例仅示范接口,不作为患者分型依据。
* 仅对选定连续特征标准化;先完成缺失与异常检查
egen z_age = std(age)
egen z_util = std(utilization)
egen z_cost = std(logcost)
set seed 20261023
cluster kmeans z_age z_util z_cost, k(3) name(km3)
tabulate km3

R算法与限制参照 stats::kmeans官方文档。大样本完整距离矩阵内存开销很高,应评估抽样/近似或其他算法,而不盲目生成n×n矩阵。

结果解释与交付 🐾

输出特征清单、预处理、算法/距离、参数与种子、类数依据、稳定性、分群特征图及外部验证。类别命名先描述数据特征;“高利用—高费用组”比未经验证的“脆弱患者”更准确。

使用建类特征的组间显著性不能充当独立验证;聚类后再检验这些变量差异,本来就可能出现明显分离。探索性分型与预后关联需要保留分类不确定性和多重分析边界,不能直接解释成因果亚型。

可复制请求:请先比较我的变量类型和研究用途,选择距离与算法,再提出类数、稳定性及独立验证方案。不要按最显著的结局差异挑类数。

普贤 · 社医卫管方法库 · 教学参数与代码接口需结合实际数据、软件版本和研究设计核对。