zetadiv: 计算zeta多样性

2020-08-05 01:23:09 浏览数 (2)

通过R包zetadiv可以方便的计算zeta多样性,及其距离衰减规律。

代码语言:javascript复制
#安装
install.packages("Zetadiv")
library(zetadiv)
?Zeta.decline.mc


#Zeta.decline.mc: 蒙特卡罗抽样方法计算zeta多样性随阶数的下降
Zeta.decline.mc(
  data.spec,  ##行为样本,列为物种。发生率数据
  xy = NULL,  ##样本坐标
  orders = 1:10, ##zeta的阶数,即计算的样点量
  sam = 1000,  ##对于每个群落或样点计算的样本数
  confint.level = 0.95, ##回归的置信区间
  rescale = FALSE, ##是否除以z1进行标准化
  normalize = FALSE,  ##Sorensen或Jaccard标准化
  empty.row = "empty", ##空值的处理
  plot = TRUE  ##是否画图
)

##例子
utils::data(bird.spec.coarse)
xy.bird <- bird.spec.coarse[,1:2]
data.spec.bird <- bird.spec.coarse[,3:193]

dev.new(width = 12, height = 4)
zeta.bird <- Zeta.decline.mc(data.spec.bird, xy.bird, orders = 1:5, sam = 100,
                             NON = TRUE)
zeta.bird

#结果
$zeta.order  #阶数
[1] 1 2 3 4 5

$combinations  ##样本各种可能的组合情况
[1]       123      7503    302621   9078630 216071394

$zeta.val ##不同阶数的zeta多样性
[1] 92.44715 85.67000 77.11000 73.61000 71.66000

$zeta.val.sd ####不同阶数的zeta多样性的标准偏差
[1] 19.69822 16.76218 15.59778 15.26857 14.43846

$ratio ##每一阶zata和前一阶的比率
[1] 0.9266916 0.9000817 0.9546103 0.9735090

$zeta.exp  ##拟合指数分布

Call:
stats::lm(formula = zeta.val.log ~ c(orders), na.action = stats::na.omit)

Coefficients:
(Intercept)    c(orders)  
    1.98775     -0.02871  


$zeta.exp.confint
                  2.5 %      97.5 %
(Intercept)  1.94815483  2.02733909
c(orders)   -0.04065002 -0.01677507

$zeta.pl ##拟合幂律分布

Call:
stats::lm(formula = zeta.val.log ~ log10(c(orders)), na.action = stats::na.omit)

Coefficients:
     (Intercept)  log10(c(orders))  
          1.9709           -0.1667  


$zeta.pl.confint
                      2.5 %    97.5 %
(Intercept)       1.9479434  1.993877
log10(c(orders)) -0.2141466 -0.119162

$aic  ##两种分布的AIC值。结果表明幂律分布拟合的更好一些。
              df       AIC
zeta$zeta.exp  3 -26.70904
zeta$zeta.pl   3 -30.35525


#zeta.ddecay,计算zeta的距离衰减
Zeta.ddecay(
  xy,  ##行为样本,列为坐标。
  data.spec, ##行为样本,列为物种。
  order = 2, ##阶数
  sam = 1000, ##计算的样本数
  distance.type = "Euclidean", ##距离计算方法
  method = "mean", #3个地点以上时如何计算距离,可选mean或max
  reg.type = "glm" #回归模型
)
#例子
utils::data(Marion.species)
xy.marion <- Marion.species[,1:2]
data.spec.marion <- Marion.species[,3:33]

dev.new()
zeta.ddecay.marion <- Zeta.ddecay(xy.marion, data.spec.marion, sam = 100, order = 3,
                                  method.glm = "glm.fit2", confint.level = 0.95, trsf = "log", normalize = "Jaccard")

此外该包还有一下功能: zeta.varpart 通过距离和环境变量对zeta多样性进行分解。结果包含a(仅由距离来解释的变化),b(由距离或环境来解释的变化),c(仅由环境来解释的变化)和d(无法解释的变化)。

Predict.msgdm 对于新的环境和距离数据,预测其zeta值。

0 人点赞