渔业物种分布模型:理论 + R 实现,一篇讲透
1. 海洋空间生态学与渔业管理的范式转变
在过去的三十年里,全球海洋渔业管理经历了一场深刻的范式转变,从传统的单物种、静态种群评估向基于生态系统的渔业管理(Ecosystem-Based Fisheries Management, EBFM)迈进。这一转变的核心挑战在于如何量化和预测海洋生物在三维、高度动态且受气候变化显著影响的海洋环境中的空间分布。物种分布模型(Species Distribution Models, SDMs),在生态学文献中也常被称为生态位模型(Ecological Niche Models, ENMs)或栖息地适宜性模型(Habitat Suitability Models, HSMs),已成为应对这一挑战的关键统计工具。
SDM 的核心逻辑在于建立物种出现的观测记录(存在点或丰度)与环境预测变量(如海表温度、盐度、初级生产力、水深等)之间的统计或机器学习关系,进而将这种关系映射到未采样的地理空间或未来的时间情景中 。在渔业科学中,SDM 的应用早已超越了纯粹的理论生态学范畴,深入到了具有重大经济和生态意义的实际应用场景,包括但不限于:界定关键鱼类栖息地(Essential Fish Habitat, EFH)、标准化渔业依赖型数据的单位捕捞努力量渔获量(CPUE)、预测气候变化下商业鱼种的分布重心迁移、以及设计动态海洋保护区以减少兼捕 。
与陆地生态系统相比,海洋环境具有流体性、连通性和高度的时间变异性,这给 SDM 在渔业中的应用带来了独特的方法论挑战。例如,鱼类种群往往呈现出复杂的时空自相关结构,且渔业数据本身深受“优先采样”(fisheries prefer high-density areas)偏差的影响。本报告旨在对物种分布模型在渔业中的应用进行详尽的调研,涵盖模型算法的选择、数据预处理的艺术、背景点选取的策略、环境因子的生理学意义、典型应用案例,并提供基于 R 语言的完整工作流与代码实例。
2. 渔业数据的特性与预处理策略
构建稳健的 SDM 的第一步,也是最为关键的一步,是对原始数据进行严格的质量控制和预处理。渔业数据通常分为两大类:渔业独立数据(Fishery-independent data,如科学调查)和渔业依赖数据(Fishery-dependent data,如商业捕捞日志)。后者虽然数据量巨大,但存在极强的空间偏差。
2.1 数据来源与固有偏差
商业渔船不是随机采样的科学平台,它们是追求利润最大化的经济单元。渔民会根据经验、声纳探测和同伴信息,集中在鱼群密度最高的区域作业。这种“优先采样”会导致高密度区域的样本过剩,而低密度或未开发区域则缺乏数据。如果直接将这种数据输入模型,模型可能会将“捕捞努力量高”的区域误判为“环境适宜度高”的区域,从而得出有偏的生态位估计 。
相比之下,科学拖网调查通常采用分层随机抽样设计,提供了可靠的“存在-缺失”(Presence-Absence)数据,是校准模型和验证商业数据偏差的黄金标准 。然而,科学调查的成本高昂,时空覆盖范围通常有限,因此整合多源数据(Integrated SDMs)成为近年来的研究热点 。
2.2 空间稀疏化(Spatial Thinning)
为了缓解采样偏差和空间自相关(Spatial Autocorrelation)带来的影响,空间稀疏化是一种标准的数据清洗步骤。空间自相关是指相近位置的观测值往往比远处的观测值更相似(例如,如果一网捕到了鱼,相邻的一网很可能也捕到)。这违反了许多统计模型关于样本独立性的假设,导致参数估计的标准误偏低,显著性检验过于乐观(即第一类错误膨胀)。
空间稀疏化通过设定一个最小近邻距离阈值(如 5 km 或 10 km),在阈值范围内随机保留一个点并剔除其余点,从而强制样本在空间上保持独立。在 R 语言中,spThin 包提供了高效的算法来执行这一操作,能够在保留最大样本量的同时满足距离约束 9。近期的研究还推出了 GeoThinneR 包,提供了基于网格(Grid-based)和基于精度(Precision-based)的稀疏化方法,进一步提高了处理大规模数据集的效率 。
2.3 多重共线性与 VIF 分析
海洋环境因子之间往往存在极强的相关性。例如,海表温度(SST)与气温、SST 与溶解氧(由于溶解度物理特性)之间通常高度相关。在回归模型(如 GLM, GAM)中,多重共线性会导致回归系数估计不稳定,难以解析单一变量的独立贡献。
方差膨胀因子(Variance Inflation Factor, VIF)是检测共线性的标准指标。一般认为 VIF > 10(甚至 VIF > 3 在某些严格研究中)表示存在严重的共线性问题。在建模前,必须通过逐步剔除法(Stepwise procedure)移除高 VIF 的变量。R 语言中的 usdm 包是处理栅格数据共线性的利器,其 vifstep 函数可以自动化地筛选出互不相关的变量组合。
| 指标 | 阈值标准 | 含义与处理建议 |
|---|
| VIF | | |
| VIF | | |
| VIF | | 严重共线性,必须剔除。通常保留具有更直接生理机制的变量(例如保留水温,剔除纬度)。 |
3. 伪缺失点与背景点的选取策略
对于仅有“存在点”(Presence-only)的数据(如博物馆记录、机会主义观测、部分商业渔获数据),模型算法(特别是 MaxEnt 和 逻辑回归的变体)需要一组对比数据来代表“环境的背景特征”或“物种未出现的区域”。这组数据的选取被称为背景点(Background points)或伪缺失点(Pseudo-absences)的生成,它是 SDM 建模中最具争议也最为关键的技术环节之一 。
3.1 随机选取(Random Selection)
最简单的方法是在研究区域内随机撒点。这种方法隐含的假设是:研究区域内的任何地点被采样的概率是均等的。然而,对于渔业数据而言,这一假设几乎从未成立。如果捕捞努力量集中在近海,而我们将近海的存在点与全海域的随机背景点进行比较,模型学到的将是“离岸距离”而非“环境偏好”。研究表明,在采样偏差存在时,简单的随机背景选取会导致模型性能(AUC)显著高估,但实际预测能力极差 。
3.2 目标组背景选取法(Target-Group Background)
为了纠正采样偏差,Phillips 等人(2009)提出了“目标组背景”法,这在渔业 SDM 中被证明极为有效 。其核心逻辑是:利用使用相同采样方法(如同一类型的渔具)捕获的其他物种的出现点作为目标物种的背景点。
- 原理解析: 假设我们研究黄鳍金枪鱼(目标物种)。我们收集了同一延绳钓船队捕获的蓝鳍金枪鱼、大眼金枪鱼、剑鱼等“非目标物种”的记录。这些记录点代表了“渔船去过且进行了捕捞作业”的地点。将黄鳍金枪鱼的存在点与这些背景点对比,实际上是在对比“有黄鳍金枪鱼的渔场”与“无黄鳍金枪鱼但有其他鱼的渔场”。由于两组数据都受到相同的捕捞努力量分布(采样偏差)的影响,这种偏差在统计上被相互抵消了,模型从而能够专注于解析环境因子的差异 。
- 实施细节: 在 R 中使用
dismo 或 maxnet 时,可以通过通过传入目标组的坐标作为 a (absence/background) 参数来实现 。
3.3 空间缓冲与环境分层策略
另一种策略是限制背景点的选取范围。例如,仅在存在点周围的一定缓冲距离(Buffer distance)内选取背景点,或者根据环境特征进行分层采样。这种方法试图模拟物种的扩散限制,防止模型将环境适宜但由于地理隔离(如海盆阻隔)导致物种未到达的区域判别为“不适宜”。研究表明,背景点选取范围的地理跨度直接影响模型对应答曲线(Response Curves)的拟合——范围过大可能导致模型过于简化,范围过小则可能导致过拟合 。
4. 环境因子:从物理海洋学到生理生态学
SDM 的预测能力取决于环境预测变量(Predictors)的生物学相关性。在渔业中,变量的选择应基于鱼类的生理耐受限度、摄食需求和生活史特征。
4.1 关键环境因子类别
- 热力学因子(Temperature): 海表温度(SST)是绝大多数海洋 SDM 的首选变量。它直接控制变温动物(绝大多数鱼类)的代谢速率、酶活性及生长率。对于深海或底层鱼类,海底温度(Bottom Temperature)则更为关键 。
- 生产力因子(Productivity): 叶绿素-a 浓度(Chl-a)通常作为初级生产力的代理指标,反映了浮游植物的丰度。通过食物网的传递,它间接决定了浮游动物和饵料鱼的分布,进而影响捕食性鱼类(如金枪鱼)的分布。在建模时,考虑到能量传递的时间滞后,使用滞后 1-2 个月的 Chl-a 数据往往比同期数据效果更好 。
- 流体动力学因子(Hydrodynamics): 海流速度(u/v 分量)、海面高度异常(SSHA)和涡动动能(EKE)。这些变量对于识别海洋锋面、涡旋边缘等物理结构至关重要。锋面往往是饵料生物聚集的“热点”,也是渔业作业的高产区 。
- 化学因子(Chemistry): 溶解氧(Dissolved Oxygen)和盐度。随着全球变暖导致的海洋脱氧,溶解氧已成为限制高代谢需求鱼类(如长鳍金枪鱼)垂直分布和水平分布的关键因子 。
- 地形因子(Topography): 水深(Bathymetry)、坡度(Slope)、海底粗糙度(Rugosity)。对于底栖鱼类(如岩鱼、比目鱼)和定居性物种,地形结构提供了庇护所和特定的底质环境 。
4.2 数据源推荐
- Bio-ORACLE: 提供全球高分辨率(最高 5 arcmin)的海洋环境栅格数据,包含最大值、最小值、平均值及长期气候态数据。特别适合用于模拟底栖生物和长期气候变化研究 。
- Copernicus Marine Service (CMEMS): 提供近实时、历史重分析(Reanalysis)以及未来预测的物理和生化海洋学产品。对于需要匹配具体日期(如通过 VMS 追踪的渔船数据)的动态 SDM,CMEMS 的日尺度或月尺度数据是必不可少的 。
- MARSPEC: 专为海洋空间生态学设计,特别是在近岸高分辨率数据方面具有优势 。
5. 模型算法与类别:从回归到深度学习
渔业 SDM 的算法选择取决于数据类型(存在-缺失 vs 仅存在)、样本量大小以及研究目的(解释性 vs 预测性)。
5.1 广义线性模型 (GLM) 与广义加性模型 (GAM)
这是渔业科学中最传统的工具。
- GLM: 假设物种对环境的响应符合某种参数化曲线(如二次曲线,代表生态位的中性理论)。它结构简单,易于解释,常用于早期的栖息地适宜性指数(HSI)构建 。
- GAM: 被认为是渔业数据标准化的“瑞士军刀”。GAM通过平滑函数(Splines)拟合数据,不需要预设响应曲线的形状,能够极好地捕捉鱼类对环境非线性的复杂响应。在 CPUE 标准化中,GAM 能够有效分离空间、时间、环境和渔具效应 。
5.2 机器学习算法 (Machine Learning)
- MaxEnt (最大熵模型): 专为仅存在(Presence-only)数据设计。它通过寻找满足约束条件下熵最大的概率分布来估计物种分布。MaxEnt 在样本量较小(如稀有物种或副渔获物种)时表现依然稳健,是目前应用最广泛的 SDM 算法之一 。
- 随机森林 (Random Forest, RF) 与 提升回归树 (BRT): 基于决策树的集成学习方法。它们能够自动处理变量间的复杂交互作用(例如,温度对鱼类的影响可能依赖于溶解氧的水平)。RF 和 BRT 在预测准确性上通常优于回归模型,且对异常值和缺失值具有较强的鲁棒性。
5.3 时空地统计模型 (Spatio-Temporal Geostatistical Models)
这是近年来渔业评估领域的革命性进展,代表模型为 VAST (Vector Autoregressive Spatio-Temporal) 和基于 TMB (Template Model Builder) 的 sdmTMB。
传统的 SDM 往往假设样本在空间上是独立的,或者仅将经纬度作为普通变量处理。而 VAST/sdmTMB 引入了高斯随机场 (Gaussian Random Fields, GRF) 来显式建模空间自相关。
- 核心优势: 它们能够区分“真正的丰度变化”和“分布重心的位移”。例如,当鱼群因气候变暖向北迁移时,传统模型可能误判总生物量下降,而时空模型能通过空间相关性结构捕捉到这种位移 。
- 应用场景: 这些模型已成为美国 NOAA 和 ICES 进行多物种股票评估和标准化调查数据的标准工具 。
5.4 深度学习 (Deep Learning)
卷积神经网络 (CNN) 开始被引入 SDM 领域。与传统模型只提取“点”上的环境值不同,CNN 可以将环境数据视为图像(Tensor),从中提取纹理、边缘等空间特征(例如,识别出一个冷涡的边缘结构)。初步研究表明,CNN 在预测精度(AUC/TSS)上可与 MaxEnt 和 RF 媲美甚至更优,特别是在捕捉大尺度的海洋学特征方面。然而,其“黑箱”性质和对海量训练数据的需求限制了其在管理咨询中的即时应用 。
6. 典型研究案例分析
6.1 太平洋鲣鱼 (Skipjack Tuna) 的气候变化预测
- 背景: 鲣鱼是热带太平洋最重要的商业鱼种,支撑着许多太平洋岛国(PNA 国家)的经济。
- 研究方法: 科学家利用耦合生物物理模型(如 APECOSM-E)和基于 IPCC RCP 8.5 情景的 SDM,预测 2050 年至 2100 年的种群动态。
- 关键发现: 模型预测鲣鱼的生物量重心将显著向东、向高纬度迁移。这意味着鱼群将从 PNA 国家的专属经济区(EEZ)通过公海向东太平洋移动。
- 深层影响: 这一发现具有巨大的地缘政治经济意义。由于鱼群迁出 EEZ,这些岛国收取的“入渔费”将大幅减少,直接威胁国家财政安全。这促使国际社会讨论建立新的跨区域气候适应性渔业管理机制 。
6.2 欧洲鳀鱼 (European Anchovy) 的环境驱动机制
- 背景: 地中海和东北大西洋的鳀鱼种群波动极大,传统的种群动力学模型难以解释其补充量(Recruitment)的变异。
- 研究方法: 结合 Random Forest 和 GAM,整合了河流径流量、SST、上升流指数等变量。
- 关键发现: 研究揭示了阿尔梅里亚-奥兰锋面(Almeria-Oran Front)作为生物地理屏障的作用。更重要的是,发现温度和淡水输入(带来营养盐)是驱动补充量的核心因子,其重要性在某些海域超过了直接的食物可得性。这一结果帮助管理者划分了更精细的种群管理单元,不再单一依赖捕捞限额,而是结合环境监测进行动态管理。
6.3 白令海幼年鲑鱼的时空动态对比
- 背景: 理解幼年鲑鱼在白令海的分布对于预测成年回归量至关重要。
- 研究方法: 对比了 GAM 和 VAST 两种模型框架。
- 关键发现: 两种模型在空间预测图上呈现相似趋势,但在预测精度的细节上,VAST 由于显式包含时空相关项,提供了更精确的置信区间,并更好地捕捉了年际间的分布中心变化。研究确定了 50米等深线内的沿岸水域是高密度的关键育幼场,强调了保护近岸栖息地对维持鲑鱼种群的重要性 。
7. R 语言实现:核心包与代码实战
R 语言拥有最完善的 SDM 生态系统。以下是构建一个完整渔业 SDM 工作流所需的关键包和代码框架。
7.1 核心 R 包概览
| 包名 | 主要功能 | 适用场景 |
|---|
terra | | 替代旧的 raster 包,处理大规模环境数据,速度极快 |
usdm | | |
spThin | | |
dismo | | |
biomod2 | | 同时运行 GLM, RF, ANN 等多种算法并取加权平均 |
sdmTMB | | |
7.2 代码实例:从环境处理到集成建模
以下代码展示了如何处理环境数据、生成目标组背景点,并使用 biomod2 进行集成建模。
步骤 1: 环境数据加载与共线性去除 (VIF)
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line# 加载必要的库library(terra)library(usdm)# 假设环境数据(.tif)存放在 data/env 目录下# 这些数据可能包括:SST_mean, Chl_mean, Bathymetry, Salinity 等env_files <- list.files(path = "./data/env", pattern = ".tif", full.names = TRUE)env_stack <- terra::rast(env_files)# 计算方差膨胀因子 (VIF)# vifstep 函数会自动迭代,剔除 VIF > 10 的变量# 这一步对于 GLM/GAM 尤为重要,对 随机森林 影响较小但仍推荐做vif_res <- usdm::vifstep(env_stack, th = 10)print(vif_res)# 排除高共线性变量env_final <- usdm::exclude(env_stack, vif_res)
步骤 2: 目标组背景点 (Target-Group Background) 的生成
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(linelibrary(sf)# 假设 df_catch 为包含所有物种捕捞记录的数据框# columns: species, lon, lat, gear_typetarget_sp <- "Thunnus_albacares" # 黄鳍金枪鱼# 1. 提取目标物种的存在点presences <- df_catch[df_catch$species == target_sp, c("lon", "lat")]presences$pa <- 1 # 标记为 1# 2. 提取背景点:使用同一渔具捕获的 *非* 目标物种# 逻辑:渔船在这些地方作业了,但没抓到黄鳍金枪鱼 -> 这是一个高质量的“缺失”信号background <- df_catch[df_catch$species!= target_sp, c("lon", "lat")]background$pa <- 0 # 标记为 0# 3. 合并数据# 注意:实际操作中可能需要对背景点进行下采样(Sub-sampling),使其数量级与存在点相当data_model <- rbind(presences, background)# 4. 提取环境值env_values <- terra::extract(env_final, data_model[, c("lon", "lat")])data_final <- cbind(data_model, env_values)
步骤 3: 使用 biomod2 进行集成建模
biomod2 是目前最强大的 SDM 框架之一,能够自动化运行多个模型并评估。
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(linelibrary(biomod2)# 1. 格式化数据myBiomodData <- BIOMOD_FormatingData( resp.name = "Yellowfin", resp.var = data_final$pa, resp.xy = data_model[, c("lon", "lat")], expl.var = env_final, PA.nb.rep = 0 # 因为我们已经手动定义了背景点,所以设为 0)# 2. 定义模型参数 (使用默认参数或自定义)# 这里演示调用 Random Forest (RF), GLM 和 MaxEntmyBiomodOptions <- BIOMOD_ModelingOptions()# 3. 运行模型myBiomodModelOut <- BIOMOD_Modeling( bm.format = myBiomodData, models = c("RF", "GLM", "MAXENT.Phillips"), CV.strategy = "random", # 交叉验证策略 CV.nb.rep = 3, # 重复 3 次 CV.perc = 0.7, # 70% 训练,30% 测试 metric.eval = c("TSS", "ROC"), # 使用 TSS 和 ROC (AUC) 评估 var.import = 3 # 计算变量重要性)# 4. 构建集成模型 (Ensemble Modeling)# 仅保留 TSS > 0.6 的高质量模型参与集成myBiomodEM <- BIOMOD_EnsembleModeling( bm.mod = myBiomodModelOut, models.chosen = 'all', em.by = 'all', eval.metric = c('TSS'), eval.metric.quality.threshold = c(0.6), prob.mean = TRUE, # 计算平均值 prob.mean.weight = TRUE # 根据模型表现加权平均)# 5. 生成预测图myBiomodProj <- BIOMOD_Projection( bm.mod = myBiomodModelOut, proj.name = "Current_Prediction", new.env = env_final, models.chosen = 'all')# 绘制加权平均的集成预测图myBiomodEF <- BIOMOD_EnsembleForecasting( bm.em = myBiomodEM, bm.proj = myBiomodProj)plot(myBiomodEF)
步骤 4: 进阶 - 使用 sdmTMB 处理时空自相关
对于需要严格标准化的 CPUE 数据,sdmTMB 是更专业的选择。
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(linelibrary(sdmTMB)# 1. 创建空间网格 (Mesh)# 使用 SPDE (Stochastic Partial Differential Equation) 方法近似高斯随机场mesh <- make_mesh(data_final, xy_cols = c("lon", "lat"), cutoff = 10)# 2. 拟合时空模型# 公式:生物量密度 ~ 深度 + 年份因子 + 空间场 + 时空场fit <- sdmTMB( density ~ s(depth) + as.factor(year), data = data_final, mesh = mesh, family = tweedie(link = "log"), # Tweedie 分布适合零膨胀的连续数据(常见的渔获数据特征) spatial = "on", # 开启纯空间随机场 spatiotemporal = "ar1" # 开启自回归时空场 (年份间存在相关性))# 3. 检查模型收敛与残差sanity(fit)
8. 结论与未来展望
物种分布模型已从一种纯粹的生态学探索工具,演变为现代渔业管理不可或缺的基础设施。通过整合高分辨率的卫星遥感数据、复杂的机器学习算法以及严格的统计学校正方法(如 VIF 筛选、目标组背景选取),SDM 赋予了我们透视海洋生物时空动态的能力。
然而,挑战依然存在。深度学习模型(如 CNN)虽然在特征提取上表现卓越,但其对“小数据”的过拟合风险仍需警惕;三维海洋环境数据(特别是深层溶解氧和流场)的精度仍是制约底栖鱼类模拟的瓶颈。未来的发展方向将在于多源数据融合(如结合 eDNA 数据与声学数据)、实时动态管理(Dynamic Ocean Management, 如根据实时 SDM 预测实施移动禁渔区)以及全生态系统模型(不仅预测单一物种,更预测捕食者-猎物的空间重叠)的构建。