如何将 Dismo 的 predict() 与基于数据框的 maxent 模型一起使用

How to use Dismo's predict() with a maxent model based on a dataframe

我试图弄清楚 dismo 的预测函数是如何根据使用 'x' 作为数据框而不是栅格图层构建的模型来运行的。我已经成功地 运行 使用栅格图层建模并基于此制作预测图。

我的模型构建如下;

library(dismo)
model <- maxent(x = sightings.data, p = presence.vector)

其中 sightings.data 是包含目击事件的 GPS 位置的数据框,后跟这些时间和地点的情况。 presence.vector 是一个向量,指示一行是存在点还是背景点。

我正在寻找答案;

我已经成功地 运行 使用栅格图层建模并基于此制作预测图。

predict() 的帮助文件不是特别详细,'Species distribution modelling with R' 没有成功涵盖该主题(示例仅列出 'cannot run this example because maxent is not available' 输出)。

我曾尝试使用仅包含我具有栅格图层的变量的数据框进行建模,并尝试像使用栅格构建的模型一样进行预测,但出现以下错误;

 Error in .local(object, ...) : missing layers (or wrong names)

我已确保数据框列名称和栅格图层具有相同的名称,但不包括强制性的纬度和经度列;

 names(raster.stack) <- colnames(sightings.data[3:5])

我从以下论文 Oppel at al 2012 的可用代码中找到的方法表明,当提供输入变量的数据帧时,dismo 的预测可以产生相对值。

> predictions <- predict(model, variables)
> str(predictions)
  num [1:100] 0.635 ...

我仍在寻找一种简单的方法来根据此类预测值创建预测分布栅格地图。

如果您提供 dismo::maxent 数据框,该函数会将第一列识别为经度,将第二列识别为纬度。如果数据不遵循此格式,则该功能将不起作用。

在此格式中,目击数据不需要包括 GPS 位置,因此您可以从 sightings.data 中删除 x 和 y 列。然后您可以 运行 模型,然后您可以预测一个栅格堆栈,其栅格名称与 sightings.data 列名称中的名称相同。

Predict 正在寻找栅格堆栈中的 GPS 位置,我猜它不在那里。