R 纯素累积曲线预测

R 纯素累积曲线预测,r,prediction,vegan,accumulate,R,Prediction,Vegan,Accumulate,我有一个植物(行)和传粉者(列)的矩阵,以及其中的相互作用频率(转换为0(无相互作用)和1(存在相互作用)。 我使用的是纯素包装,并绘制了物种累积曲线 accum <- specaccum(mydata[1:47,], method = "random", permutations = 1000) plot(accum) 如果我指定:interpolation=c(“线性”)或“spline”,则错误消息不会更改 有人能帮忙吗?这也许不是最清楚的表达方式,但文档上说: newdata:

我有一个植物(行)和传粉者(列)的矩阵,以及其中的相互作用频率(转换为0(无相互作用)和1(存在相互作用)。 我使用的是纯素包装,并绘制了物种累积曲线

accum <- specaccum(mydata[1:47,], method = "random", permutations = 1000)

plot(accum)
如果我指定:
interpolation=c(“线性”)
“spline”
,则错误消息不会更改


有人能帮忙吗?

这也许不是最清楚的表达方式,但文档上说:

newdata: Optional data used in prediction interpreted as number of
          sampling units (sites).
它应该是您拥有的多个采样单位。一个数字或一组数字就可以了。但是,
predict
函数不能进行外推,而只能进行插值。
fitspecaccum
的非线性回归模型可能能够进行外推,但您应该相信它们吗

这里有一点关于外推的危险性:非线性回归模型通常用于分析物种积累数据,但这些都不是真正牢固的理论基础——它们只是一些很好的非线性回归模型。我知道一些模型可能有更坚实的基础,但我们还没有在《素食者》中实施它们,也没有计划这样做(但欢迎捐款)。然而,通过对你的数据进行二次抽样,看看你是否能从你的二次抽样中推断出物种的总数,就有可能对问题有所了解。下面显示了如何使用素食者中的
BCI
数据执行此操作。这些数据有50个样地,225种。我们从25个地块中抽取子样本,并推断出50个:

mod <- c("arrhenius", "gleason", "gitay", "lomolino", "asymp", "gompertz", 
      "michaelis-menten", "logis", "weibull")
extraps <- matrix(NA, 100, length(mod))
colnames(extraps) <- mod
for(i in 1:nrow(extraps)) {
   ## use the same accumulation for all nls models 
   m <- specaccum(BCI[sample(50,25),], "exact") 
   for(p in mod) { 
      ## need try because some nls models can fail
      tmp <-  try(predict(fitspecaccum(m, p), newdata=50))
      if(!inherits(tmp, "try-error")) extraps[i,p] <- tmp
   } 
}

mod也许不是最清晰的表达方式,但文档中说:

newdata: Optional data used in prediction interpreted as number of
          sampling units (sites).
它应该是您拥有的多个采样单位。一个数字或一组数字就可以了。但是,
predict
函数不能进行外推,而只能进行插值。
fitspecaccum
的非线性回归模型可能能够进行外推,但您应该相信它们吗

这里有一点关于外推的危险性:非线性回归模型通常用于分析物种积累数据,但这些都不是真正牢固的理论基础——它们只是一些很好的非线性回归模型。我知道一些模型可能有更坚实的基础,但我们还没有在《素食者》中实施它们,也没有计划这样做(但欢迎捐款)。然而,通过对你的数据进行二次抽样,看看你是否能从你的二次抽样中推断出物种的总数,就有可能对问题有所了解。下面显示了如何使用素食者中的
BCI
数据执行此操作。这些数据有50个样地,225种。我们从25个地块中抽取子样本,并推断出50个:

mod <- c("arrhenius", "gleason", "gitay", "lomolino", "asymp", "gompertz", 
      "michaelis-menten", "logis", "weibull")
extraps <- matrix(NA, 100, length(mod))
colnames(extraps) <- mod
for(i in 1:nrow(extraps)) {
   ## use the same accumulation for all nls models 
   m <- specaccum(BCI[sample(50,25),], "exact") 
   for(p in mod) { 
      ## need try because some nls models can fail
      tmp <-  try(predict(fitspecaccum(m, p), newdata=50))
      if(!inherits(tmp, "try-error")) extraps[i,p] <- tmp
   } 
}

mod请包括您使用
predict
尝试的代码。我尝试了如下“predict”命令:抱歉,没有意识到我可以编辑原始问题…请包括您使用
predict
尝试的代码。我尝试了以下“predict”命令:抱歉,没有意识到我可以编辑原始问题…你应该信任他们,就像信任所有其他模型一样。:)谢谢你的帮助。我没有设法弄明白fitspecaccum,我想我的知识不够好,我不理解帮助手册。你对我如何通过一组额外的样本来预测新发现物种的数量有什么建议吗?我可以看到specslope(object,at)给了我样本范围内新物种的增加,但我真正需要的是一个外推。我已经采集了47个样本,想知道在50个样本中发现的新物种的可能数量……你需要定义两件事:你在specaccum中使用的累积模型和你将在fitspecaccum中应用的非线性回归模型。同样,新的数据只需要一些新的站点。以下示例使用素食者的BCI数据。这些数据有50个图,我们使用“精确”累积法和Michaelis-Menten拟合模型外推该数字的两倍:
预测(Fitspeccumm(BCI,“mich”,“精确”),newdata=100)
。然而,这是一种推断,我根本不相信这一点:尝试将
“mich”
“exact”
更改为替代品。@RomanLuštrik有些模型是基于某种东西的。有些模型没有任何依据。要建立物种积累模型的外推基础,需要大量的论证理论,但我不会详细讲述。嗨,贾里,谢谢你的帮助和耐心。我将50株植物的样本外推到100株,并运行了所有不同的模型,产生了完全相同的结果(另外10个传粉者发现了额外的50株植物样本)。从视觉上看,外推曲线遵循累积曲线的趋势。你认为通过将样本量增加一倍,我可以找到大约10个新物种,这是合理的吗?你应该像所有其他模型一样信任它们谢谢你的帮助。我没有设法弄明白fitspecaccum,我想我的知识不够好,我不理解帮助手册。你对我如何通过一组额外的样本来预测新发现物种的数量有什么建议吗?我可以看到specslope(object,at)给了我样本范围内新物种的增加,但我真正需要的是一个外推。我已经采集了47个样本,想知道在50个样本中发现的新物种的可能数量……你需要定义两件事:你在specaccum中使用的累积模型和你将在fitspecaccum中应用的非线性回归模型。同样,新的数据只需要一些新的站点。以下示例使用素食者的BCI数据。这些数据有50个图,我们使用“精确”累积法和Michaelis-Menten拟合模型外推该数字的两倍: