毕业论文知识点记录(六)——基于R语言优化maxent模型

第一步:R安装

这个网上都有很多详细的步骤,就不再详细介绍了。

第二步:R安装包

因为优化maxent模型需要用到kuenm程序包,但是官网上没有这个程序包,是因为不是所有的R包都提交上传到CRAN,如Github。所以需要从Github安装程序包(GitHub上的kuenm程序包)。总结了一下网上一共有两种方式:第一种,在线安装;第二种离线安装。我参考下面这位博主的方法进行离线安装。
从Github安装R安装包方法
其中安装RTools的时候也遇到了一点点问题,主要是配置环境比较麻烦,但是根据这个步骤去做会成功安装的。Rtools环境配置
OK啊,果然安装过程没有那么简单。
总结起来大概有两种错误:
①“package ‘XX’ is not available for this version of R”
解决办法:将repos值设置为官网地址:https://mran.microsoft.com/snapshot/2019-02-01/

install.packages("hier.part",repos=‘https://mran.microsoft.com/snapshot/2019-02-01/’)

这是网上搜的时候发现有的博主给出的这类问题的解决方法:

②: lazy loading failed for package ‘kuenm’ * removing ‘D:/R/R-4.2.1/library/kuenm’
这种一般是有个包没有安装,或者包的版本不对。比如我的原因是“Rcpp”这个包现有的版本是1.0.9,但要求是1.0.10,所以手动更新一下就行。

第三步:就是认真学习kuenm程序包

刚才GitHub上的程序包网址链接上有详细的内容介绍,接下来我把我学习的内容总结出来。
一、准备
1、需要准备的数据目录

1、包含要使用的不同环境变量集
即图中的M_variables
2、包含训练和测试发生数据的 csv 文件
该数据集由三个字段组成:物种名称、经度和纬度。请参见图中的Sp_joint.csv
3、包含训练模型的发生数据的 csv 文件
需要训练和测试数据的一定程度的独立性。请参阅图中的Sp_train.csv。
4、包含用于测试模型的物种出现数据的 csv 文件
作为校准过程的一部分(即图中的Sp_test.csv)。
5、包含完全独立的发生数据子集的 csv 文件(训练和测试数据外部)
用于最终的正式模型评估。该数据集(即用于最终模型评估)如图中的Sp_ind.csv
我的理解是:你准备的所有发生记录=2+5=3+4+5

2、安装软件包
这个刚才已经进行过了。

3、设置工作目录

setwd("YOUR/DIRECTORY/ku.enm_example_data/A_americanum") # set the working directorydir() # check what is in your working directory

这一步很重要,一开始我直接从下面的工作流记录开始,结果一直提醒我工作目录里没有我需要的文件,纳闷了半天发现上面还有一段代码!
然后原网址的前半段代码我没有使用,因为我直接下载了数据,所以不需要下载-解压-删掉压缩文件这个步骤。当然,当你跑自己的数据的时候也是不需要的,设置好工作目录就行了。

二、对单个物种项目进行分析

1、工作流记录

数据目录准备好之后,利用函数kuenm_start生成 R Markdown (.Rmd) 文件,作为执行此软件包包含的所有分析的指南。通过记录过程中使用的所有代码块,此文件还有助于使分析更具可重复性。此文件将写入工作目录中。此功能的使用是可选的,但如果需要记录每个物种的单独工作流程,建议使用此功能。

# Preparing variables to be used in arguments
file_name <- "sf_enm_process"
kuenm_start(file.name = file_name)

2、模型校准

(1)创建候选模型
函数kuenm_cal创建并执行一个批处理文件,用于生成Maxent候选模型,该文件将写入输出目录内的子目录,命名为所选参数化。将使用正则化乘数、要素类和环境预测变量集的多种组合创建校准模型。对于每个组合,此函数创建一个包含完整发生次数集的 Maxent 模型,另一个仅包含训练发生次数的 Maxent 模型。

#创建候选模型# Variables with information to be used as arguments. Change "YOUR/DIRECTORY" by your actual directory.
occ_joint <- "sf_joint.csv"
occ_tra <- "sf_train.csv"
M_var_dir <- "M_variables"
batch_cal <- "Candidate_models"
out_dir <- "Candidate_Models"
reg_mult <- c(seq(0.1, 1, 0.1), seq(2, 6, 1), 8, 10)#这行代码就是调整正则化参数的
f_clas <- "all"#这行代码就是调整函数组合的
args <- NULL # e.g., "maximumbackground=20000" for increasing the number of pixels in the bacground or
# note that some arguments are fixed in the function and should not be changed
maxent_path <- "YOUR/DIRECTORY/ku.enm_example_data/A_americanum"
wait <- FALSE
run <- TRUEkuenm_cal(occ.joint = occ_joint, occ.tra = occ_tra, M.var.dir = M_var_dir, batch = batch_cal,out.dir = out_dir, reg.mult = reg_mult, f.clas = f_clas, args = args,maxent.path = maxent_path, wait = wait, run = run)

代码块中进行标注的两行就是使用者最需要关注的地方,每个人可能会有不同的组合。在这里我的正则化参数是(0.1,5,0.5),也就是从0.1到5,步长变化为0.5。

(2)评估和选择最佳模型
函数kuenm_ceval根据统计显著性(部分ROC)、遗漏率(E =用户选择的可能出现有意义误差的出现数据比例)和模型复杂性(AICc)来评估模型性能,并根据不同的用户设置标准选择最佳模型)。部分ROC和遗漏率是根据使用训练事件创建的模型进行评估的,而AICc值是根据使用完整事件集创建的模型计算的。输出存储在一个文件夹中,该文件夹将包含一个.csv文件,其中包含满足每个评估标准的模型的统计信息,另一个文件仅包含根据用户指定的标准选择的模型,第三个包含所有候选模型的性能指标,模型性能图,以及一个 HTML 文件,报告模型评估和选择过程的所有结果,旨在指导进一步的解释。

#评估和选择最佳模型occ_test <- "sf_test.csv"
out_eval <- "Calibration_results"
threshold <- 5#遗漏率
rand_percent <- 30#测试集占比
iterations <- 100
kept <- TRUE
selection <- "OR_AICc"
paral_proc <- FALSE # make this true to perform pROC calculations in parallel, recommended
# only if a powerfull computer is used (see function's help)
# Note, some of the variables used here as arguments were already created for previous functioncal_eval <- kuenm_ceval(path = out_dir, occ.joint = occ_joint, occ.tra = occ_tra, occ.test = occ_test, batch = batch_cal,out.eval = out_eval, threshold = threshold, rand.percent = rand_percent, iterations = iterations,kept = kept, selection = selection, parallel.proc = paral_proc)

(3)最终模型创建
选择生成最佳模型的参数化后,下一步是创建最终模型,并在需要时将其转移到其他区域或场景。kuenm_mod函数从模型选择过程中获取具有最佳模型的.csv文件,并编写并执行批处理文件,以创建具有所选参数化的最终模型。模型和投影存储在输出文件夹内的子目录中;这些子目录将按候选模型命名。通过允许投影(即,project = TRUE)并定义保存传输数据的文件夹(即G.var.dir参数中的文件夹名称),此函数会自动执行这些传输。但是,创建最终模型的过程可能需要相当长的时间,尤其是在转移到其他区域或方案时。

#最终模型创建batch_fin <- "Final_models"
mod_dir <- "Final_Models"
rep_n <- 10#模型重复计算的次数(最后取平均值)
rep_type <- "Bootstrap"
jackknife <- FALSE
out_format <- "logistic"
project <- TRUE
G_var_dir <- "G_variables"
ext_type <- "all"
write_mess <- FALSE
write_clamp <- FALSE
wait1 <- FALSE
run1 <- TRUE
args <- NULL # e.g., "maximumbackground=20000" for increasing the number of pixels in the bacground or# "outputgrids=false" which avoids writing grids of replicated models and only writes the # summary of them (e.g., average, median, etc.) when rep.n > 1# note that some arguments are fixed in the function and should not be changed
# Again, some of the variables used here as arguments were already created for previous functionskuenm_mod(occ.joint = occ_joint, M.var.dir = M_var_dir, out.eval = out_eval, batch = batch_fin, rep.n = rep_n,rep.type = rep_type, jackknife = jackknife, out.dir = mod_dir, out.format = out_format, project = project,G.var.dir = G_var_dir, ext.type = ext_type, write.mess = write_mess, write.clamp = write_clamp, maxent.path = maxent_path, args = args, wait = wait1, run = run1)

(4)最终模型评估
最终模型应使用独立的出现数据(即校准过程中未使用的数据,通常来自不同来源)进行评估。kuenm_feval函数根据统计显著性(部分ROC)和遗漏率(E)评估最终模型。此函数将返回一个文件夹,其中包含一个包含评估结果的.csv文件

#最终模型评估occ_ind <- "sf_ind.csv"
replicates <- TRUE
out_feval <- "Final_Models_evaluation"
# Most of the variables used here as arguments were already created for previous functionsfin_eval <- kuenm_feval(path = mod_dir, occ.joint = occ_joint, occ.ind = occ_ind, replicates = replicates,out.eval = out_feval, threshold = threshold, rand.percent = rand_percent,iterations = iterations, parallel.proc = paral_proc)

由于还有一个植被指数的环境数据没有准备好,所以暂时还没有跑结果。等下一篇文章中将如何在GEE下载月均植被指数之后,在下下篇里面放一下运行的结果。

最后在处理数据的时候,还学习到了其他文献里处理数据的方法
补充两点:
①关于环境数据的去相关:发现很多文献里去相关的步骤是:先把所有变量导入,然后得出贡献率,之后再在SPSS中计算相关系数,如果都大于0.8,保留贡献率大的一个变量。此外还需要去除贡献率小于5%的变量。根据这个思路,重新进行变量筛选。
②草贪发生数据的筛选:还需要筛掉那些坐落在海洋上的点。
这个后来检查了一下,我下载的数据没有落在海洋上的。

毕业论文知识点记录(六)——基于R语言优化maxent模型相关推荐

  1. 基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作

    详情链接 :基于R语言.MaxEnt模型融合技术的物种分布模拟.参数优化方法.结果分析制图与论文写作 内容介绍:  第一章 .理论篇 以问题导入的方式,深入掌握原理基础 : 什么是MaxEnt模型? ...

  2. 055B ENMTools教程-基于R语言对MaxEnt模型优化-MaxEnt调参教程--更新日期2021-9

    055B-1 视频附带资料下载和密码:软件-数据-文献下载-持续更新 055B-2 ENMTools软件下载安装 055B-3 R软件和工具包安装 055B-4 生物气候因子的精度说明与选择方法(理论 ...

  3. ENMTools教程-基于R语言对MaxEnt模型优化-MaxEnt调参教程介绍

    MaxEnt3.4.4软件下载网盘: http://lucky-boy.ys168.com (如有侵权请联系删除) 055B-1 视频附带资料:软件-数据-文献下载-持续更新 055B-2 ENMTo ...

  4. R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作

    基于R语言.MaxEnt模型融合技术的物种分布模拟.参数优化方法.结果分析制图与论文写作技术应用 第一章.理论篇以问题导入的方式,深入掌握原理基础 什么是MaxEnt模型? MaxEnt模型的原理是什 ...

  5. 基于R语言的代理模型(高斯过程、贝叶斯优化、敏感性分析、异方差性等)高级技术应用

    基于R语言的代理模型(高斯过程.贝叶斯优化.敏感性分析.异方差性等)高级技术应用 直播时间:10月30日-10月31日.11月6日-7日(4天+1周辅导练习) (上午9:30-12:00  下午14: ...

  6. 基于R语言混合效应模型(mixed model)案例研究

    全文链接: http://tecdat.cn/?p=2596 在本文中,我们描述了灵活的竞争风险回归模型.回归模型被指定为转移概率,也就是竞争性风险设置中的累积发生率(点击文末"阅读原文&q ...

  7. 基于R语言一元线性回归模型实例及代码

    基于R语言一元线性回归模型实例及代码 题目描述 数据特征及可视化 建立模型与初步评价 (自己写lm()代码) 显著性检验 整体显著性检验 数学理论 系数显著性检验 代码实现系统显著性检验 回归诊断 异 ...

  8. arima 数据预处理_基于R语言的ARIMA模型

    A IMA模型是一种著名的时间序列预测方法,主要是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型.ARIMA模型根据原序列是否平稳以及 ...

  9. canoco5主成分分析步骤_基于R语言的主成分分析

    基于R语言的主成分分析 加入的SPSS群里有人问,怎么用SPSS进行主成分分析.确实没有注意到这种操作.很好奇,于是翻了翻孙振球的<医学统计学>,发现主成分分析这一块,竟使用了SAS!后来 ...

最新文章

  1. 深入理解Spark:核心思想与源码分析. 3.9 启动测量系统MetricsSystem
  2. HDU Problem 1272 小希的迷宫 【并查集】
  3. linux搭建gitlab
  4. NOIP2018 退役记
  5. 笔记函数 - 判断内存是否有效
  6. Linux中ELF格式 可执行文件+动态链接器 的加载
  7. C#调用vbs脚本实现Windows版Siri
  8. 为什么 PHP 中 this 和 self 访问变量的写法不一样?
  9. WebBrowser 控件 内存溢出 补丁 From Microsoft
  10. html判断整数小数点后两位小数点,js控制input框只能输入数字和一位小数点且小数点后面只有两位小数...
  11. VS中Debug和Release版本的区别
  12. uefi启动如何进入
  13. AcWing292.炮兵阵地(状压DP)题解
  14. nginx rewrite 实现二级域名跳转
  15. redis怎么开启_关于Redis数据库入门必备的学习点
  16. 星号密码查看 android,侠客密码查看器怎么查看已输入的星号密码
  17. 移动周刊第 176 期:Android 知识梳理
  18. 稿费一般多少钱一千字_写一篇1000字的稿子多少钱?一般
  19. SQL编写:表A{id, name},表B{id, course, score}。求每名学生的 id 和 name 和平均成绩
  20. 【9122】谈装修:项目与项目群

热门文章

  1. IDEA中如何将一个JavaWeb项目打包成war包
  2. Windows下的gotoxy 函数
  3. 如何高效管理电脑里的文件
  4. OS X EI Captan 中Rootless
  5. 如何做一个高级的文本编辑器 textarea,拥有快捷键操作
  6. 直接插入法(java实现)
  7. 插值中产生的龙格现象
  8. 如何通过组策略控制远程主机空闲时间自动断开并注销
  9. PTA 帅到没朋友 (20分)
  10. sqlmap 使用方法