我有一个植物(行)和传粉者(列)的矩阵和交互频率(转换为0(无相互作用)和1(相互作用/存在)用于此分析)。 我正在使用纯素包,并产生了物种积累曲线。
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"
,则错误消息不会更改。
有人可以帮忙吗?
答案 0 :(得分:4)
也许不是最明确的方式,但文档说:
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
}
}
当我尝试这个时,大多数外推模型在他们的预测中没有包括正确的物种数量,但所有值都高于正确的丰富度(来自最差:Arrhenius,Gitay,Gleason)或低于正确的丰富度(来自最差) :logistic,Gompertz,渐近,Michaelis-Menten,Lomolino,Weibull;只有这两个最后包括他们范围内的正确丰富度。)
总结:缺乏理论和适当的模型,谨防推断。