skbio.stats.ordination.pcoa

skbio.stats.ordination.pcoa(distance_matrix, method='eigh', number_of_dimensions=0, inplace=False)[源代码]

进行主坐标分析。

状态:从0.4.0开始实验。

主坐标分析(PCoA)是一种类似于主成分分析(PCA)的方法,不同之处在于PCoA对距离矩阵进行操作,通常是非欧几里德距离,因此具有生态意义的距离,如微生物组研究中的UniFrac。

在生态学中,主成分分析(PCA)保留的欧几里德距离通常不是一个好的选择,因为它不能很好地处理双零(物种沿环境梯度的单峰分布,因此如果一个物种在同一地点的两个地点不存在,则无法知道环境变量是否在其中一个地点太高,在另一个地点太低,或者在两个地点都太低,等等。另一方面,如果一个物种出现在两个地点,这意味着这两个地点相似)。

请注意,返回的特征向量未归一化为单位长度。

参数:
  • distance_matrix (DistanceMatrix) -- 距离矩阵。

  • method (str, optional) -- 执行PCoA时使用的特征分解方法。默认情况下,使用SciPy的 eigh ,它计算所有维度的精确特征向量和特征值。另一种方法是, fsvd ,使用更快的启发式特征分解,但会失去准确性。精度损失的大小取决于数据集。

  • number_of_dimensions (int, optional) -- 要将距离矩阵缩减到的维度。该数字确定将返回多少个特征向量和特征值。默认情况下,等于距离矩阵的维数,作为使用SciPy的默认特征分解 eigh 方法计算所有特征向量和特征值。如果通过使用快速启发式特征分解 fsvd 时,应指定所需的尺寸数量。请注意,默认的特征分解方法 eigh 本身不支持将矩阵降维到指定的维数,因此,如果指定此参数,则只计算所有特征向量和特征值,而不会获得速度增益,并且仅计算 number_of_dimensions 将会被退还。将值指定为 0 默认设置,将设置 number_of_dimensions 的维数等于指定的 distance_matrix

  • inplace (bool, optional) -- 如果为True,则以减少内存消耗的方式使距离矩阵就地居中。

返回:

对象,该对象存储PCoA结果,包括特征值、每个特征值解释的比例以及转换后的样本坐标。

返回类型:

OrdinationResults

备注

备注

如果距离不是欧几里得距离(例如,如果距离是半测的,并且三角形不成立),则可能出现负本征值。有不同的方法来处理这个问题(参见Legendre&Legendre 1998,S 9.2.3),但目前没有一种方法在这里实现。但是,只要出现负本征值,就会发出警告,允许用户决定是否可以安全地忽略它们。