方差分解分析(Variance Partitioning Analysis)可用于确定指定环境因子对微生物(原生生物/植物/动物等等)群落结构变化的解释比例。要计算指定环境因子与群落结构的相关性,就需要约束非指定环境因子的同时,对指定环境因子做排序分析。其实就是相当于做partial排序分析。公众号文章《R统计-PCA/PCoA/db-RDA/NMDS/CA/CCA/DCA等排序分析教程》写过如何使用vegan包进行偏分析。

本文记录一下使用vegan包进行VPA分析的两种方法。

一、 数据准备

# 1. 设置工作路径,老生常谈,设置工作路径和查看路径内容一定是第一步
setwd("D:\\VPAanalysis")
getwd()
dir()# 2. 调用R包
install.packages("ecodist")
library(vegan)
browseVignettes("vegan")
# 3. 读入数据
spe=read.csv("spe.csv",header=TRUE,row.names=1,sep=",", colClasses = c("character",rep("numeric",times=8)) )# 群落组成数据,物种组成数据是整数,为了使读入数据格式为数值型,设置colClasses,7为物种种类。
## ?rep  # 查看函数用法和函数中参数意义
spegroup=read.csv("group.csv",header=TRUE,row.names=1,sep=",")#分类数据,包含两种类别,grazing和soil depth
group # 这里不用group数据
env=read.csv("env.csv",header=TRUE,row.names=1,sep=",") #环境数据:土壤理化因子与气候因子。虚构数据仅用作教程
env

图1|物种组成数据(spe.csv)。

图2|环境因子数据(env.csv)。

图3|分类数据(group.csv)。

二、方差分解分析(Variation partitioning analysis,VPA)

2.1 方法一:RDA及VPA分析

使用rda()进行偏RDA分析,然后自行计算指定环境因子解释率以及不同环境因子方差解释率重叠部分。此部分也有两种计算方式。R统计-VPA分析(RDA/CCA)文中记录了先计算指定环境因子的partial effect(局部效应),再使用总体环境因子效应-指定环境环境因子效应,得到共有方差解释率。此处记录计算指定环境因子的marginal effect(边际效应),然后所有边际效应相加-环境因子总体方差解释率,得到环境因子对微生物群落结构的解释率的共有部分。

# 2.1.1 RDA-全部环境因子。
RDA=rda(decostand(spe, "hel"),env)
RDA
sumr=summary(RDA)# 2.1.2 RDA-WC、pH和TC
## RDA-WC、pH和TC的局部效应:单独只由WC、pH和TC解释的方差
RDA2=rda(decostand(spe, "hel"),env[c(1,2,5)],env[c(3,4,6)])
RDA2
sumr2=summary(RDA2)
anova(RDA2) # 显著性检验
#permutest(RDA2,permu=999) # anova()作用一样
RsquareAdj(RDA2) # 指定环境因子相关性结果校正,环境因子分类中不止一个环境因子,需要对R^2结果进行校正。## RDA-WC、pH和TC的边际效应:只由WC、pH和TC解释的方差+WC、pH和TC与其它环境因子共同解释的方差
RDA4=rda(decostand(spe, "hel"),env[c(1,2,5)])
RDA4
sumr4=summary(RDA4)# 2.1.3 RDA-氮形态环境因子
## 氮形态环境因子的局部效应
RDA3=rda(decostand(spe, "hel"),env[c(3,4,6)],env[c(1,2,5)])
RDA3
sumr3=summary(RDA3)## 氮形态环境因子的边际效应
RDA5=rda(decostand(spe, "hel"),env[c(3,4,6)])
RDA5
sumr5=summary(RDA5)# 2.1.4 计算WC、pH和TC与氮形态环境因子对微生物群落变化的解释度的共有部分
## 环境因子间的共线性,导致对群落结构方差贡献率的重叠。
## 局部效应计算方式
con=sumr$constr.chi/sumr$tot.chi-(sumr2$constr.chi/sumr2$tot.chi+sumr3$constr.chi/sumr3$tot.chi)
con
## 边际效应计算方式
con2=(sumr4$constr.chi/sumr4$tot.chi+sumr5$constr.chi/sumr5$tot.chi)-sumr$constr.chi/sumr$tot.chi
con2 # 两种计算方法的结果一致# 2.1.5 VPA分析结果
## 局部效应计算方式
data = data.frame(RDA2=sumr2$constr.chi/sumr2$tot.chi,con=con,RDA3=sumr3$constr.chi/sumr3$tot.chi,un=sumr$unconst.chi/sumr$tot.chi)
data## 边际效应计算方式
data2 = data.frame(`WC+pH+TC`=sumr4$constr.chi/sumr4$tot.chi-con,con=con,`N form`=sumr5$constr.chi/sumr5$tot.chi-con,un=sumr$unconst.chi/sumr$tot.chi)
data2

注:如果群落结构数据是高通量测序数据,存在很多物种为0的情况,可选择对数据进行hellinger转换,避免“弓形效应”。“弓形效应”就是CA/RA的第二排序轴在许多情况下是第一轴的二次变形。此部分的输出结果在R统计-VPA分析(RDA/CCA)文中,已经解释过了。这里不再赘述。

2.2 方法二:VPA分析

直接使用varpart()函数进行VPA分析。

# 2.2.1 两个环境因子分类VPA分析
## transfo参数定义微生物群落结构数据的转换方法:"hellinger", "chi.square", "total", "norm"可选,当已经对微生物群落结构数据进行了矩阵计算,则不设置此参数。
## chisquare = FALSE表示进行partial RDA分析,chisquare = TRUE则进行partial CCA分析。
rda.vpa <- varpart(spe, env[c(1,2,5)],env[c(3,4,6)], transfo="hel",chisquare = FALSE)
#cca.vpa <- varpart(spe, env[c(1,2,5)],env[c(3,4,6)], chisquare = TRUE,permutations=999)
#cca.vpa
str(rda.vpa)
rda.vpa
## 对partial RDA分析结果进行校正,再进行计算,可以获得一样的结果。
#RsquareAdj(RDA2)
#RsquareAdj(RDA3)

图4|varpart()运行结构包含的数据,str(vpa)

5|varpart函数的VPA分析结果[a+b]表示WC、pH和TC的边际效应。[b+c]表示氮形态环境因子的边际效应。[a+b+c]表示所有环境因子的总体方差解释率。输出结果与方法1中的计算结果一致。[a]表示校正后的WC、pH和TC的局部效应,与RsquareAdj(RDA2)输出结果一致(可能因取的小数点位数有些微差异)。[b]表示校正后的WC、pH和TC与氮形态环境因子的对方差的共有解释率。[c]表示校正后的氮形态环境因子的局部效应,与RsquareAdj(RDA3)输出结果一致。[d]为残差。图中共有的部分产生的原因在于环境因子数据对微生物解释存在着共线性而产生,如果环境因子完全相互独立理论上重叠部分=0。

# 2.2.2 使用formula(公式)形式进行两个以上环境因子分类VPA分析
## 一般环境因子分类不超过4个
colnames(env)
rda.vpa2 <- varpart(spe, ~ pH + WC, ~ NH4..N + NO3..N, ~ TC + TN, data=env,transfo="hel",chisquare = FALSE)
rda.vpa2

图6|三个环境因子分类的VPA分析结果。

三、绘制韦恩图

opar = par(no.readonly = TRUE) # 保存原始图形设置参数
#layout(matrix(c(1,3,2,4),nrow=2,byrow=TRUE),widths = c(2,2),heights = c(2,2))
#layout.show(4) # 将画布划分为4个区域用于将4幅图拼在一起
par(mfrow=c(2,2)) # 将画布划分为4个区域用于拼图
# 3.1. 2个环境因子分类,可以使用计算结果直接绘制韦恩图
data
counts=c(0.8258243*100,0.1027252*100,0.06568206*100,0.005768427*100)
venn(2,counts,zcolor = "red, green",snames = "pH+WC+TC,N form",ilabels = TRUE, ilcs = 0.5)# 3.2 vegan中提供了对varpart()输出结果直接绘图的函数
showvarparts(3, bg=2:4)# 展示venn图示例,可以查看各部分对应的字符标记。3表示3个环境因子分类的venn视图。bg用于设置颜色
##Xnames=c("WC+pH+TC","N form")),用于设置venn图中的各环境因子分类标签
plot(rda.vpa, cutoff = -Inf, cex = 0.7, bg = c("hotpink","skyblue"),Xnames=c("WC+pH+TC","N form")) # cutoff = -Inf,可以显示出负值。
plot(rda.vpa2, cutoff = -Inf, cex = 0.7, bg=2:5,digits = 2,Xnames=c("WC+pH","TC+TN","N form")) # digits = 2设置小数点位数,函数是先对数据*100,再取小数点,所以图中实际显示的是4位小数点。
par(opar) # 恢复原始图形设置参数

注:2表示有两个组分,ilabels = TRUE表示添加数值标记,标记是counts内容。snames标记组分名称,ilcs=0.5为设置数值标记的字体大小。本来想要根据面积来绘制,但是没有找到好的方法使用R直接绘制(主要还是ggplot2学的不精啊)。所以这里图形不是根据面积来绘制的,用数值表示解释度。

图7|venn图。R中venn、gvenn和VennDiagram等R包都可以绘制韦恩图,具体参数可以看说明文档学习。

两个环境因子对微生物群落变化的存在共有解释度说明两个环境因子对微生物群落变化的解释存在共线性,否则共有解释度理论上应为0。如果某些环境因子对微生物变化的解释度<0,则说明环境因子数据对群落数据变化的解释度比使用随机变量的解释度还低,分析时解释度当做0处理。在选择环境因子数据时最好过滤掉解释度<0的环境因子,以及做一下共线性分析,选择互相共线性较低的环境因子。宏基因组公众号有写过这方面的教程,大家可以参考(微生物环境因子分析(RDA/db-RDA)-ggvegan包)。

公众号后台发送"VPA analysis",可以获取原始数据和分析流程,或在QQ交流群中的文件夹中下载。

参考资料:

高分期刊中频频登场的VPA分析到底是啥?

R统计-VPA分析(RDA/CCA)

RDA、db-RDA(CAP)及CCA的变差分解


推荐阅读

R统计绘图-分子生态相关性网络分析

R语言实战|初阶1:基本图形

R语言实战|入门5:高级数据管理

R语言实战|入门4:基本数据管理

R语言实战|入门3:图形初阶

R语言实战|入门2:了解数据集

R语言实战|入门1:R语言介绍

R中进行单因素方差分析并绘图

R统计-多变量单因素参数、非参数检验及多重比较

R绘图-相关性分析及绘图

R绘图-相关性系数图

R统计绘图-环境因子相关性热图

R统计绘图-corrplot绘制热图及颜色、字体等细节修改

R统计绘图-corrplot热图绘制细节调整2(更改变量可视化顺序、非相关性热图绘制、添加矩形框等)

R绘图-RDA排序分析

R统计-VPA分析(RDA/CCA)

R统计-PCA/PCoA/db-RDA/NMDS/CA/CCA/DCA等排序分析教程

R统计绘图-PCA分析及绘制双坐标轴双序图

R数据可视化之美-节点链接图

R统计绘图-rgbif包下载GBIF数据及绘制分布图

R统计-正态性分布检验[Translation]

R统计-数据正态分布转换[Translation]

R统计-方差齐性检验[Translation]

R统计-Mauchly球形检验[Translation]

R统计绘图-单、双、三因素重复测量方差分析[Translation]

R统计绘图-混合方差分析[Translation]

R统计绘图-协方差分析[Translation]

R统计绘图-One-Way MANOVA


EcoEvoPhylo :主要分享微生物生态和phylogenomics的数据分析教程。

扫描左侧二维码,关注EcoEvoPhylo。让我们大家一起学习,互相交流,共同进步。

学术交流QQ群 | 438942456

学术交流微信群 |  jingmorensheng412

加好友时,请备注姓名-单位-研究方向。

开放转载

公众号原创文章开放转载,在文末留言告知即可

R统计绘图-VPA(方差分解分析)相关推荐

  1. R统计绘图-VPA(变差分解分析)

    变差分解分析(Variance Partitioning Analysis)可用于确定指定环境因子对微生物(原生生物/植物/动物等等)群落结构变化的解释比例.要计算指定环境因子与群落结构的相关性,就需 ...

  2. R统计绘图-随机森林分类分析及物种丰度差异检验组合图

    此文主要涉及随机森林组间变量重要性和物种丰度差异检验绘图,包含以下几部分内容: 1)随机森林分类: 2)随机森林分类变量重要性绘图: 3)物种丰度差异检验绘图 4)随机森林分类变量重要性及物种丰度差异 ...

  3. R统计绘图 | 物种组成冲积图(绝对/相对丰度,ggalluvial)

    一.数据准备 数据使用的不同处理土壤样品的微生物组成数据,包含物种丰度,分类单元和样本分组数据.此数据为虚构,可用于练习,请不要作他用. # 1.1 设置工作路径 #knitr::opts_knit$ ...

  4. R统计绘图-PCA详解1(princomp/principal/prcomp/rda等)

    此文为<精通机器学习:基于R>的学习笔记,书中第九章详细介绍了无监督学习-主成分分析(PCA)的分析过程和结果解读. PCA可以对相关变量进行归类,从而降低数据维度,提高对数据的理解.分析 ...

  5. R统计绘图 | 物种组成堆叠柱形图(绝对/相对丰度)

    一.数据准备 数据使用的不同处理土壤样品的微生物组成数据,包含物种丰度,分类单元和样本分组数据.此数据为虚构,可用于练习,请不要作他用. # 1.1 设置工作路径 #knitr::opts_knit$ ...

  6. R统计绘图 | 物种组成堆叠面积图(绝对/相对丰度,ggalluvial)

    一.数据准备 数据使用的不同处理土壤样品的微生物组成数据,包含物种丰度,分类单元和样本分组数据.此数据为虚构,可用于练习,请不要作他用. # 1.1 设置工作路径 #knitr::opts_knit$ ...

  7. R统计绘图-多元线性回归(最优子集法特征筛选及模型构建,leaps)

    此文为<精通机器学习:基于R>的学习笔记,书中第二章详细介绍了线性回归分析过程和结果解读. 回归分析的一般步骤: 1. 确定回归方程中的自变量与因变量. 2. 确定回归模型,建立回归方程. ...

  8. R统计绘图-多元线性回归(平均加权模型/最优子集筛选,MuMIn)

    此文介绍如何使用MuMIn包使用最优子集法进行多重线性回归的模型筛选以及模型平均.多重线性回归需要进行的数据检验过程都写在R统计绘图-多重线性回归(最优子集法特征筛选,leaps)中了.大家可以自行查 ...

  9. R统计绘图-变量分组相关性网络图(igraph)

    一.数据准备 数据是21个土壤样本的环境因子,细菌和真菌丰度数据. library(tidyverse) library(igraph) library(psych) ### 1.1 观测-变量数据表 ...

  10. R统计绘图-PCA分析及绘制双坐标轴双序图

    zhe 点击名片   关注我们 有师妹来咨询,怎样画类似于上图的双坐标轴PCA双序图.正好之前虽然PCA和RDA分析及绘图都写过教程,但是变量分析结果没有在图中显示,所以使用R统计绘图-环境因子相关性 ...

最新文章

  1. Azure自动化部署运维浅谈
  2. Logger PatternLayout 格式
  3. ucontext-人人都可以实现的简单协程库
  4. python函数中的两个坑(面试经常有)
  5. java异常捕获常使用的语句_要点Java14 捕获异常
  6. 创建xmlhttp对象
  7. 前端学习(1296):第三方模块nodemon
  8. Bug调试(lldb)
  9. JPA的继承 OOD和关系数据库的 纽带
  10. 异步fifo_数字IC校招基础知识点复习(五)——跨时钟域涉及part2(异步FIFO)
  11. 谷歌修复十多个安卓高危漏洞
  12. L2-031 深入虎穴 (25 分)-PAT 团体程序设计天梯赛 GPLT
  13. 信号报告(Java)
  14. Vmware 安装 Fedora 18 注意事项
  15. 地表径流分布数据/水文站点分布/降雨量分布/辐射分布数据
  16. Altium_Designer的使用
  17. java.lang.IllegalArgumentException: Can not set xx field xx to jav问题解决
  18. theano java_Theano:调用Theano函数的论据
  19. 绩效管理实务与管理效率提升-王晓耕老师
  20. Python量化策略风险指标

热门文章

  1. C语言 一元二次方程求解
  2. 如何将文件或文件夹加入杀毒软件白名单步骤
  3. 香港浸会大学计算机学院校友,校友反馈 | 香港浸会大学值不值得去读?
  4. 微信公众号如何添加附件链接
  5. 设计算法判断链表是否中心对称
  6. CSGO显示FPS(帧数)指令集设置调用方法 2020年最新版本CSGO教程
  7. linux工作札记 - 查看发行版本命令
  8. python 字符串(二)
  9. 微软「警告」员工不要在愚人节搞事情,为什么?
  10. 原码、反码、补码以及补码是怎么来的