Maxent简要使用教程
在AT&TLabs-Rearch、普林斯顿大学、生物多样性和生物技术研究中心以
及美国自然历史博物馆的支持下,本教程由StevenPhillips,MiroDudik和Rob
Schapire撰写,基本介绍了如何使用MaxEnt程序对物种的地理分布进行最大熵
建模。有关最大熵建模背后的理论以及此处使用的数据和统计分析的主要类型的
详细说明,请参见
ps,re,Maximumentropy
modelingofspeciesgeographic
icalModelling,Vol190/3-4pp231-259,2006.
Twoadditionalpapersdescribingmorerecently-addedfeaturesoftheMaxent
softwareare:
psandMiroslavDudik,Modelingofspeciesdistributionswith
Maxent:newextensionsanda
phy,Vol31,pp161-175,2008.
ps,gtheblackbox:anopen-sourcereleaof
phy,Inpress,2017.
我们使用的环境数据包括南美的气候和海拔数据以及潜在的植被层。我们的
物种样本是褐喉三趾树懒(Bradypusvariegatus)。这些数据来自2001年的
Anderson&Handley分类法修订版(/reference/84876),和Phillips
的2006年论文中。本教程将假定所有数据文件都与maxent程序文件位于同一目
录中。否则,您将需要在此处使用的文件名前面使用路径(例如c:datamaxent
tutorial)。
如果您想在出版物,报告或在线文章中引用本教程,请适当引用以下内容:
Phillips,blefromurl:
/open_source/maxent/.Accesdon
XXXX-XX-XX.
开始
下载
该软件包含一个jar文件,可以在运行Java1.4或更高版本的任何
计算机上使用。可从/open_source/maxent/
下载Maxent及其相关文献。可以从/java/downloads获得Java运行
时环境。如果您使用的是MicrosoftWindows(如此处假设),则还应下载文件
,并将其保存在与相同的目录中。该网站有一个名为
“”的文件,其中包含有关在计算机上安装程序的说明。
注:maxent网址在中国国内须通过VPN才能打开。
安装
如果使用的是MicrosoftWindows,只需单击文件。或者,请在命
令外壳程序中输入“”(其中“512”可以替换为您希望
程序可用的兆字节内存)。或者选中,点击鼠标右键,打开方式选择
OpenJDKplatformbinary。将出现以下屏幕:
要执行运行,您需要提供一个包含存在位置(经纬度)的文件(“samples”),
一个包含环境变量(环境图层)的目录和一个输出目录。在我们的示例中,存
在位置的文件位于“”中,环境层位于目录“layers”中,输出
将进入目录“outputs”。您可以手动输入这些位置,或浏览它们。注:samples和layers
文件可以在/open_source/maxent/,点击tutoria下的tutorial-data,进行
下载。
浏览环境变量时,请记住,您正在寻找包含它们的目录-无需向下浏览到目录
中的文件。输入或浏览Bradypus的文件后,该程序如下所示:
注:本人将所有文件都放入D:MAXENT模型软件。
包含存在位置的csv格式文件“”。前几行是如下:
species,longitude,latitude
bradypus_variegatus,-65.4,-10.3833
bradypus_variegatus,-65.3833,-10.3833
bradypus_variegatus,-65.1333,-16.8
bradypus_variegatus,-63.6667,-17.45
bradypus_variegatus,-63.85,-17.4
同一样本文件中可能有多个物种,在这种情况下,伴随着bradypus,面板上会
出现更多物种。如果样本文件和环境层使用相同的坐标系,则可以使用纬度和经
度以外的坐标系。示例文件中的“x”坐标(在我们的情况下为经度)应在“y”坐
标(纬度)之前。如果状态数据具有重复记录(同一网格单元中相同物种的多
个记录),则默认情况下将删除重复记录;可以通过单击“设置”按钮来更改取消
选择“删除重复的在场记录”。
目录“图层”包含许多ascii栅格网格(以ESRI的.asc格式),每个栅格网格
都描述了一个环境变量。网格必须都具有相同的地理范围和像元大小(即所有
ascii文件标题必须彼此完全匹配)。我们的变量之一“ecoreg”是描述潜在植被
类别的分类变量。类别必须用数字表示,而不是字母或单词。您必须告诉程序
哪些变量是类别变量,如上图所示。
运行
只需按下“运行”按钮。进度监视器描述了要采取的步骤。加载环境层并完
成一些初始化后,maxent模型的训练进度如下所示:
增益与偏差密切相关,偏差是广义加性模型和广义线性模型中使用的拟合优
度的度量。它从0开始,并在运行过程中向渐近线增加。在此过程中,Maxent
正在从网格的均匀分布开始,并不断提高数据的拟合度,从而在网格中的像素上
生成概率分布。增益定义为当前样本的平均对数概率,减去使均匀分布具有零增
益的常数。运行结束时,增益表示模型在当前样本周围的集中程度。例如,如果
增益为2,则表示当前样本的平均可能性比随机背景像素的平均可能性高exp(2)
≈7.4倍。请注意,Maxent不是直接计算“发生概率”。它分配给每个像素的概率
通常很小,因为在网格中所有像素的值之和必须为1(尽管在比较输出格式时返
回到这一点)。
运行会生成多个输出文件,其中最重要的HTML文件是“”,这
是分析模型时最重要的文件。该文件的一部分提供了指向其他输出的指针,如
下所示:
看一个预测
要查看中可能还有其他(更有趣的)输出,我们将打开几个选
项并重新运行模型。按“Makepicturesofpredictions”,然后单击“Settings”,
然后在“Randomtestpercentage”条目中键入“25”。然后,再次按“运行”按
钮。运行完成后,文件包含以下图片:
注:仅选择Autofeature出的图
注:选择Autofeature,Linearfeatures,Quadraticfeatures,Productfeatures,Hingefeatures出的图
图像使用颜色指示条件适合的预测概率,红色指示该物种适合的条件的概率
很高,绿色指示该物种适合的条件的典型条件,蓝色的浅阴影指示适合条件的概
率较低。对于Bradypus来说,我们预计中美洲大多数低地,南美西北部的湿地
低地地区,亚马逊河流域,加勒比海岛屿以及巴西东南部的许多大西洋森林都非
常可能有合适的条件。网页中显示的图像文件(.png),您可以单击(在Windows
中)或在大多数图像处理软件中打开。如果要复制这些图像,或者要使用其他软
件打开它们,则将在运行之后,创建为输出名为“plots”的目录中找到.png文件。
测试点是从物种存在地点中抽取的随机样本。每次在同一数据集上运行
Maxent时,都会使用相同的随机样本,除非您选择“Randomed”设置面板上的
选项。或者,可以通过“设置”面板中名称为“Testsamplefile”的browr提供单独
的文件中的一种或多种物种的测试数据。
输出格式
Maxent支持四种输出模型值的格式:原始,累积,逻辑和阻塞。首先,原始
输出只是Maxent指数模型本身。第二,对应于r原始值的累加值是最大r下的
原始值的Maxent分布百分比。最好根据预测遗漏率来解释累积输出:如果我们
将累积阈值设置为c,则用Maxent分布本身抽取的样本的二元预测的遗漏率将
为c%,并且我们可以从物种分布中得出预测样本的相似遗漏率。第三,如果c
是最大分布熵的指数,则与r的原始值对应的逻辑值为c·r/(1+c·r)。这是一
个逻辑函数,因为原始值是环境变量的指数函数。与r的原始值对应的cloglog
值为1-exp(-c·r)。四种输出格式都是单调相关的,但它们的缩放比例是不同的,
并且具有不同的解释。默认输出是cloglog,这是最容易概念化的:给出存在概
率在0到1之间的估计值。请注意,存在的可能性在很大程度上取决于采样设计
的细节,例如方形样本的大小和(对于易变的生物)观察时间;cloglog输出估
计存在的概率,假设采样设计使典型存在位置的每个方格个体的达到预期丰度,
这导致存在的概率约为0.63。上面Bradypus模型的图片使用逻辑格式输出,该
格式与cloglog输出非常相似,但是基于不同的理论依据。相比之下,使用原始
格式可得到以下图片:
请注意,我们的颜色使用了对数刻度。线性刻度主要是蓝色的,带有少量红
色像素(您可以通过在“ttings”面板Experiental栏取消选择“Logscalepictures
”来验证这一点),因为原始格式输出通常会为少数位置提供相对较大的值-这可
以认为是原始输出由指数分布给出的人工产物。
使用累积输出格式可以看到下图:
与原始输出一样,我们使用对数刻度为图片着色,以强调较小值之间的差异。
累积输出可以被认为是根据阈值在1-20(或从黄色到橙色,在此图中为黄色)之
间预测物种的合适情况,取决于使用可接受的预测遗漏水平。
统计分析
我们为“randomtestpercentage”输入的“25”告诉程序随机留出25%的样本记
录进行测试。这使程序可以进行一些简单的统计分析。许多分析使用阈值进行二
元线性预测,其中合适的条件预测高于阈值,而不合适的条件低于阈值。第一个
图显示了测试和训练的遗漏以及预测面积随累积阈值的选择而变化,如下图所
示:
在这里,我们看到测试样本的遗漏率与预测的遗漏率非常匹配,该预测率是
从Maxent分布本身得出的测试数据的遗漏率。根据累积输出格式的定义,预测
的遗漏率是直线。在某些情况下,测试遗漏线位于预测遗漏线的下方:常见原因
是测试和训练数据不是独立的,例如,如果它们来自相同的空间自相关的存在数
据。
下图给出了训练和测试数据的接收机工作特性曲线(ROC),如下所示。此
处还给出了ROC曲线下的面积(AUC)。如果有测试数据,则稍后将在网页
中给出测试数据上AUC的标准误差。
如果您使用相同的数据进行训练和测试,则红线和蓝线将相同。如果将数据
分成两个分区,一个用于训练,一个用于测试,则红色(训练)行显示的AUC
高于蓝色(测试)行是正常的。红色(训练)线显示了模型对训练数据的“拟合”。
蓝色(测试)线表示模型与测试数据的拟合,并且是模型预测能力的真实测试。
绿松石线表示如果模型不比随机模型好,您所期望的线。如果蓝线(测试线)低
于绿松石线,则表明您的模型比随机模型的性能差。蓝线越靠近图的左上角,模
型在预测数据的测试样本中包含的存在时越好。关于AUC统计的更多详细信息,
一个很好的参考是:Fielding,A.H.&Bell,J.F.(1997)Areviewofmethodsforthe
asssmentofpredictionerrorsinconrvationprence/abncemodels.
EnvironmentalConrvation24(1):38-49。因为我们只有存在数据而没有不存在数
据,所以使用“fractionalpredictedarea”(占预测的总研究面积的百分比)代替了
更标准的不存在率(预测的缺勤率)。有关此选择的更多讨论,请参见本教程第
1页中提到的“生态建模”中的论文。重要的是要注意,相对于环境数据所描述的
研究区域,窄范围物种的AUC值往往更高。这并不一定意味着模型会更好。相
反,此行为是AUC统计信息的伪影。
如果测试数据是可用的,程序将使用遗漏率做二项式检验,自动计算预测的
统计显著性。对于Bradypus,见下图:
有关二项式统计量的更多详细信息,请参见上述生态模型论文。
哪些变量最重要呢?
物种分布建模的自然应用是回答,对物种建模后,哪个变量是最重要的。
回答这个问题的方法不止一种。在这里,我们概述了使用Maxent解决此问
题的可能方法。
在训练Maxent模型的同时,我们可以跟踪哪些环境变量对该模型做出了
最大贡献。Maxent算法的每一步都可以通过修改单个特征的系数来增加模型
的增益。程序会将增益的增加分配给功能所依赖的环境变量。在训练过程
结束时转换为百分比,我们得到下表:
这些百分比贡献值只是通过试探式定义的:它们取决于Maxent代码用于
获得最佳解决方案的特定路径,并且不同的算法可以通过不同的路径到达相
同的解决方案,从而导致不同的百分比贡献值。此外,当存在高度相关的
环境变量时,应谨慎解释百分比贡献。以我们的Bradypus为例,年降水量
与10月和7月的降水高度相关。尽管上表显示Maxent使用7月降水量的
变量比其他任何变量都多,几乎没有使用过年降水量,但这并不一定意味着
7月降水对树种的影响比年降水量重要得多。
为了获得哪些变量在模型中最重要的替代估计,我们还可以通过选择
“Dojackknifetomeasurevariableimportant”复选框来运行jackknife测试。
当我们再次按下“运行”按钮时,将创建许多模型。依次排除每个变量,并
使用其余变量创建模型。然后使用隔离的每个变量创建模型。另外,像以前
一样,使用所有变量来创建模型。jackknife的结果显示在“”
文件的三个条形图中,第一个显示如下:
我们看到,如果Maxent仅使用pre6190_l1(一月份的平均降雨量),则
几乎得不到任何收益,因此变量(本身)对于估计Bradypus的分布没有用。
另一方面,十月份的降雨(pre6190_l10)可以很好地拟合训练数据。转向淡
蓝色条,似乎没有变量包含其他变量中尚未包含的大量有用信息,因为依次
排除每个变量不会显着降低训练增益。
文件还有另外两个jackknife图,使用测试增益或AUC代
替训练增益,如下所示:
比较三个jackknife图可以获得更多信息。AUC图显示,当使用AUC
测量预测性能时,即使使用AUC构建的模型很难使用所有变量,留做测试
用的当前数据用于预测分布,年降水量(pre6190_ann)是最有效的单个变量。
与训练增益图相比,年降水量的相对重要性在测试增益图中也有所增加。此
外,在测试增益和AUC图中,一些淡蓝色条(尤其是每月降水量变量)长
于红色条,表明当不使用相应的变量时,预测性能会提高。
这告诉我们,月降水量变量正在帮助Maxent很好地拟合训练数据,但年
降水量变量的泛化效果更好,预留测试数据给出了相对较好的结果。换句话
说,月降水量变量建立的模型转移性较差。如果我们的目标是转移模型,变
量的转移性就很重要,例如气候变化下通过将模型应用于未来的气候变量以
估算未来分布。每月降水量的可传递性较差意味着:对于Bradypus而言,适
宜的条件可能不取决于所选月份的精确降雨值,而取决于总的平均降水量,
并且可能取决于降雨的一致性或缺乏长时间的干旱。当我们在大陆尺度上进
行建模时,季节性降雨模式的精确时间可能会发生变化,从而影响月降水量,
但不适合Bradypus。
通常,最好使用与被建模物种更直接相关的变量。例如,Worldclim网站
()提供了“BIOCLIM”变量,包括诸如“最湿季的降雨”
之类的派生变量,而不是每月值。
jackknife输出的最后说明:测试增益图显示,仅使用一月降水量
(pre6190_l1)制作的模型导致测试增益为负。这意味着模型稍差而不是用
于预测留着用于测试的事件分布的零模型(即均匀分布)。这可以看作是更
多的证据,表明月降水量值不是预测变量的最佳选择。
预测是怎么取决于变量的?
现在按下“Createresponcurves”,取消选择jackknife选项,然后重新运
行模型。这导致将以下部分添加到“”文件中:
可以选择每个缩略图图像(单击它们)以获得更详细的图,如果要使用
其他软件复制或打开这些图,则可以在“plots”目录中找到.png文件。查看
vap6190_ann,对于1-200范围内的vap6190_ann值,响应较低,而对于200-300
范围内的值,响应较高。y轴上显示的值是逻辑输出格式所给定的适当条件
的预测概率,所有其他变量均设置为在存在位置集上的平均值。
请注意,如果环境变量是相关的(如此处所示),则边际响应曲线可能
会产生误导。例如,如果两个紧密相关的变量的响应曲线接近彼此相反,则
对于大多数像素而言,两个变量的组合效果可能很小。再举一个例子,如果
所有其他变量保持不变,则预测的适宜性与年降水量(pre6190_ann)呈负相
关。换句话说,一旦考虑了所有其他变量的影响,年降水量增加的边际影响
将降低预测的适用性。但是,年降水量与月降水量变量高度相关,因此实际
上在改变年值时我们不容易将月值固定。因此,程序将生成第二组响应曲线,
其中每条曲线都是通过仅使用相应变量而不考虑所有其他变量的模型来生
成的:
与第一组响应曲线中对年降水量的边际响应相反,我们现在看到预测的
适宜性通常随年降水量的增加而增加。
特征类型和响应曲线
响应曲线使我们可以看到不同要素类型之间的差异。取消选择“auto
features”,选择“Thresholdfeatures”,然后再次按“Run”按钮。查看生成的功能配
置文件-您会注意到它们都是步进功能,例如pre6190_l10的功能:
注:仅选择了“Thresholdfeatures”,其他选项全部取消。
如果仅使用hingefeatures进行相同的运行,则得到的特征轮廓如下所示:
这两个特征曲线的勾勒的外形相似,但是它们有所不同,因为不同的特征类
型得出响应曲线的形状可能不同。Maxent模型中的指数是特征的总和,threshold
features的总和总是阶跃函数,因此逻辑输出也是阶跃函数(原始输出和累积输
出也是如此)。相比之下,hingefeatures的总和始终是分段线性函数,因此,
如果仅使用hingefeatures,则Maxent指数是分段线性的。这解释了上面第二条
响应曲线中连接线段的顺序。(请注意,线条略微弯曲,尤其是朝向变量的极值;
这是因为逻辑输出将S型函数应用于Maxent指数。)一起使用所有类(默认情
况下,给定足够的样本)可以实现许多复杂的响应进行精确建模。单击帮助按钮
可以找到各种功能类型的更详细说明。
互动式预测探索
这个互动工具可让您调查整个研究区域的预测变量如何确定Maxent的预测。
单击地图上的一个点将显示其在每个响应曲线中的位置。右上方的图显示了每个
变量对预测对数的贡献(上图的条形图给出了变量名称和数值贡献)。
该工具假定模型是可加的(变量之间没有相互作用),因此请确保仅在没有
特征产品运行的输出上运行它。该工具需要Maxent运行后创建的响应曲线中的
数据,因此在运行之前,必须在Maxent中Advanced栏上选择“Writeplotdata”
复选框。然后在命令窗口中使用以下命令行(开始→运行→cmd)启动该工具:
n
tutorial-dataoutputsbradypus_orial-datalayers
根据运行命令的目录,您可能需要提供文件(例如C:Maxent
)、预测变量(例如C:maxentTutoriallayers))和Maxent输出网
格的完整路径。您的计算机需要足够的内存来一次容纳所有预测变量。
SWD格式
另一种输入格式可能非常有用,尤其是当您的环境网格很大时。由于缺乏更
好的名称,因此被称为“带有数据的样本”,或者简称为SWD。我们的Bradypusfile
的SWD版本称为“bradypus_”,其开头如下:
species,longitude,latitude,cld6190_ann,dtr6190_ann,ecoreg,frs6190_ann,h_dem,p
re6190_ann,pre6190_l10,pre6190_l1,pre6190_l4,pre6190
_l7,tmn6190_ann,tmp6190_ann,tmx6190_ann,vap6190_ann
bradypus_variegatus,-65.4,-10.3833,76.0,104.0,10.0,2.0,121.0,46.0,41.0,84.0,54.
0,3.0,192.0,266.0,337.0,279.0
bradypus_variegatus,-65.3833,-10.3833,76.0,104.0,10.0,2.0,121.0,46.0,40.0,84.0,
54.0,3.0,192.0,266.0,337.0,279.0
bradypus_variegatus,-65.1333,-16.8,57.0,114.0,10.0,1.0,211.0,65.0,56.0,129.0,58
.0,34.0,140.0,244.0,321.0,221.0
bradypus_variegatus,-63.6667,-17.45,57.0,112.0,10.0,3.0,363.0,36.0,33.0,71.0,27
.0,13.0,135.0,229.0,307.0,202.0
bradypus_variegatus,-63.85,-17.4,57.0,113.0,10.0,3.0,303.0,39.0,35.0,77.0,29.0,1
5.0,134.0,229.0,306.0,202.0
它可以代替普通的样本文件使用。区别仅在于该程序无需查看环境层(ascii
文件)即可在采样点获取变量的值,而是直接从表中读取环境变量的值。因此,
环境层仅用于读取“背景”像素(不一定检测到该物种的像素)的环境数据。实
际上,也可以在SWD格式文件中指定背景像素。文件“”包含
10,000个背景数据点。前几个看起来像这样:
background,-61.775,6.175,60.0,100.0,10.0,0.0,747.0,55.0,24.0,57.0,45.0,81.0,182
.0,239.0,300.0,232.0
background,-66.075,5.325,67.0,116.0,10.0,3.0,1038.0,75.0,16.0,68.0,64.0,145.0,1
81.0,246.0,331.0,234.0
background,-59.875,-26.325,47.0,129.0,9.0,1.0,73.0,31.0,43.0,32.0,43.0,10.0,97.
0,218.0,339.0,189.0
background,-68.375,-15.375,58.0,112.0,10.0,44.0,2039.0,33.0,67.0,31.0,30.0,6.0,
101.0,181.0,251.0,133.0
background,-68.525,4.775,72.0,95.0,10.0,0.0,65.0,72.0,16.0,65.0,69.0,133.0,218.
0,271.0,346.0,289.0
我们可以使用“bradypus_”作为示例文件,使用“”(均
位于“swd”目录中)作为环境图层文件来运行Maxent。尝试运行它–您会注意到
它的运行速度要快得多,因为它不必加载大型环境网格。另一个好处是您可以
将不同时间段的不同记录与环境条件相关联。例如,距离同一网格单元100年
记录的两次事件可能反映了环境条件的巨大变化,但是除非您使用SWD格式,
否则两个记录都将被赋予相同的环境变量值。缺点是它无法制作图片或输出网
格,因为它没有所有的环境数据。解决此问题的方法是使用“投影”,如下所述。
批量运行
有时您需要生成多个模型,建模参数或输入中可能会有细微变化。可以使
用命令行参数来自动生成模型,从而无需在程序界面上重复单击和键入。命令
行参数可以从命令窗口(也称为shell)中指定,也可以在批处理文件中定义。看
一下文件“”(例如,在Windows资源管理器中右键单击.bat文
件,然后使用记事本打开它)。它包含以下行:
ironmentallayers=tutorial-datalayers
togglelayertype=ecoregsamplesfile=
outputdirectory=tutorial-dataoutputsredoifexistsautorun
效果是告诉程序在哪里可以找到环境层和样本文件以及在哪里放置输出,以
指示ecoreg变量是类别变量。“自动运行”标志告诉程序启动立即运行,而无需
等待按下“运行”按钮。现在,尝试双击该文件以查看其作用。
Maxent程序的许多方面都可以通过命令行参数进行控制–按下“帮助”按钮以
查看所有可能性。多个运行可以出现在同一个文件中,它们只会一个接一个地运
行。您可以通过将命令行参数添加到“”文件来更改参数的默认值。许
多命令行参数也有缩写,因此也可以使用以下命令来启动中描
述的运行:
–elayers–teco––ooutputs
–r-a
注:e=”environmental=”;
t=”togglelayertype=”;eco=”ecoreg”;s=”samplesfile=”o=”outputdirectory=”;r=”redoif
exists”;a=”autorun”
复写
“replicates”选项可用于对同一物种进行多次运行。此标志最常见的用途是重
复子采样和交叉验证。可以从“设置”面板或使用命令行参数来控制复制。默认情
况下,使用的复制形式为交叉验证,其中,出现数据被随机分为多个相等大小的
组,称为“折叠”,并创建模型,依次忽略每个折叠。然后将剩下的折痕用于评估。
交叉验证相对于使用单个训练/测试组有一个很大的优势:它使用所有数据进行
验证,因此可以更好地利用小型数据集。例如,在将重复次数设置为10的情况
下运行将创建10个html页面,外加一个总结交叉验证统计信息的页面。例如,
我们获得带有误差条的ROC曲线和整个模型的平均AUC,以及带有一个标准偏
差误差条的汇总响应曲线。对于Bradypus,交叉验证的ROC曲线显示了模型之
间的一些差异:
注:除了Thresholdfeatures不选,其他特征都选
Bradypus对年降水量的单变量响应几乎没有变化(左图,下图),而对年降水量
的边际响应变化更大(下图,右图)。
支持两种替代的replicates形式:重复子采样法,其中将存在点重复地分成随
机的训练和测试子集;以及自助法,通过从存在点进行替换采样来选择训练数据,
样本数量等于存在点总数。使用自举时,每个集合中的存在点数等于存在点总数,
因此训练数据集将具有重复记录。
使用这三种replicates形式时,您可能希望通过关闭“writeoutputgrids”选项
来避免吃光磁盘空间,该选项将禁止复制运行输出网格的写入,从而仅获得摘要
统计信息网格(avg,stderr等)。
正规化
设置面板上的“regularizationmultiplier”参数会影响输出分布的集中度或紧密
度-小于默认值1.0的值将导致更局部化的输出分布,更适合于给定的状态记录,
但是可以导致过度拟合(拟合得太接近训练数据,以致模型不能很好地推广到独
立的测试数据)。较大的正则化乘数将给出更分散,更不局部的预测。尝试更
改乘数,并检查产生的图像和AUC中的变化。例如,左下将乘数设置为4可以
得到下图,右下将乘数设置为1,显示了比以前更大的分散分布:
注:仅outputsformat选择Logistic才能得到
随着模型复杂度的增加,过度拟合的可能性也会增加。首先尝试使用默认功
能集将乘数设置为非常小(例如0.01),以查看高度过拟合的模型。然后尝试仅
具有linearandquadraticfeatures的相同的regularizationmultiplier。
投影Projecting
在一组环境层(或SWD文件)上训练的模型可以通过将其应用于另一组环
境层(或SWD文件)来“投影”。需要进行预测的情况包括:在气候条件变化的
情况下对物种分布进行建模,应用入侵物种的自然分布模型来评估不同地理区域
中的入侵风险,或者只是在一组测试位置评估模型以进行进一步的统计分析。在
这里,我们将使用Projecting进行简单的气候变化预测,并尝试挑战困难对气候
变化下进行可靠的分布预测。
“hotlayers”目录与“layers”目录具有相同的环境数据,但有两个变化:年平均
温度变量(tmp6190_)的所有值均增加30,表示均匀升高3摄氏度,而
最高温度变量(tmx6190_)的所有值增加40,表示增加4摄氏度。这些
变化代表对未来气候的非常简化的估计,具有更高的平均温度和更高的温度变化
率,但降水量没有变化。要将Bradypus模型应用到这种新气候中,请使用网格
或SWD格式像以前一样输入样本文件和当前环境数据,然后在“投影层目录”中
输入“hotlayers”目录,如下图所示。
投影图层目录(或SWD文件)必须包含与用于训练模型的变量具有相同名
称的变量,但描述的条件不同(例如,不同的地理区域或不同的气候模型)。对
于训练数据和投影数据,每个变量名称要么是列标题(如果使用SWD格式文件),
要么是不带.asc文件结尾的文件名(如果使用网格目录)。
当您按“运行”时,将在与当前气候条件相对应的环境变量上训练模型,然后
将其投影到“hotlayers”目录中的ascii网格上。输出的ascii网格称为
“bradypus_variegatus_”,通常,将投影目录名称附加到种类名称中,
以便将其与标准(非投影)输出区分开。如果选择“makepicturesofpredictions”,
则投影模型的图片将出现在“”文件中。在我们的情况下,将产生
以下图片:
我们看到,在温暖的气候下,存在的预测概率大大降低。当然,预测取决于
我们要投影的模型的参数。如果仅使用hingeandAutofeatures,而不使用默认特
征集,则预计的分布会更重要:
在投影到新的地理区域或新的气候条件时,在用于训练的区域中看起来非常
相似的两个不同模型可能看起来非常不同。如果存在相关变量可以采用多种方
式拟合外观相似的模型,则尤其如此,因为变量之间的相关性可能会在您投影的
区域中发生变化。
在气候变化下Bradypus的预计范围缩小是否合理?如果查看使用默认
features制作的模型的边际响应曲线,我们会发现最高温度对预测产生了更大的
影响:
注:randomtestpercentage设置为25%
查看Bradypus已知发生地点的最高温度值的直方图,我们可以看到大多数发
生地点(约80%)的最高温度在30到34摄氏度之间。即使背景的很大一部分
在34至35度之间,也只有一次出现在34度以上。
根据我们对气候变化的预测,当前高于30度的所有Bradypus地区80%的最
高气温将升高至34度以上。因此,可以合理地预测此类位置不适合Bradypus,
因此Bradypus可能无法在其当前范围内的大部分地区幸存下来。请注意,很难
得出关于为何不适合这种条件的任何结论:可能是Bradypus不耐热,或者可能
是更高的最高温度将使火引起耐火树种广泛取代雨林。消除了最适合Bradypus
的栖息地。为了进一步研究Bradypus在气候变化下的未来,我们可以进行生理
学研究,以研究该物种对热的耐受性,或者研究该地区雨林边界的火生态。
注意:以上两个直方图是调查数据的有用工具。它们是使用以下命令在R
中制成的:
swdPrence<-("d:/maxent模型软/tutorial-data/swd/bradypus_")
hist(swdPrence$tmx6190_ann,probability=TRUE,breaks=c(5:37*10),xlab="annual
maximumtemp*10",main="bradypusprencepoints")
swdBackground<-("d:/maxent模型软件/tutorial-data/swd/")
hist(swdbackground$tmx6190_ann,probability=TRUE,breaks=c(5:37*10),xlab="ann
ualmaximumtemp*10",main="backgroundpoints")
从直方图中我们可以看到,Bradypus有时可以忍受高温,最高温度为35度
的单笔记录证明了这一点。另一方面,背景温度为36或更高时,背景极少点,
因此我们没有证据表明Bradypus是否可以忍受甚至更高的温度,这在未来的气
候预测中将会普遍存在。这被称为新型气候条件的问题:在进行projecting时,
预测变量的取值可能超出模型训练期间的范围。Maxent处理此问题的主要方法
是“clamping”,即将训练范围之外的变量视为处于训练范围的极限。在上述响应
曲线中可以看到这种效果,因为在训练范围之外,响应保持恒定。每当模型
projected时,Maxent都会制作一张图片,显示夹紧在哪里产生了很大的影响。
projecting选中所有feature的Bradypus模型可得到clamping图,其中所示的值是
bradypusprencepoints
annualmaximumtemp*10
D
e
n
si
t
y
50300350
0
.
0
0
0
0
.
0
0
5
0
.
0
1
0
0
.
0
1
5
0
.
0
2
0
0
.
0
2
5
backgroundpoints
annualmaximumtemp*10
D
e
n
si
t
y
50300350
0
.
0
0
0
0
.
0
0
5
0
.
0
1
0
0
.
0
1
5
0
.
0
2
0
有clamping和无clamping的预测之间的绝对差。
在这种情况下,clamping显然没有什么作用,特别是最高温度以上的响应曲
线显示,这个比例尺的热端预测值已经接近于零了,因此夹紧几乎没有影响。
我们还可以将用于投影的环境变量与用于训练模型的环境变量进行比较。
运行以下批处理命令:
utorial-datalayers
制作出如下两张图片:
注:代码会运行后,图片会出现在子目录下,如MAXENT模型软件
最左边的图片显示了hotlayers气候条件下每个点的新颖性。负值(以红色显
示)表明气候新颖,即hotlayers值超出了layers范围–显示的值是该点超出范围
的最小预测变量,表示为layers层中的变量值范围的一部分。正值(以蓝色显示)
与BIOCLIM值相似,得分为100,表示该点在hotlayers值都完全等于layers的
中间值,意思是完全不新颖。右图显示了每个点上哪个变量最新颖,并且表明
hotlayers中新颖的气候条件是由于平均温度(棕色,主要在亚马逊河以北)或最
高温度(青绿色,主要在亚马逊河的南部)。
其他命令行工具
Maxentjar文件包含许多可从命令行访问的工具。对于Microsoft用户:此处
描述的功能可以在批处理文件中使用,例如。作为替代,Start->run->
cmd为您提供了一个用于交互式运行命令的外壳程序。cygwin(可免费在线获
得)是一个不错的选择,它具有更强大的Shell,可提供许多Unix实用程序。
网格文件的快速可视化
可以使用以下命令查看.asc、.grd和.mxe格式的网格文件以及一些.bil格式的
文件:
tutorial-datalayerscld6190_
与下面描述的所有命令一样,您可能需要将路径添加到文件和/或
要查看的文件。例如,您可以使用:
tutorial-datalayerscld6190_
Show可以接受一些可选参数(在之后):
-ssampleFile提供一个文件,该文件中的样本点以白点显示
-Sspeciesname表示sampleFile中用点显示的物种
-rradius控制出现记录的白色和紫色点的大小
-L删除图例
-o将图片写入.png格式的文件
只需Windows向导,您就可以通过单击.asc,.grd或.mxe文件来调用Show。制
作一个名为的批处理文件,其中包含以下单行:
然后将.asc,.grd或.mxe类型的文件与批处理文件关联:从Windows资源管理器
(又名“我的电脑”),从“工具”->“文件夹选项”->“文件类型...”中,您可能需要制
作批处理文件可执行文件:右键单击它并按照说明进行操作。
做一个SWD文档
要从非SWD文件制作SWD格式的文件,请执行以下操作:
tutorial-datalayerscld6190_
其中samplesfile是存在数据的.csv文件,而grid1,grid2等是.asc,.mxe,.grd或.bil
格式文件的网格。输出被写入“standardoutput”,这意味着它出现在命令窗口中。
要将输出写入文件,请使用“redirect”:
tutorial-datalayerscld6190_>
注:需要新建一个空白csv文件,存储制作swd格式文件的内容;>符号=输
出到某个文件
如果所有网格都在目录中,则可以使用“通配符”避免按名称列出所有网格:
tutorial-datalayers*.asc>
因为通配符(*)扩展为所有匹配文件的列表。
制作SWD背景文件
要从您的研究区域中随机选择一组背景点:
Sample3
tutorial-datalayerscld6190_
注:写代码是需要注意大小写
其中“num”是所需的背景点数。
计算AUC
如下命令:
tpointfilepredictionfile
tutorial-datalayerscld6190_
将计算当前背景AUC,其中testpointfile给出当前样本点,背景点从
predictionfile中随机抽取。testpointfile是.csv文件(可以选择为swd格式),而
predictionfile是网格文件,通常表示物种分布模型的输出。
投影
使用此工具,您可以将先前计算的Maxent模型应用于新的环境数据集:
tlambdaFilegridDiroutFile[args]
这里,lambdaFile是描述Maxent模型的lambdas文件,而gridDir是包含
lambdas文件中描述所有预测变量,包含网格的目录。或者,gridDir可以是swd
格式的文件。可选的args可以包含Maxent可以理解的任何标志-例如,“grd”标
志会使输出密度为t为.grd格式。
文件转换
要将只有网格的目录以一种格式转换为另一种格式:
tindirinsuffixoutdiroutsuffix
其中indir和outdir是目录,insuffix和outsuffix是asc,mxe,grd或bil格式之一。
分析在R语言中的MAXENT输出
Maxent每次运行都会生成许多输出文件。如果您要自己分析预测,则可以
将其中一些文件导入其他程序。在这里,我们演示了免费统计软件包R在Maxent
输出上的使用:本节面向具有R经验的用户。我们将使用Maxent生成的以下两
个文件:
bradypus_variegatus_
bradypus_variegatus_
只有通过使用命令行标志或从Maxent的ttings面板中experiental栏中选择
“writebackgroundpredictions”选项时,才会生成第一个文件。同时自动总是生成
第二个文件。确保您具有测试数据(例如,通过将randomtestpercentage设置为
25);我们将使用与Maxent相同的测试数据来评估Maxent输出。首先,我们
启动R语言,并安装一些软件包(假设这是我们第一次使用它们),然后通过
键入(或粘贴)加载它们:
es("ROCR",dependencies=TRUE)
es("vcd",dependencies=TRUE)
library(ROCR)
library(vcd)
library(boot)
在本节中,我们将使用蓝色文本显示R代码和命令,使用绿色文本显示R输出。
接下来,我们将目录更改为Maxent输出所在的位置,例如:
twd("c:/maxent/tutorial/outputs")
然后读取当前和背景点的Maxent预测文件,并提取我们需要的列:
prence<-("bradypus_variegatus_")
background<-("bradypus_variegatus_")
pp<-prence$tion#getthecolumnofpredictions
testpp<-pp[prence$=="test"]#lectonlytestpoints
trainpp<-pp[prence$=="train"]#lectonlytestpoints
bb<-background$logistic
现在,我们可以将预测值放入ROCR所需的格式中,该软件包将用于进行一些
ROC分析并生成ROC曲线:
combined<-c(testpp,bb)#combineintoasinglevector
label<-c(rep(1,length(testpp)),rep(0,length(bb)))#labels:1=prent,0=random
pred<-prediction(combined,label)#labeledpredictions
perf<-performance(pred,"tpr","fpr")#True/falpositives,forROC
curve
plot(perf,colorize=TRUE)#ShowtheROCcurve
performance(pred,"auc")@[[1]]#CalculatetheAUC
plot命令给出以下结果:
注:代码撰写时,-与代码之间的空格一定要有,否则返回NULL。还要注意大小写。
而“performance”命令给出的AUC值为0.8990679,与Maxent报告的AUC
一致。接下来,作为R中可用但Maxent中不可用的测试示例,我们将对AUC
的标准偏差进行自助估计。
AUC<-function(p,ind){
pres<-p[ind]
combined<-c(pres,bb)
label<-c(rep(1,length(pres)),rep(0,length(bb)))
predic<-prediction(combined,label)
return(performance(predic,"auc")@[[1]])
}
bl<-boot(testpp,AUC,100)
bl
输出如下:
ORDINARYNONPARAMETRICBOOTSTRAP
Call:
boot(data=testpp,statistic=AUC,R=100)
BootstrapStatistics:
t1*0.89906790..02649498
并且我们看到标准误差的自助估计(0.02649498)接近Maxent(0.028)计算
的标准误差。自助法结果还可以用于确定AUC的置信区间:
(bl)
给出以下四个估计值–有关定义和比较这些估计值的介绍,请参见本教程末
尾的资源部分。
Intervals:
LevelNormalBasic
95%(0.8450,0.9488)(0.8460,0.9477)
LevelPercentileBCa
95%(0.8505,0.9522)(0.8096,0.9402)
那些熟悉自助法的人会注意到,我们在这里仅引导存在值。我们也可以引导
背景值,但是鉴于背景值数量很多(10000),结果不会有太大变化。
作为最后一个示例,我们将研究二项式和CohenKappa统计量的计算,例如
阈值规则的。首先,以下R代码针对最小prence预测给出的阈值计算Kappa:
confusion<-function(thresh){
return(cbind(c(length(testpp[testpp>=thresh]),length(testpp[testpp
c(length(bb[bb>=thresh]),length(bb[bb
}
mykappa<-function(thresh){
return(Kappa(confusion(thresh)))
}
mykappa(min(trainpp))
其值为0.0049。如果要使用最小化对测试数据的敏感性和特异性之和的阈
值,我们可以执行以下操作,使用上面“性能”对象中的真阳性率和假阳性率值来
绘制ROC曲线:
fpr=*************[[1]]
tpr=*************[[1]]
sum=tpr+(1-fpr)
index=(sum)
cutoff=*****************[[1]][[index]]
mykappa(cutoff)
这样得出的kappa值为0.0199。要确定这两个阈值的二项式概率,我们可以
执行以下操作:
mybinomial<-function(thresh){
conf<-confusion(thresh)
trials<-length(testpp)
return((conf[[1]][[1]],trials,conf[[1,2]]/length(bb),"greater"))
}
mybinomial(min(trainpp))
mybinomial(cutoff)
这分别给出了5.979e-09和2.397e-11的p值,它们都比Maxent给出的p值
稍大。造成这种差异的原因是测试样本的数量大于25,超过该阈值,Maxent
使用正态近似计算二项式的p值。
本文发布于:2023-03-13 23:43:32,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1678722212141497.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:二趾树懒.doc
本文 PDF 下载地址:二趾树懒.pdf
留言与评论(共有 0 条评论) |