排序方法 (skbio.stats.ordination

该模块包含多种排序方法,包括主坐标分析、对应分析、冗余分析和规范对应分析。

排序函数

ca(X[, scaling])

多元统计的计算对应分析

pcoa(distance_matrix[, method, ...])

进行主坐标分析。

pcoa_biplot(ordination, y)

计算描述符到PCoA矩阵的投影

cca(y, x[, scaling])

计算规范(也称为约束)对应关系

rda(y, x[, scale_Y, scaling])

计算冗余分析,一种规范分析。

Classes

OrdinationResults(short_method_name, ...[, ...])

存储排序结果,提供序列化和绘图支持。

效用函数

mean_and_std(a[, axis, weights, with_mean, ...])

计算加权平均值和标准差

corr(x[, y])

计算列之间的相关性 xxy .

scale(a[, weights, with_mean, with_std, ...])

按列缩放数组以获得加权平均值0和标准

svd_rank(M_shape, S[, tol])

矩阵秩 M 给定它的奇异值 S .

e_matrix(distance_matrix)

从距离矩阵计算E矩阵。

f_matrix(E_matrix)

从E矩阵计算F矩阵。

示例

这是一个人工数据集(中的表11.3 [1]) 代表着不同地点鱼类的丰富程度 (Y ,响应变量)和环境变量 (X ,解释变量)。

>>> import numpy as np
>>> import pandas as pd

首先,我们需要构造解释变量数据集 X .

>>> X = np.array([[1.0, 0.0, 1.0, 0.0],
...               [2.0, 0.0, 1.0, 0.0],
...               [3.0, 0.0, 1.0, 0.0],
...               [4.0, 0.0, 0.0, 1.0],
...               [5.0, 1.0, 0.0, 0.0],
...               [6.0, 0.0, 0.0, 1.0],
...               [7.0, 1.0, 0.0, 0.0],
...               [8.0, 0.0, 0.0, 1.0],
...               [9.0, 1.0, 0.0, 0.0],
...               [10.0, 0.0, 0.0, 1.0]])
>>> transects = ['depth', 'substrate_coral', 'substrate_sand',
...              'substrate_other']
>>> sites = ['site1', 'site2', 'site3', 'site4', 'site5', 'site6', 'site7',
...          'site8', 'site9', 'site10']
>>> X = pd.DataFrame(X, sites, transects)

然后我们需要创建一个数据框,其中包含在不同地点观察到的物种的信息。

>>> species = ['specie1', 'specie2', 'specie3', 'specie4', 'specie5',
...            'specie6', 'specie7', 'specie8', 'specie9']
>>> Y = np.array([[1, 0, 0, 0, 0, 0, 2, 4, 4],
...               [0, 0, 0, 0, 0, 0, 5, 6, 1],
...               [0, 1, 0, 0, 0, 0, 0, 2, 3],
...               [11, 4, 0, 0, 8, 1, 6, 2, 0],
...               [11, 5, 17, 7, 0, 0, 6, 6, 2],
...               [9, 6, 0, 0, 6, 2, 10, 1, 4],
...               [9, 7, 13, 10, 0, 0, 4, 5, 4],
...               [7, 8, 0, 0, 4, 3, 6, 6, 4],
...               [7, 9, 10, 13, 0, 0, 6, 2, 0],
...               [5, 10, 0, 0, 2, 4, 0, 1, 3]])
>>> Y = pd.DataFrame(Y, sites, species)

我们现在可以执行规范对应分析了。矩阵 X 包含一个连续变量(深度)和一个使用单热编码编码的分类变量(基底类型)。

>>> from skbio.stats.ordination import cca

我们明确地需要避免完全共线,所以我们将放弃一种衬底类型(最后一列 X

>>> del X['substrate_other']
>>> ordination_result = cca(Y, X, scaling=2)

我们发现,前三个轴解释了80%的方差。

>>> ordination_result.proportion_explained
CCA1    0.466911
CCA2    0.238327
CCA3    0.100548
CCA4    0.104937
CCA5    0.044805
CCA6    0.029747
CCA7    0.012631
CCA8    0.001562
CCA9    0.000532
dtype: float64

引用