R语言 RDA分析(去冗余物种)

Python011

R语言 RDA分析(去冗余物种),第1张

也做了挺多次RDA分析,自己现在小结一下RDA分析流程:

就我个人而言,虚线前面都是不太经历的步骤,我一般不会主动删去样品的环境信息,因为我接触的菌群这块本来就没有什么多余的环境信息-_-||,所以我的重点放在怎么去除多余OTU或菌群上面。

一般而言,我首先会做一次差异分析,挑选有差异的OTU或菌群进行展示(phyloseq推荐使用DESeq2和edgeR,详见 Waste Not, Want Not: Why Rarefying Microbiome Data Is Inadmissible ),这里不是重点不在赘述。

但是差异OTU或菌群还有可能太多,RDA呈现出来密密麻麻的,调也得调好久,最后还是好不美观。

偶然间,发现envfit不仅可以评估环境因子的显著性,也可以评估物种的相关性和显著性,这为我们进一步去取冗余物种提供了条件,值得记录下来学习。

示例:

一下自己学习关联规则经典算法Apriori的笔记。

1、概述

Apriori算法是用一种称为逐层搜索的迭代方法,从项集长度k=1开始,选出频繁的k=1项集,根据先验性质:频繁项集的子集一定是频繁的(逆否命题:非频繁项集的超集一定是非频繁的,通俗的说就是某件事发生的概率很低,比这件事发生条件更严苛的事情发生的概率会更低),筛选k=2项集中的频繁项集,以此迭代k=3...。每迭代一次都要完整的扫描一次数据库。

2、关联规则三度:

支持度:占比

置信度:条件概率

提升度:相关性

3、R语言示例代码如下:(小众语言的辛酸:选项里没有。。)

[plain] view plain copy

library(arules)

#从rattle包中读入数据

dvdtrans <- read.csv(system.file("csv", "dvdtrans.csv",package="rattle"))

str(dvdtrans)

#将数据转化为合适的格式

data <- as(split(dvdtrans$Item,dvdtrans$ID),"transactions")

data

#用 apriori命令生成频繁项集,设其支持度为0.5,置信度为0.8

rules <- apriori(data, parameter=list(support=0.5,confidence=0.8,minlen = 2))

#用inspect命令查看提取规则

inspect(rules)

常用数据形式有data.frame格式和list格式,前者即A项集为一列B项集为另一列,后者为A和B放在同一个购物篮中。

去除冗余规则以及提取子规则代码如下:

[plain] view plain copy

redundant.rm <- function(rule,by="lift")

{

#rule:需要进行简化的规则

#by:在清除的时候根据那个变量来选择,

#可能取值为"support","lift","confidence"

a <- sort(rule,by=by)

m<- is.subset(a,a,proper=TRUE)

m[lower.tri(m, diag=TRUE)] <- NA

r <- colSums(m, na.rm=TRUE) >= 1

finall.rules <- a[!r]

return(finall.rules)

}

rules <- redundant.rm(rules)

rules.sub <- subset(rules, subset = lhs %in% "筛选项集名称" &lift >1)