1 距离(distance)

1.1 公理化定义

  • 对称性(symmetric)
  • 正则性(necessarily 0)
  • 三角不等性(triangle inequality)

2 微生物多样性常用度量算法

2.1 binary_jaccard

2.1.1 jaccard distance1

杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。公式如下:

\[J_{\delta} (A,B) = 1 - J(A,B) = \frac{|A \cup B| - |A \cap B|}{|A \cup B |}\]

2.1.2 讨论

  • Qiime中支持 abund_jaccard,binary_jaccard 两种jaccard 算法
  • 区别在于考虑丰度( abund_jaccard ),考虑有无( binary_jaccard )

2.2 bray_curtis2

2.2.1 bray_curtis_dissimilarity3

因为不满足三角不等性,所以不是严格意义上的距离(distance),而是异同(dissimilarities)

\[D_{bray-curtis}=1-2\frac{\sum min\left(S_{A,i}\mbox{, } S_{B,i}\right)}{\sum S_{A,i}+\sum S_{Bi}}\]

这里,

\(S_{A,i}\) = 群落A中第i个OTU的序列数

\(S_{B,i}\) = 群落B中第i个OTU的序列数

2.2.2 讨论4

  • 考量生态丰度数据在不同采样点采集,bray-curtis_dissimilarity 是最知名的方法,能很好的量化样本之间的差异;
  • 因为不满足三角不等性,所以不是严格意义上的距离(distance),而是异同(dissimilarities)

2.3 unweighted_unifrac5

2.3.1 算法示意图



2.3.2 公式

\[ u = \frac{\sum_{i=1}^{N} l_i | A_i - B_i |} {\sum_{i=1}^{N} l_i \max(A_i, B_i)} \]

这里

\(N\) 是树中的节点数

\(l_i\) 代表\(i\)节点与父节点的分支长度

\(A_i\)\(B_i\) 的值等于0或1,代表节点\(i\)的后代分别在a和b中不存在或存在。

2.4 weighted_unifrac6

2.4.1 算法示意图



2.4.2 讨论

对于unweighted_unifrac进行定量

3 UniFrac7

3.1 公式

广义的 UniFrac 距离,定义如下

\[d^{(α)} = \frac{∑_{i=1}^m b_i (p^A_{i} + p^B_{i})^α |p^A_{i} - p^B_{i}|/(p^A_{i} + p^B_{i})}{ ∑_{i=1}^m b_i (p^A_{i} + p^B_{i})^α}\]

这里,

\(m\) 代表树枝的数量, \(b_i\) 代表第 \(i\) 树枝的长度 , \(p^A_{i}\), \(p^B_{i}\) 代表 \(i\) 枝上群落A及群落B的比例.

广义的 UniFrac 距离包含一个额外的参数 \(α\) 来控制权重以消除丰度过高的物种对于计算的影响

α=0.5 使用最为广泛.

3.2 R包8

  • Weighted UniFrac(定量)
  • Unweighted UniFrac(定性)
  • Variance adjusted weighted UniFrac(方差矫正)

3.3 Qiime9

  • unifrac_G:考虑独有的样本,非对称的
  • unifrac_G_full_tree: 从整体考虑独有的样本,非对称的
  • unweighted_unifrac:每条枝指向的叶节点中来自两个群落的比例,给每条枝加权重
  • unweighted_unifrac_full_tree: 从整体考虑unweighted_unifrac
  • weighted_normalized_unifrac:加权UniFrac标准化,对于不同的根到端的距离标准化
  • weighted_unifrac:加权UniFrac

4 常用的距离(distance)算法10

4.1 欧式距离(Euclidean Distance)

欧式距离是最易于理解的一种距离计算方法,源自欧式空间中两点间的距离公式。

\[d = \sqrt[2]{(a-b)^T(a-b)}\]

用R语言计算距离主要是dist函数。若X是一个M×N的矩阵,则dist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离

4.2 曼哈顿距离(Manhattan Distance)

从名字就可以猜出这种距离的计算方法了。想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”。而这也是曼哈顿距离名称的来源, 曼哈顿距离也称为城市街区距离(City Block distance)

两个n维向量a(a1;a2;…;an)与 b(b1;b2;…;bn)间的曼哈顿距离

\[d = \sum_{k=1}^{n} |a_{k} - b_{k}|\]

4.3 切比雪夫距离(Chebyshev Distance)

国际象棋玩过么?国王走一步能够移动到相邻的8个方格中的任意一个。那么国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?自己走走试试。你会发现最少步数总是max( | x2-x1 | , | y2-y1 | ) 步 。有一种类似的一种距离度量方法叫切比雪夫距离。 两个n维向量a(a1;a2;…;an)与 b(b1;b2;…;bn)间的曼哈顿距离

\[d = max_{k} | a_{k} - b_{k}|\]

或者

\[d = lim_{p \rightarrow \infty} (\sum_{k=1}^{n} |a_{k} - b_{k}|^{p})^{1/p}\]

4.4 闵可夫斯基距离(Minkowski Distance)

闵可夫斯基距离不是一种距离,而是一组距离的定义

4.4.1 闵可夫斯基距离的定义

两个n维变量\(a(a1;a2;...;an)\)\(b(b1;b2;...;bn)\)间的闵可夫斯基距离的定义为:

\[d= \sqrt[p]{\sum_{k=1}^{n} |a_{k} - b_{k}|^{p}}\]

其中p为一个变参数

  • \(p=1\)时,就是曼哈顿距离;
  • \(p=2\)时,就是欧式距离;
  • \(p \rightarrow \infty\)时,就是切比雪夫距离;

如下:

4.4.2 闵可夫斯基距离的缺点

  • 没有消除量纲(scale)的影响
  • 没有考量变量的分布

4.5 标准化欧氏距离 (Standardized Euclidean distance )

4.5.1 标准化欧氏距离定义

\[d = \sqrt{\sum_{k=1}^{n} (\frac{a_{k} - b_{k}} {\delta_{k}})^{2}}\]

4.5.2 特征

标准化变量的数学期望为0,方差为1

4.6 马氏距离(Mahalanobis Distance)

4.6.1 马氏距离定义

\[d(X_{i},X_{j}) = \sqrt{(X_{i} - X_{j})^{T} S^{-1}(X_{i} - X_{j})}\]

4.6.2 优缺点

量纲无关,排除变量之间的相关性的干扰。

4.7 汉明距离(Hamming distance)

4.7.1 汉明距离的定义

两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。例如字符串“1111”与“1001”之间的汉明距离为2。

4.8 兰式距离

4.8.1 兰式距离定义

\[d_{ij} = \sum_{k=1} ^{n} \frac{|x_{ik} - x_{jk}|}{x_{ik} + x_{jk}}\]

4.8.2 特点

与马氏距离一样,兰氏距离对数据的量纲不敏感。不过兰氏距离假定变量之间相互独立,没有考虑变量之间的相关性。

4.9 相关系数 ( Correlation coefficient )

4.9.1 相关系数的定义

\[\rho_{XY} = \frac{cov(X,Y)}{\sqrt{d(X)} \sqrt{d(X)}} = \frac{E((X-EX)(Y-EY))}{\sqrt{d(x)} \sqrt{d(X)}}\]

4.9.2 相关系数说明

  • 相关系数是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。
  • 相关系数的绝对值越大,则表明X与Y相关度越高。
  • 当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。

4.10 相关距离 (Correlation distance)

4.10.1 相关距离的定义

\[D_{XY} = 1 - \rho_{XY}\]

4.10.2 相关距离说明

  • Spearman 相关距离
  • Pearson 相关距离

5 讨论

6 参考


  1. Jaccard

  2. braycurtis

  3. Bray-Curtis_dissimilarity

  4. stanford_maeb5

  5. Unweighted_UniFrac_algorithm

  6. weighted_UniFrac_algorithm

  7. UniFrac

  8. GUniFrac

  9. beta_diversity_metrics

  10. distance-R