BIOMOD2这套东西,我陆陆续续用了快六年。从硕士论文第一次跑出还算像样的分布图,到后来帮别人做保护规划、入侵风险评估,几乎每次涉及物种分布模拟,我都会优先打开这个R包。原因很简单:它把GLM、GBM、RF、MaxEnt这些主流算法打包进一个统一的框架里,还能做模型集成,对做生态学研究的人来说,省掉了很多底层编码的重复劳动。
不过说实话,BIOMOD2的上手门槛并不低。尤其是刚接触R语言或者机器学习的朋友,第一次跑通一个完整流程往往要踩不少坑:数据格式不对、投影出错、变量筛选不规范、模型评估指标不会看……这些问题我当年都遇到过。所以这篇文章我想系统梳理一下,从环境变量准备到模型集成,再到实际案例分析,把一套完整可复现的思路和代码逻辑讲清楚。
1. 物种分布模拟的核心逻辑:不是画一张图那么简单
1.1 用“已知”推断“未知”的基本思想
物种分布模型(Species Distribution Model,SDM)的基本逻辑,其实就是一句话:用物种已知的出现点和环境变量之间的关系,推断它在空间上更广范围的潜在分布。
你可以把它理解成一个“性格测试”。我们记录了一批物种出现的位置(比如某个鸟在哪些地方被人观察到),然后把这些位置对应的气候、地形、植被等环境数据提取出来,建立“环境特征——出现与否”的统计关系。模型训练好之后,再把这个关系投回到整个研究区域,就能得到一张每个栅格格子上“这个物种有多大概率出现”的预测图。
BIOMOD2就是专门干这件事的R包。它强大在不是只提供一种算法,而是把十种常见算法封装在一个统一接口里,包括GLM、GAM、GBM、CTA、RF、MaxEnt等,并支持“模型集成”策略。集成模型的核心思想是:单个算法都有自身偏差,比如GBM容易过拟合,RF对变量响应曲线刻画比较粗,MaxEnt对背景点数量敏感。但如果把多个算法放在一起做加权平均,最终结果通常会比任何一个单一模型更稳定、更可靠。
1.2 为什么选BIOMOD2而不是单独跑MaxEnt或RF
很多人在做物种分布模拟时,第一反应是使用MaxEnt,因为它操作简单,甚至图形界面也能跑。但MaxEnt的问题在于:它的底層实现让很多人变成了“黑盒用户”,不知道为什么阈值选0.5,不知道正则化倍率怎么调,更不知道该模型对偏采样有多敏感。
BIOMOD2不一样。它虽然不能让你完全绕开黑盒,但它提供了更多机制去理解和控制模型的每一个环节:变量选择、数据切分、伪缺失点生成、模型评估、多次重复、模型投影集成。更重要的是,BIOMOD2通过统一的框架,让你能同时运行多个算法,并显式比较它们的差别。
我个人的建议是:如果你只是想快速出一张Fig1,随便跑跑MaxEnt其实也能应付;但如果你要发文章、要做保护优先级规划、要面对审稿人对模型方法的质疑,BIOMOD2这套框架几乎是不二之选。因为你可以在方法部分明确写出“使用了集成建模策略”,审稿人对这类的接受度比较高。
1.3 适用场景:从保护规划到入侵物种评估
物种分布模拟的用途很广泛。我在实际项目里接触比较多的有以下几类:
- 保护生物学:评估濒危物种的适宜栖息地分布、识别保护空缺、预测气候变化情景下的分布迁移。最常见的就是跑当前气候和未来2050、2070年的SSP情景对比。
- 入侵物种管理:预测入侵物种在新区域的潜在扩散范围。这个我做过一个非常典型的案例,是针对一种外来植物的,跑了不同传播情景下的风险区划。
- 病虫害防治:农业害虫和病原体的适生区预测。这个和入侵物种类似,但对环境变量的选择重点不同,比如要更多考虑寄主分布因素。
- 基础生态学研究:探讨环境变量对物种分布的限制机制,变量贡献率分析可以回答“是温度重要还是降水重要”这类问题。
在这些场景里,BIOMOD2都能承担核心分析任务。不过要注意,SDM本质上还是一个统计推断工具,不是真实世界的完美镜像。它受采样偏差、环境变量选择、空间自相关等因素影响很大,所以结果要结合生态学知识去解读,不能盲目“数字决定一切”。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 准备工作:环境变量筛选与数据清洗的实操流程
2.1 R语言环境搭建和依赖包安装
如果你之前没在Windows下搭建过R语言环境,这里先花两分钟说明一下。去CRAN官网下载R语言最新版本安装后,推荐同时安装RStudio作为IDE,界面友好,脚本管理也方便。
R包安装在RStudio里直接运行install.packages("biomod2")即可。但要注意,BIOMOD2版本更新比较频繁,不同版本之间API有改动。我曾经历过有些旧代码在新版本里跑不通的情况,比如BIOMOD_FormatingData这个函数的参数在新的2.0版本里有调整。
提示:建议在安装前先查看一下BIOMOD2的官方文档,或者直接运行
packageVersion("biomod2")确认版本号。如果你参考的教程是几年前的,很可能需要在代码里做一些适配修改。
除了BIOMOD2本身,你可能还需要安装以下常用包:terra(栅格处理,注意新版本BIOMOD2已经依赖terra而不是raster)、dplyr(数据清洗)、ggplot2(可视化)、corrplot(相关性分析)。建议一次性装好:
r复制install.packages(c("biomod2", "terra", "dplyr", "ggplot2", "corrplot"))
2.2 物种数据获取与格式标准化
准备物种分布数据,最常用的数据库是GBIF(全球生物多样性信息网络)。你可以在GBIF官网下载指定物种的出
