gpt4 book ai didi

R - 在 maxent 模型中使用 5 折交叉验证时,如何获得一个 "summary"预测图而不是 5?

转载 作者:行者123 更新时间:2023-12-05 01:47:16 29 4
gpt4 key购买 nike

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

“...您可能希望通过关闭“写入输出网格”选项来避免占用磁盘空间,这将抑制复制运行的输出网格的写入,以便您只获得摘要统计网格(平均、标准错误等)。”

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

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

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

我希望有人能帮我解决这个问题,我真的被困住了,在互联网上的任何地方都找不到任何答案。甚至没有关于这个的讨论。希望我的问题很清楚。这是我使用的 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)

最好的问候,克里斯汀

最佳答案

很抱歉成为坏消息的传递者,但基于 source code , 看起来 Dismo 的预测功能没有生成摘要图的能力。

那些关心的人的细节:当您调用 maxent 并将 replicates 设置为大于 1 时, maxent 函数返回一个 MaxEntReplicates 对象,而不是一个普通的 MaxEnt 对象。当 predict 收到一个 MaxEntReplicates 对象时,它只是遍历它包含的所有模型并分别调用它们的 predict

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

所以基本上,假设您的交叉验证模型看起来合理,您可以再次运行 MaxEnt,只需要一个副本。您的最终结果将是基于交叉验证的模型精度估计和基于第二次运行的 map ,并将所有数据集中在一起。根据您的问题具体是什么,可能还有您想要使用的来自交叉验证的其他有用的汇总统计信息,但这些都是您已经在 html 输出中看到的内容。

关于R - 在 maxent 模型中使用 5 折交叉验证时,如何获得一个 "summary"预测图而不是 5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28885987/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com