相對重要性分析

 在生態環境領域中,有時候我們要分析多個解釋變量對響應變量的影響,當含有多個響應變量時,爲了方便展示,我們可以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]]=re@lmg
}
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,以便交流、學習。
聲明:以上代碼及觀點,僅供參考。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章