setwd("D:\\2018_04_23")library(vegan) #對生態學專業的學生來說,vegan包真的很強大,大家可以看看它的說明文檔
spe=read.csv("spe.csv",header=T,row.names=1,sep=",") #群落組成數據group=read.csv("group.csv",header=T,row.names=1,sep=",") #分類數據,包含兩種類別,grazing和soil depthenv=read.csv("env.csv",header=T,row.names=1,sep=",") #環境數據:土壤理化因子、植物類別等# 4. 群落結構差異分析## 4.1 ADONIS/PERMANOVA-PCoA### β多樣性指數可以選擇不同的指數,bray-curits指數既考慮物種有無也考慮物種豐度,jaccard只考慮物種有無,我一般兩個都用grazing.bray = adonis(spe~ grazing,data = group,permutations = 999,method="bray") # 用grazing分組spe,並進行Adonis分析,分析結果賦予grazing.bray,使用bray-curits indexgrazing.bray #查看adonis分析結果 NR.jac=adonis(spe~ depth*grazing,data = group,permutations = 999,method="jaccard") # 不同分組方式交互影響,使用jaccard index
### 兩兩比較pairwise.adonis <-function(x,factors, sim.method, p.adjust.m){ library(vegan) co = as.matrix(combn(unique(factors),2)) pairs = c() F.Model =c() R2 = c() p.value = c() for(elem in 1:ncol(co)){ ad = adonis(x[factors %in%c(as.character(co[1,elem]),as.character(co[2,elem])),] ~ factors[factors %in%c(as.character(co[1,elem]),as.character(co[2,elem]))] , method =sim.method); pairs =c(pairs,paste(co[1,elem],'vs',co[2,elem])); F.Model =c(F.Model,ad$aov.tab[1,4]); R2 = c(R2,ad$aov.tab[1,5]); p.value = c(p.value,ad$aov.tab[1,6]) } p.adjusted =p.adjust(p.value,method=p.adjust.m) pairw.res = data.frame(pairs,F.Model,R2,p.value,p.adjusted) return(pairw.res)} # 進行Adonis多重比較前期準備,不需要更改pairwise.adonis(spe, group$grazing, sim.method="bray", p.adjust.m= "bonferroni") # 多重比較#NRCK.anosim<-anosim(spe,group$depth,permutations = 999,distance = "bray")NRCK.anosimNRCK.mrpp<-mrpp(spe,group$depth,permutations = 999,distance = "bray")NRCK.mrpp多種群落結構差異檢驗方法不知道用什麼好,在小標題上我標註了差異檢驗方法適配的排序分析方法,大家可以用於參考。library(ecodist)spe.dist<-vegdist(spe,method = 'bray')plant.dist=vegdist(env$plant,method = "euclidean")spe$plant=mantel(spe.dist,plant.dist,permutations=999參考文獻:
排序方法比較大全PCA、PCoA、NMDS、CCA
Adonis和ANOSIM方法組間整體差異評估原理
PCoA距離算法大全
讀懂PCA和PCoA
1群落結構差異 2組間差異 3總結
環境因子關聯分析—CCA還是RDA更多推薦
R繪圖-RDA排序分析
RDA排序分析結果解讀