LDA Effect Size分析 LEfSe详解

LDA Effect Size分析 LEfSe详解LDAEffectSize分析LEfSe详解LEfSe的作用LEfSe的原理LEfSe的作用在介绍LEfSe的作用前,我们先解释一个概念——biomarker,维基百科给出的定义是Abio-marker,orbiologicalmarkerisameasurableindicatorofsomebiologicalstateorcondition.Biomarkersareoftenmeasuredandevaluatedtoexaminenorma

大家好,又见面了,我是你们的朋友全栈君。

LDA Effect Size分析 LEfSe详解

LEfSe的作用

在介绍LEfSe的作用前,我们先解释一个概念——biomarker,维基百科给出的定义是

A bio-marker, or biological marker is a measurable indicator of some biological state or condition. Biomarkers are often measured and evaluated to examine normal biological processes, pathogenic processes, or pharmacologic responses to a therapeutic intervention.

用我们搞数据的人能理解的话讲,biomarker就是非常强力的用来分类的特征,它可以是基因、细胞或者物种分类单元等。比如(瞎编的例子,不能当真)某个研究团队发现脚气会影响中央后回位于Sylvian Fissure附近的区域,从而影响舌头的知觉,于是这个团队打算进一步研究脚气怎么通过肠脑轴影响舌头的知觉,他们随机调查了一批志愿者,记录了志愿者的一些demographic information以及病理信息,并记录了他们肠道菌群的物种分类信息与物种丰度,于是他们有了一张数据表:

Group 有脚气 无脚气
界.门.纲.目.科.属1 丰度 丰度
界.门.纲.目.科.属2 丰度 丰度
。。。

他们想知道哪个属的细菌的丰度在有脚气与无脚气的志愿者之间是存在显著差异的,这个时候就需要LDA Effect Size分析了。

也就是说LDA Effect Size分析的作用是发现不同group之间存在显著差异的biomarker。下面我们介绍LDA Effect Size分析的原理。

LEfSe的原理

首先我们写出数据,用 i i i表示第 i i i个志愿者, i = 1 , 2 , ⋯   , n i=1,2,\cdots,n i=1,2,,n,用 y i y_i yi表示第 i i i个志愿者所在的group, y i ∈ { 1 , 2 , ⋯   , K } y_i \in \{1,2,\cdots,K\} yi{
1,2,,K}
(比如讨论有无脚气时 K = 2 K=2 K=2,我们可以用 y i = 1 y_i=1 yi=1表示志愿者 i i i有脚气,用 y i = 2 y_i=2 yi=2表示志愿者 i i i无脚气),用 x i x_i xi表示第 i i i个志愿者的肠道菌群物种分类信息,
x i = ( x i 1 , ⋯   , x i M ) T x_i = (x_{i1},\cdots,x_{iM})^T xi=(xi1,,xiM)T

比如 x i 1 x_{i1} xi1可以表示是Bacteroidaceae(拟杆菌科)、 x i 2 x_{i2} xi2可以表示Coriobacteriaceae(红蝽杆菌科);用 z i z_i zi表示第 i i i个志愿者的demographic information以及病理信息,
z i = ( z i 1 , ⋯   , z i L ) T z_i = (z_{i1},\cdots,z_{iL})^T zi=(zi1,,ziL)T

比如 z i 1 z_{i1} zi1可以表示性别、 z i 2 z_{i2} zi2表示种族、 z i 3 z_{i3} zi3表示BMI等。

第一步 Kruskal-Wallis检验
因为 M M M通常是一个非常大的数,也就是说肠道内包含的细菌属非常多,但我们只需要找到效果最好的那几个作为biomarker,所以在使用LDA分析前,我们最好先做一个预处理:选出在两个group间具有显著差异的属,筛掉那些不具有显著差异的属。

μ m j \mu_{mj} μmj表示第 j j j个group的第 K K K个细菌属的平均丰度, j = 1 , ⋯   , K j=1,\cdots,K j=1,,K m = 1 , ⋯   , M m=1,\cdots,M m=1,,M,我们想要检验:
H 0 : μ m 1 = μ m 2 = ⋯ = μ m K H a : 至 少 有 一 个 与 其 他 的 不 等 H_0:\mu_{m1} = \mu_{m2} = \cdots = \mu_{mK} \\ H_a:至少有一个与其他的不等 H0:μm1=μm2==μmKHa:

在介绍单因素试验设计的时候,我们介绍了检验多总体均值的方法——ANOVA,然而ANOVA需要总体服从正态分布,然而物种丰度通常会服从有偏的分布,所以我们并不能使用ANOVA来做这个检验,不过我们也讨论过,当总体的正态假设不满足时,我们可以使用非参的Kruskal-Wallis检验

第二步 Wilcoxon秩和检验
接下来我们再做一个数据预处理,我们希望菌群丰度差异是group不同造成的,(比如菌群丰度主要是由有无脚气造成的),那么我就需要证明其他因素不会造成菌群丰度的显著差异。

比如在完成第一步以后,如果我们发现有无脚气的志愿者他们肠道红蝽杆菌科的丰度具有显著差异,但又有研究者提出,红蝽杆菌科丰度的差异可能与性别有关,于是我们按照性别把第 j , 1 ≤ j ≤ K j,1 \le j \le K j,1jK个group每一个都分为2个subgroup,我们希望同一个group的两个subgroup之间的红蝽杆菌科丰度没有显著差异,但是不同group的subgroup之间红蝽杆菌科丰度存在显著差异。为了实现这个比较,我们需要给这 2 K 2K 2K个subgroup的红蝽杆菌科丰度做两两比较。在单因素试验设计中我们介绍过三种做两两比较的方法:Tukey检验、Fisher Least Significant Difference方法、Dunnett方法。遗憾的是,这三种方法都要求基于ANOVA的假设进行,因此在这个应用场景下,我们这三种方法同样一个也不能用。这时我们同样就需要非参数检验了,Wilcoxon秩和检验就可以在subgroup之间进行两两比较。

对第一步选出来的那些biomarker都使用Wilcoxon秩和检验,同一个group的两个subgroup之间没有显著差异,不同group的subgroup之间存在显著差异的biomarker我们可以保留下来,然后扔掉其他的biomarker。需要注意的是把group分成不同的subgroup是基于 z i z_i zi进行的,如果存在某个 z i l z_{il} zil它可能造成biomarker的显著差异,我们就按 z i l z_{il} zil的不同取值分subgroup。

比如我们按照性别把第 j , 1 ≤ j ≤ K j,1 \le j \le K j,1jK个group每一个都分为2个subgroup,但是我们发现某些group的两个subgroup之间的红蝽杆菌科丰度存在显著差异,这就说明group之间红蝽杆菌科丰度的显著差异可能并不是由group(有无脚气)导致的,而是由性别决定的,于是我们排除掉红蝽杆菌科丰度。如果我们发现某些group的两个subgroup之间的红蝽杆菌科丰度没有显著差异,那么我们可以留下红蝽杆菌科丰度,并将其作为指示脚气的一个重要biomarker。

要找存在显著影响的 z i l z_{il} zil也很简单,对丰度使用adonis,用 z i 1 , ⋯   , z i L z_{i1},\cdots,z_{iL} zi1,,ziL以及group作为feature, z i 1 , ⋯   , z i L z_{i1},\cdots,z_{iL} zi1,,ziL中显著的那些feature就应该用来做一下Wilcoxon秩和检验。

第三步 LDA
现在我们就有了质量还不错的数据了,这些数据就是显著的biomarker,并且它们的显著差异主要是由group不同造成的,而不会受其他confounding variable的显著影响。

那么最后我们要做的就是评估这些biomarker的重要性了,我们可以用LDA进行分析。简单解释一下LDA的原理,之前我没写完的统计学习的博客里推导了LDA的输赢比的公式:

ln ⁡ P ( Y = 1 ∣ X = x ) P ( Y = − 1 ∣ X = x ) = ln ⁡ π 1 exp ⁡ { − 1 2 ( x − μ 1 ) T Σ − 1 ( x − μ 1 ) } π 0 exp ⁡ { − 1 2 ( x − μ 0 ) T Σ − 1 ( x − μ 0 ) } = [ − 1 2 ( x − μ 1 ) T Σ − 1 ( x − μ 1 ) + ln ⁡ π 1 ] − [ − 1 2 ( x − μ 0 ) T Σ − 1 ( x − μ 0 ) + ln ⁡ π 0 ] \ln{\frac{P(Y=1|X=x)}{P(Y=-1|X=x)}} = \ln{\frac{\pi_1 \exp{\{-\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1)\}}} {\pi_0 \exp{\{-\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0)\}}}} \\ = \left[-\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1) + \ln \pi_1 \right] – \left[-\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0) + \ln \pi_0 \right] lnP(Y=1X=x)P(Y=1X=x)=lnπ0exp{
21(xμ0)TΣ1(xμ0)}
π1exp{
21(xμ1)TΣ1(xμ1)}
=[21(xμ1)TΣ1(xμ1)+lnπ1][21(xμ0)TΣ1(xμ0)+lnπ0]

每个中括号里面的式子具有一样的构造,它代表的是数据点到centroid的距离,这个式子的值越大,那么对应的biomarker的效果就越强。

比如还是在脚气的例子中,假设我们通过第一步和第二步筛选出 N N N个biomarker,那么 n n n个志愿者就可以表示成 n n n个在 N N N维空间中的点,点的第 a a a个坐标表示第 a a a种biomarker的丰度( 1 ≤ a ≤ N 1 \le a \le N 1aN)。这 n n n个点会集中在两个中心,这两个中心的坐标分别表示有脚气/无脚气的志愿者第 a a a种biomarker的平均丰度( 1 ≤ a ≤ N 1 \le a \le N 1aN),我们称这两个中心为centroid。我们可以把这 n n n个点投影到第 a a a个坐标轴上,就得到了 n n n个位于直线上的点,有脚气的会落在一些区域,没有脚气的会落在另一些区域,如果这两个区域几乎不重叠,那么第 a a a个biomarker就是一个非常重要的biomarker。我们可以用上面的对数输赢比来度量biomarker的重要性,比如设置对数输赢比大于2表示biomarker非常重要,那么我们就可以用对数输赢比的柱状图或者Cladogram等可视化方法来展示我们发现的biomarker的重要性以及它们的演化规律。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134464.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号