2025年R统计绘图-VPA(方差分解分析)

R统计绘图-VPA(方差分解分析)方差分解分析 Variance Partitioning Analysis 可用于确定指定环境因子对微生物 原生生物 植物 动物等等 群落结构变化的解释比例 要计算指定环境因子与群落结构的相关性 就需要约束非指定环境因子的同时 对指定环境因子做排序分析 其实就是相当于做 partial 排序分析

大家好,我是讯享网,很高兴认识大家。

方差分解分析(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 # 查看函数用法和函数中参数意义 spe group=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
讯享网

31f862b2e5db8f351d89f57a6a021809.png

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

fa279534d13bf6eaf9d1f85e69b37d78.png

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

d780d9d26fc3c29ebc97e3fd82f44dfa.png

图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)

6242f5841ff050508eeeeeaaa3ea6b14.png

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

19226b9e429fb824138902a062887a09.png

d2de4683620d922525cf8c71c1a61e93.png

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

c8c89b3fb6a7e7b2e23884d4766d8b5a.png

ddf81aea94be3452c884e8493dac62d8.png

图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.*100,0.*100,0.0*100,0.00*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学的不精啊)。所以这里图形不是根据面积来绘制的,用数值表示解释度。

f6bd0d3ccbac73322ada675b28e6a7c6.png

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

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

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

参考资料:

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


推荐阅读

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

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

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

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

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


6fa3920a911704dd6d46a1fc53a4c818.png

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

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

学术交流 |

学术交流微信群 |  jingmorensheng412

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

开放转载

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

小讯
上一篇 2025-03-17 20:03
下一篇 2025-01-29 15:29

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/46323.html