距离矩阵与基于距离的统计 (skbio.stats.distance
)¶
此子包提供序列化、反序列化和操作内存中的差异矩阵和距离矩阵的功能。它还包含各种统计方法,这些方法对距离矩阵进行操作,通常将距离(如社区距离)与感兴趣的类别和/或连续变量(如性别或年龄)联系起来。还提供了用于比较距离矩阵的方法(例如,使用Mantel检验计算两个或多个距离矩阵之间的相关性)。
数据结构:相异矩阵和距离矩阵¶
这个包提供了两个矩阵类, DissimilarityMatrix 和 DistanceMatrix . 这两个类都可以存储对象之间差异/区别的度量。差异/距离矩阵既包括对象之间的差异/距离(浮动)矩阵,也包括识别矩阵中每个对象的唯一ID(对象标签;字符串)。
DissimilarityMatrix 可用于存储对象之间的差异性度量,并且不要求差异是对称的(例如,使用 PD增益 测量 [1]) . DissimilarityMatrix 是一个更通用的容器来存储差异 DistanceMatrix .
DistanceMatrix 欧几里德距离是对称的。
备注
DissimilarityMatrix 可用于存储距离,但建议使用 DistanceMatrix 存储这种类型的数据,因为它提供了额外的对称性检查。距离矩阵 is a 差异矩阵;这是在类设计中通过 DistanceMatrix 子类 DissimilarityMatrix .
Classes¶
|
存储对象之间的差异。 |
|
存储对象之间的距离。 |
功能¶
|
生成填充随机距离的距离矩阵。 |
例外情况¶
异类矩阵验证失败的一般错误。 |
|
距离矩阵验证失败的一般错误。 |
|
|
差异矩阵中不存在的ID查找错误。 |
示例
假设我们有下面的分隔文本文件,它存储了三个具有id的对象之间的距离 a
, b
和 c
::
\ta\tb\tc
a\t0.0\t0.5\t1.0
b\t0.5\t0.0\t0.75
c\t1.0\t0.75\t0.0
从文件加载距离矩阵:
>>> from io import StringIO
>>> from skbio import DistanceMatrix
>>> dm_fh = StringIO("\ta\tb\tc\n"
... "a\t0.0\t0.5\t1.0\n"
... "b\t0.5\t0.0\t0.75\n"
... "c\t1.0\t0.75\t0.0\n")
>>> dm = DistanceMatrix.read(dm_fh)
>>> print(dm)
3x3 distance matrix
IDs:
'a', 'b', 'c'
Data:
[[ 0. 0.5 1. ]
[ 0.5 0. 0.75]
[ 1. 0.75 0. ]]
访问对象之间的距离(标量) 'a'
和 'c'
:
>>> dm['a', 'c']
1.0
获取对象之间距离的行向量 'b'
以及所有其他对象:
>>> dm['b']
array([ 0.5 , 0. , 0.75])
numpy索引/切片也按预期工作。提取第三列:
>>> dm[:, 2]
array([ 1. , 0.75, 0. ])
将距离矩阵序列化为分隔文本文件:
>>> out_fh = StringIO()
>>> _ = dm.write(out_fh)
>>> out_fh.getvalue() == dm_fh.getvalue()
True
也可以从现有的 numpy.array
(或类似数组的对象,例如嵌套的Python列表):
>>> import numpy as np
>>> data = np.array([[0.0, 0.5, 1.0],
... [0.5, 0.0, 0.75],
... [1.0, 0.75, 0.0]])
>>> ids = ["a", "b", "c"]
>>> dm_from_np = DistanceMatrix(data, ids)
>>> print(dm_from_np)
3x3 distance matrix
IDs:
'a', 'b', 'c'
Data:
[[ 0. 0.5 1. ]
[ 0.5 0. 0.75]
[ 1. 0.75 0. ]]
>>> dm_from_np == dm
True
在构造相异/距离矩阵时,可以省略id。将自动使用递增整数:
>>> dm = DistanceMatrix(data)
>>> dm.ids
('0', '1', '2')
基于距离的统计¶
除上述数据结构外,本软件包还提供了以下基于距离的统计方法。
分类变量统计¶
|
使用ANOSIM测试各组之间的显著差异。 |
|
使用PERMANOVA检测各组间的显著差异。 |
|
用Marti检验多变量群分布的均匀性 |
连续变量统计¶
|
找到与距离最大相关的变量子集。 |
距离矩阵比较¶
|
使用Mantel检验计算距离矩阵之间的相关性。 |
|
对每对给定的距离矩阵运行Mantel测试。 |
引用