素食积累曲线预测
vegan accumulation curve predictions
我有一个由植物(行)和传粉者(列)组成的矩阵以及其中的相互作用频率(转换为 0(无相互作用)和 1(interaction/s 用于此分析)。
我正在使用素食包并生成了物种积累曲线。
accum <- specaccum(mydata[1:47,], method = "random", permutations = 1000)
plot(accum)
我现在想预测通过额外的植物采样我可能会发现多少新的传粉媒介物种,但无法计算我必须在预测命令中包含 "newdata" 的格式。我尝试了矩阵中的空行和带零的行,但无法获得结果。这是我用于预测的代码:
predictaccum1 <- predict(accum, newdata=mydata[48:94,])
错误信息:
Error in UseMethod("predict") :
no applicable method for 'predict' applied to an object of class "specaccum"
如果我指定:interpolation = c("linear")
或 "spline"
.
,错误消息不会改变
有人能帮忙吗?
也许不是最清楚的表达方式,但文档说:
newdata: Optional data used in prediction interpreted as number of
sampling units (sites).
应该是你拥有的抽样单位的数量。一个数字或一个数字向量就可以了。但是,predict
函数不能进行外推,只能进行内插。 fitspecaccum
的非线性回归模型也许可以外推,但你应该相信它们吗?
这里有一点关于外推的危险:非线性回归模型通常用于分析物种积累数据,但 none 其中确实基于理论——它们只是一些很好的非线性回归模型。我知道一些模型可能有更坚实的基础,但我们还没有在 vegan 中实现它们,也不打算这样做(但欢迎贡献)。但是,可以通过对数据进行子抽样并查看是否可以通过从子样本进行外推来估计物种总数来了解问题。下面显示了如何使用 vegan 中的 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
}
}
当我尝试这个时,大多数外推模型在他们的预测中没有包括正确的物种数量,但所有的值要么高于正确的丰富度(从最坏的:Arrhenius、Gitay、Gleason)或低于正确的丰富度(从最差的:logistic、Gompertz、asymptotic、Michaelis-Menten、Lomolino、Weibull;只有最后这两个在它们的范围内包含了正确的丰富度。
总结:缺乏理论和足够的模型,谨防外推。
我有一个由植物(行)和传粉者(列)组成的矩阵以及其中的相互作用频率(转换为 0(无相互作用)和 1(interaction/s 用于此分析)。 我正在使用素食包并生成了物种积累曲线。
accum <- specaccum(mydata[1:47,], method = "random", permutations = 1000)
plot(accum)
我现在想预测通过额外的植物采样我可能会发现多少新的传粉媒介物种,但无法计算我必须在预测命令中包含 "newdata" 的格式。我尝试了矩阵中的空行和带零的行,但无法获得结果。这是我用于预测的代码:
predictaccum1 <- predict(accum, newdata=mydata[48:94,])
错误信息:
Error in UseMethod("predict") :
no applicable method for 'predict' applied to an object of class "specaccum"
如果我指定:interpolation = c("linear")
或 "spline"
.
有人能帮忙吗?
也许不是最清楚的表达方式,但文档说:
newdata: Optional data used in prediction interpreted as number of
sampling units (sites).
应该是你拥有的抽样单位的数量。一个数字或一个数字向量就可以了。但是,predict
函数不能进行外推,只能进行内插。 fitspecaccum
的非线性回归模型也许可以外推,但你应该相信它们吗?
这里有一点关于外推的危险:非线性回归模型通常用于分析物种积累数据,但 none 其中确实基于理论——它们只是一些很好的非线性回归模型。我知道一些模型可能有更坚实的基础,但我们还没有在 vegan 中实现它们,也不打算这样做(但欢迎贡献)。但是,可以通过对数据进行子抽样并查看是否可以通过从子样本进行外推来估计物种总数来了解问题。下面显示了如何使用 vegan 中的 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
}
}
当我尝试这个时,大多数外推模型在他们的预测中没有包括正确的物种数量,但所有的值要么高于正确的丰富度(从最坏的:Arrhenius、Gitay、Gleason)或低于正确的丰富度(从最差的:logistic、Gompertz、asymptotic、Michaelis-Menten、Lomolino、Weibull;只有最后这两个在它们的范围内包含了正确的丰富度。
总结:缺乏理论和足够的模型,谨防外推。