1

我正在处理来自几个不同样本站(站)的一组物种计数(计数)。我已经使用 scikit-bio 的 pw_distance 函数计算了每对可能的样本站之间的 Bray-Curtis 相似度。这会产生一个距离矩阵,其值介于 0 和 1 之间。到目前为止一切都很好。

我想使用该距离矩阵生成树状图,显示样本站如何聚集在一起。我正在使用 scipy 的 hierachy.linkage 函数来查找树状图的链接,然后使用 hierarchy.dendrogram 进行绘图。

这是我的代码:

from skbio.diversity.beta import pw_distances
from scipy.cluster import hierarchy

bc_dm = pw_distances(counts, stations, metric = "braycurtis")

# use (1 - bc_dm) to get similarity rather than dissimilarity
sim = 1 - bc_dm.data

Z = hierarchy.linkage(sim, 'ward')
hierarchy.dendrogram(
    Z,
    leaf_rotation=0.,  # rotates the x axis labels
    leaf_font_size=10.,  # font size for the x axis labels
    labels=bc_dm.ids,
    orientation="left"
)

这是上述代码生成的树状图的链接

据我了解,树状图上的距离应对应于 Bray-Curtis 相似度(类似于距离),但树状图上的距离值最大超过 30。这是正确的吗?如果不是,我如何缩放我的距离以对应样本站之间的 Bray-Curtis 相似性?如果它是正确的,树状图上的距离真正对应的是什么?

4

1 回答 1

1

查看评论中共享的链接,因为它们解决了您的问题。

这些链接中未涵盖的一个scikit-bio步骤是您应该调用链接 on bc_dm.condensed_form(),而不是 on bc_dmor sim。这将为您提供所需格式的输入。如果您传递一个二维矩阵,linkage假设它是您的counts矩阵,并根据这些数据计算您的样本之间的欧几里得距离。

此外,请务必注意method参数 to scipy.cluster.hierarchy.linkage,因为它会影响树状图中分支长度的解释。的文档字符串scipy.cluster.hierarchy.linkage包含有关如何为不同方法计算这些的详细信息。

于 2018-02-06T11:24:23.370 回答