我正在使用分层聚类从数据集中提取一定数量的聚类。我的目标是测试当我减少使用的数据量(以及可能包括的变量)时,集群解决方案的健壮性。我认为这意味着对数据进行二次采样,然后在每次调整某些内容时创建一个新的距离矩阵和一个新的树状图。我认为可以衡量聚类解决方案敏感性的一种方法是将使用完整数据生成的聚类质心与使用数据子集生成的聚类质心进行比较,我可以通过将它们投影到PCoA空间并计算聚类质心之间的距离来实现(在PCoA空间)。这与vegan软件包中的 betadisper 函数所做的事情很接近(此外,它还计算了群集中的点到质心的距离)。但是,我的问题是,如果在子采样时创建了不同的距离矩阵,则子采样运行之间的PCoA空间将不同,因此是不可比的。是否可以简单地从不同子样本运行中标准化PCoA空间以使其具有可比性?
任何指针或其他方法将不胜感激,
标记
library(vegan)
# my data has categorial variables so I'll use gower with the iris dataset for example
mydist<-dist(iris[,1:4])
# Pull, out 3 clusters
hc_av<-hclust(d=mydist, method='average')
my_cut<-cutree(hc_av, 3)
# calc distance to cluster centre
mod<-betadisper(mydist, my_cut)
mod
plot(mod)
# randomly remove 5% of data and recalc as above - this would be bootstrapped
mydist2<-dist(iris[sort(sample(1:150, 145)),1:4])
# Pull, out 3 clusters
hc_av2<-hclust(d=mydist2, method='average')
my_cut2<-cutree(hc_av2, 3)
# calc distance to cluster centre
mod2<-betadisper(mydist2, my_cut2)
mod2
par(mfrow=c(1,2))
plot(mod, main='full model'); plot(mod2, main='subset')
# How can I to calculate the distance each cluster centroid has moved when
subsampling the data relative to the full model?