相对重要性分析
在生态环境领域中,有时候我们要分析多个解释变量对响应变量的影响,当含有多个响应变量时,为了方便展示,我们可以bar图对结果展示。R的relaimpo程序包有多种模式计算解释变量的重要性,这里以“lmg”模式为例。
library(relaimpo)
library(vegan)
fc=read.csv("D:\\wykt\\factor.csv",header = T,row.names = 1)###解释因子
sp=read.csv("D:\\wykt\\sp.csv",header = T,row.names = 1)####响应变量
spp=decostand(sp,method = "hellinger")
fcc=log10(fc)
dt=as.data.frame(cbind(spp,fcc))
dat=list()
###因为我的响应变量数据是在1到16列,这里根据自己的数据做修改
for (i in 1:16) {
re=calc.relimp(dt[,i]~pH+SOM+AP+N,data=dt,rank = F,
rela=T,type="lmg")
dat[[i]]=[email protected]
}
uu1=as.data.frame(dat)
colnames(uu1)=as.data.frame(colnames(dt))[c(1:16),]
####直接基于上面的数据画图
library(ggplot2)
library(reshape2)
library(dplyr)
pp=as.data.frame(cbind(uu1,se=row.names(uu1)))
io=melt(pp,id.vars = "se",value.name = "vv",variable.name = "sps")####把宽数据变为长数据
ggplot(data=io,aes(x=sps,y=vv,fill=se))+
geom_bar(position = "fill",stat = "identity",width = 0.9)+
geom_text(data =io %>% filter(round(vv,digits = 2) >0.1),aes(label=round(vv,digits = 2)),position = "fill",size=3,
hjust="inward",vjust=-0.5,stat = "identity")+
ylab("Relative importances")+xlab("species")+
scale_fill_manual(values = c(37,"purple",75,"tan",62,"yellow",160,"red",100,"pink",1,120,20))+
scale_y_reverse(expand = c(0,0),labels = c("1","0.75","0.50","0.25","0"))+
theme_classic()+
theme(axis.text.x = element_text(color = "black",size = 8,angle = 90))+
theme(axis.text.y = element_text(color = "black",size = 8))+
theme(legend.position = "right",legend.text = element_text(size = 15),
panel.grid =element_blank())+
guides(fill=guide_legend(title=NULL,color="black",reverse=TRUE))
上图,我们可以看出每个解释变量对响应变量的影响大小,并且是定量的。对于bar图的颜色修改,可根据期刊要求或自己喜好进行修改(代码调整),对于图中数字的位置可用AI软件移动(若是用代码修改,估计是得不偿失)。类似的分析方法有可定量的集成推进树、广义提升回归模型以及不可低定量的随机森林。对生态环境领域数据分析及绘图感兴趣的朋友,欢迎加QQ群335774366,以便交流、学习。
声明:以上代码及观点,仅供参考。