3

我希望我来对了论坛。我是一名生态学家,使用 maxent(版本 3.3.3,http://www.cs.princeton.edu/~schapire/maxent/) R 中的函数,通过 dismo 包。我使用了参数“replicates = 5”,它告诉 maxent 进行 5 折交叉验证。当直接从 maxent.jar 文件(maxent 软件)运行 maxent 时,将生成一个带有统计信息的 html 文件,包括预测图。在 R 中,也制作了一个 html 文件,但之后必须使用 r 中 dismo 包中的函数“predict”提取预测图。当我这样做时,由于 5 折交叉验证设置,我得到了 5 张地图。但是,(这就是问题所在)我只想要一张输出图,一张“摘要”预测图。我认为这是可能的,尽管我不知道 maxent 是如何计算它的。maxent 教程(见上面的链接)说:

“...您可能希望通过关闭“写入输出网格”选项来避免占用磁盘空间,该选项将禁止为复制运行写入输出网格,以便您仅获得汇总统计信息网格(avg、stderr 等.)。”

在此论坛https://groups.google.com/forum/#!topic/maxent/yRBlvZ1_9rQ中可以找到可以放入 R 的参数列表。

我尝试在 maxent 函数本身和 predict 函数中都使用参数“outputgrids = FALSE”,但它不起作用。即使我在 R 中没有任何错误,我仍然得到 5 张地图。

所以我的问题是:我如何获得一个“摘要”预测图,而不是交叉验证产生的五个预测图?

我希望有人可以帮助我,我真的很困惑,在互联网上的任何地方都没有找到任何答案。甚至没有关于这个的讨论。希望我的问题很清楚。这是我使用的 R 脚本:

model1<-maxent(x=predvars, p=presence_points, a=target_group_absence, path="//home//...//model1", args=c("replicates=5", "outputgrids=FALSE"))

model1map<-predict(model1, predvars, filename="//home//...//model1map.tif", outputgrids=FALSE)

最好的问候,克里斯汀

4

2 回答 2

4

很抱歉成为坏消息的承担者,但是从源代码来看,Dismo 的 predict 函数似乎没有生成摘要图的能力。

给关心的人的细节:当你调用set 大于 1 时,maxent函数返回一个对象,而不是一个普通的对象。当接收到一个对象时,它只是遍历它包含的所有模型并单独调用它们。replicatesmaxentMaxEntReplicatesMaxEntpredictMaxEntReplicatespredict

那么,接下来呢?幸运的是,一切都没有丢失!Dismo 没有此功能的原因是,对于大多数类型的模型构建,实际上没有有效的方法来平均跨交叉验证模型的参数。我不想说这绝对是 MaxEnt 的具体情况,但我怀疑确实如此。因此,交叉验证通常更多地用于检查您的模型构建方法是否适用于您的数据,而不是直接构建模型的方式(请参阅此问题进一步讨论这一点)。在通过交叉验证验证使用给定程序构建的模型对于您正在建模的现象似乎是准确的之后,通常使用您的所有数据构建最终模型。从理论上讲,这个新模型应该只比在数据子集上训练的模型更好。

所以基本上,假设你的交叉验证模型看起来合理,你可以只用一次复制再次运行 MaxEnt。您的最终结果将是基于交叉验证的模型准确性估计和基于第二次运行的地图,所有数据集中在一起。根据您的问题究竟是什么,您可能想要使用交叉验证的其他有用的汇总统计信息,但这些都是您在 html 输出中已经看到的所有内容。

于 2015-03-06T02:58:03.303 回答
2

几年后我可能会发现这一点。但你可以这样做:

xm <- maxent(predictors, pres_train) # basically the maxent model
px <- predict(predictors, xm, ext=ext, progress= '' ) #prediction
px2  <- predict(predictors, xm2, ext=ext, progress= '' ) #prediction #02

models <- stack(px,px2) # create a stack of prediction from all the models
final_map <- mean(px,px2) # Take a mean of all the prediction
plot(final_map) #plot the averaged map

xm1,xm2,.. 将是交叉验证中每个分区的最大模型,而 px, px2,.. 将是预测图。

于 2017-10-16T03:29:48.743 回答