排序方法 (skbio.stats.ordination
)¶
该模块包含多种排序方法,包括主坐标分析、对应分析、冗余分析和规范对应分析。
排序函数¶
|
多元统计的计算对应分析 |
|
进行主坐标分析。 |
|
计算描述符到PCoA矩阵的投影 |
|
计算规范(也称为约束)对应关系 |
|
计算冗余分析,一种规范分析。 |
Classes¶
|
存储排序结果,提供序列化和绘图支持。 |
效用函数¶
|
计算加权平均值和标准差 |
|
计算列之间的相关性 x 或 x 和 y . |
|
按列缩放数组以获得加权平均值0和标准 |
|
矩阵秩 M 给定它的奇异值 S . |
|
从距离矩阵计算E矩阵。 |
|
从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
引用