0

在我之前的一篇文章中,我在 pheatmap 包的迭代过程中进行了 kmeans_k 聚类,以将我的行(基因)从 90 减少到更严格的子集。自从我尝试使用factoextra, cluster,包在行上测试最佳集群时我就这样做了NbClust其中kmeans集群的最佳数量非常低。因此,我对具有 90 行和 15 列的数据进行了迭代 kmeans_k,并保持行和列聚类打开,列相关,行默认。这让我觉得这些集群已经排名了。集群在 pheatmap 中排名是真的吗?或者具有来自 pheatmap 的 cluster1 的那个应该是顶级集群。我根据我的输出选择顶级集群,因为我的数据包含上下基因,SD 最高的基因是排名最高的。我在做什么正确吗?现在我正在分离我的 up 和 down 基因列表并计算最佳 kmeans,我发现了更好的集群。现在,如果我用 pheatmap 绘制它们,我将如何选择哪个应该是顶级集群?因为我现在正在根据方向性用 kemans 绘制 2 个单独的热图。现在从这些到具有最佳集群的热图,我将如何选择哪个是顶级集群?我应该为每个集群计算 SD 吗?上一篇关联

基于方向分离的代码

o.90.df<-90.df[order(90.df$logFC),]
ind<-which(o.90.df$logFC>1) 
up.o.90.df<-o.90.df[ind,]
ind<-which(o.90.df$logFC<1) 
down.o.90.df<-o.90.df[ind,]

现在创建将计算最佳集群的数据框 需要从中导入值的源数据框是

tpm #source dataframe
tpm.up.o.90.df<-tpm[(rownames(tpm) %in% genes.up.o.90.names),]

tpm.down.o.90.df<-tpm[(rownames(tpm) %in% genes.down.o.90.names),]

mydata1<-scale(tpm.up.o.90.df)
my_data2<-scale(tpm.down.o.90.df)

fviz_nbclust(my_data1, kmeans, method = "gap_stat") ## 3 clusters optimal
fviz_nbclust(my_data2, kmeans, method = "gap_stat") ## 5 clusters optimal

now based on what clusters I get am plotting pheatmap:
pheatmap(tpm.up.o.90.df,scale="row",clustering_distance_cols = "correlation",show_rownames= T,show_colnames=T,color=col,annotation=annote,cluster_col=T,fontsize_row = 6,fontsize_col = 7,clustering_method = "ward.D2",border_color = NA,cellwidth = NA,cellheight = NA,kmeans_k = 3)

pheatmap(tpm.down.o.90.df,scale="row",clustering_distance_cols = "correlation",show_rownames= T,show_colnames=T,color=col,annotation=annote,cluster_col=T,fontsize_row = 6,fontsize_col = 7,clustering_method = "ward.D2",border_color = NA,cellwidth = NA,cellheight = NA,kmeans_k = 5)

由于有 2 个单独的热图,我应该如何从该热图中选择顶部集群。在这里使用 kmeans_k 对行和列进行聚类并使用 pheatmap 制作热图是否正确?如果是这样,我将如何检测最佳集群?通过计算集群的 SD 并查看哪个集群的 SD 最高并选择它?如果有人有任何想法。如果需要数据和数字,我可以在 Dropbox 链接中上传。至少做 pheatmap 的数据。到目前为止,在分离基因方向和 maknig kmeans 时,我在概念上被打破了。欣赏一些专家的建议。

4

0 回答 0