一、生態位寬度? ? ? ??
生態位寬度指數包括shannon生態位指數和levins生態位指數。下面是采用levins方法計算生態位寬度。method也可以選擇“shannon”。
二、生態位重疊指數????????
生態位重疊指數,包括levins生態位重疊指數、schoener生態位重疊指數、petraitis生態位重疊指數、pianka生態位重疊指數、czech生態位重疊指數和morisita生態位重疊指數。
下面代碼以計算levins指數為例:
數據準備:
輸入文件名:otu.txt,第一行為樣品的名稱,第一列為otu名稱(名稱具有唯一性),可以理解為物種的名稱。
# 加載spaa包(需提前安裝:install.packages("spaa"))
# 該包提供生態位分析和群落分析的工具
library(spaa)# 讀取OTU表格數據
# file="otu.txt":指定輸入文件名為otu.txt
# sep="\t":使用制表符作為分隔符
# header=T:保留第一行為列標題
# row.names=1:將第一列設為行名(通常為物種ID)
otu <- read.table(file="otu.txt", sep="\t", header = T, row.names = 1)# 計算生態位寬度(Levins指數)
# method = "levins":使用Levins公式計算
# 結果數值范圍0-1,值越大表示物種的環境適應能力越強
niche.width <- niche.width(otu, method = "levins")# 計算生態位重疊指數(Pianka指數)
# method = "pianka":使用Pianka公式計算
# 結果數值范圍0-1,值越大表示物種間生態位重疊度越高
niche.overlap <- niche.overlap(otu, method = "pianka")# 輸出生態位寬度結果到CSV文件
write.csv(niche.width, 'nichewidth.csv')# 輸出生態位重疊結果到CSV文件
write.csv(niche.overlap, 'niche.overlap.csv')
代碼簡化為:
library(spaa)
otu <- read.table(file="otu.txt",sep="\t", header = T,row.names = 1)
niche.width <- niche.width(otu, method = "levins")
niche.overlap <- niche.overlap(otu, method = "pianka")
write.csv(niche.width, 'nichewidth.csv')
write.csv(niche.overlap, 'niche.overlap.csv')
PS:參考鏈接
參考1:【R語言生態位計算】 https://www.bilibili.com/video/BV18bNRegEe1/?share_source=copy_web&vd_source=e2338c063cd49188a452094eb0b6f740
參考2:https://mp.weixin.qq.com/s/9NqbGss91v-lFTA-BFQllQ
R語言 | 利用spaa計算植物生態位指數和種間聯結