fao_settings(lang = "zh") # 本文所有图表使用中文fao_data_info()查看你使用的版本和引用格式。
本教程以东北太平洋(FAO 67区)为例,完整演示一个FAO主要渔区的评估:从一个空白的R会话开始,直到写出一份完整的报告。67区从白令海东部和阿拉斯加湾起,沿加拿大和美国的海岸向南延伸到加利福尼亚北部(北纬40°)。本教程按你自己工作时的顺序,用到了本包的几乎每一个函数,并说明每张图显示什么、怎么看,以及它说明了该渔区的什么情况。如果你从未用过本包,请从头到尾阅读,边读边运行代码;如果你已经熟悉本包,可以用目录直接跳到需要的步骤。
67区是很好的教学例子,因为它的历史清楚地写在数据里:有二十年时间,日本和苏联的船队捕走了该渔区很大一部分渔获,直到1977年美国和加拿大把渔业管辖范围扩大到200海里,渔获才转到它们自己的船队手中。这里一个物种(狭鳕)占主导地位,有一个著名的过度捕捞案例(Pacific ocean perch,一种平鲉属岩鱼),还有北太平洋的鲑鱼渔业;它的数据也是所有FAO渔区中最好的之一。下文中的每个数字都是在生成本页时由数据算出的,因此与图表一致。
| 步骤 | 做什么 | 函数 |
|---|---|---|
| 1 | 准备R、项目文件夹和设置 |
fao_settings()、fao_font()
|
| 2 | 获取FAO数据,了解其版本,保存自己的副本 |
check_fao_update()、download_fao_data()、load_fao_data()、fao_data_info()
|
| 3 | 渔区的渔获量:趋势、阶段、占全球的比例 | fishing_area_data() |
| 4 | 主要物种 | fishing_area_species() |
| 5 | 主要国家 | fishing_area_country() |
| 6 | 一个物种,一个国家 |
species_country()、country_species()、country_analysis()
|
| 7 | 类群结构、资源状态、趋势与突变 |
species_group_composition()、stock_status()、peak_trend()、regime_shift()、area_overview()
|
| 8 | 数据质量、多样性与船队 |
data_quality()、diversity_concentration()、country_group_summary()、coastal_distant()
|
| 9 | 文献中的方法 |
catch_shocks()、collapse_analysis()、catch_synchrony()、pelagic_demersal()、distant_water_profile()
|
| 10 | 物种特征与温度 |
fishbase_match()、fao_area_sst()、mean_temperature_catch()
|
| 11 | 主要物种的资源评估 |
cmsy_setup()、cmsy_area()
|
| 12 | Word、LaTeX和PDF格式的报告(用TinyTeX生成PDF) |
fao_report()、tinytex::install_tinytex()
|
| 13 | 所有文件保存在哪里,以及如何重新读取 |
图表的解读方式。每张图下方,“🔎 怎么看这张图”说明坐标轴、颜色和线条的含义,“67区的结果”给出该渔区的结果。图表描述的是报告的渔获量:它们说明的是上岸并上报给FAO的渔获量,而不是海里有多少鱼。得出每一个结论时都要记住这一点。
1. 🧰 准备工作
安装一次本包,同时安装它用到的所有包(详见🚀 快速入门),然后在每次会话开始时加载它:
install.packages("remotes")
remotes::install_github("Linbojun99/faofishingreport", dependencies = TRUE)在项目文件夹中工作。每个函数都把图表和表格保存在工作目录(getwd()返回的文件夹)中。每项评估建一个文件夹,例如建一个RStudio项目,或者自己设置:
dir.create("~/fao67", showWarnings = FALSE)
setwd("~/fao67")
getwd()为本次会话一次性选好设置:用fao_settings()设置图表的语言、风格和输出格式。不带参数调用它,可以查看当前的设置。
fao_settings(lang = "zh", theme = "classic", dpi = 100, pptx = FALSE)| 设置 | 本文取值 | 作用 |
|---|---|---|
lang |
"zh" |
图表文字和名称使用中文;"en"为英文,"both"为中英双语 |
theme |
"classic" |
图表风格(见🎨 自定义图表与地图) |
dpi |
100 |
PNG文件的分辨率(印刷用300) |
pptx |
FALSE |
TRUE时把每张图同时保存为可编辑的PowerPoint文件 |
图表字体会按你的操作系统选择(fao_font()显示所用的字体):Windows上为SimSun,macOS上为Songti
SC,Linux上为Noto Serif CJK SC,以保证中文名称能正常显示。
2. 💾 获取数据
2.1 检查FAO的最新版本
FAO每年发布一次全球捕捞产量(Global Capture
Production)统计。本包自带一个较新的版本;check_fao_update()把它与网上的最新版本比较,download_fao_data()下载并转换一个版本(约6
MB,通常不到一分钟):
check_fao_update() # 比较网上的最新版本与你电脑上的数据
download_fao_data() # 下载最新版本(只有FAO发布了新版本时才需要)2.2 加载数据,并确认所用的版本
load_fao_data()返回你电脑上可用的最新版本(下载过的版本,否则为本包自带的版本),每个国家、物种条目、渔区和年份一行:
fao <- load_fao_data()
dim(fao)
#> [1] 1024698 8
show_table(fao[fao$FAO.major.fishing.area..Name. == "Pacific, Northeast" & fao$Year == 2024, ], n = 5)| Country..Name. | ASFIS.species..Name. | FAO.major.fishing.area..Name. | Unit..Name. | Unit | Year | Production | Production.Type | |
|---|---|---|---|---|---|---|---|---|
| 95717 | Canada | Pink(=Humpback) salmon | Pacific, Northeast | Tonnes - live weight | TLW, Number | 2024 | 3,659.42 | actual |
| 95792 | Canada | Chum(=Keta=Dog) salmon | Pacific, Northeast | Tonnes - live weight | TLW, Number | 2024 | 1,840.59 | actual |
| 95867 | Canada | Coho(=Silver) salmon | Pacific, Northeast | Tonnes - live weight | TLW, Number | 2024 | 432.38 | actual |
| 95908 | Canada | Rainbow trout | Pacific, Northeast | Tonnes - live weight | TLW, Number | 2024 | 0.00 | actual |
| 95983 | Canada | Sockeye(=Red) salmon | Pacific, Northeast | Tonnes - live weight | TLW, Number | 2024 | 1,418.83 | actual |
| 列 | 含义 |
|---|---|
Country..Name. |
上报国家(FAO英文名) |
ASFIS.species..Name. |
FAO物种条目(一个种、属、科,或“Marine fishes nei”这样的类群;nei = not elsewhere included,即“未另列明”) |
FAO.major.fishing.area..Name. |
FAO主要渔区 |
Year、Production
|
年份和渔获量(吨,活重) |
Production.Type |
数值是怎样得来的:国家上报、FAO估算…… |
务必记录所用的版本:FAO每发布一个新版本都会修订以前的年份,所以报告必须说明它依据的是哪个版本。fao_data_info()给出版本号、相关日期、下载链接和引用格式:
info <- fao_data_info()
info
#> FAO Global Capture Production
#> Release: 2026.1.0 (published by FAO on 2026-03-30)
#> Years: 1950-2024
#> File: https://www.fao.org/fishery/static/Data/Capture_2026.1.0.zip
#> Obtained: bundled with faofishingreport, downloaded from FAO on 2026-10-10
#> Licence: CC BY 4.0 (https://www.fao.org/contact-us/terms/db-terms-of-use/en)
#> Citation: FAO. 2026. Global Capture Production 1950-2024, release 2026.1.0. In: Fisheries and Aquaculture [online]. Rome. [Cited 10 October 2026]. https://www.fao.org/fishery/collection/capture/en. Licence: CC BY 4.0.2.3 数据保存在哪里
下载的版本保存在本包的数据文件夹fao_data_dir()中,以后每次会话都会再用。要在多台电脑之间或团队内共用一个文件夹,在~/.Renviron中设置环境变量FAOFISHINGREPORT_DATA_DIR(见💾
FAO数据:下载与自定义)。某个渔区的数据可以像任何R对象一样另存一份副本:
fao_data_dir()
#> [1] "/home/runner/.local/share/R/faofishingreport"
area67_raw <- fao[fao$FAO.major.fishing.area..Name. == "Pacific, Northeast", ]
saveRDS(area67_raw, "area67_data.rds") # 在R中读取:readRDS("area67_data.rds")
write.csv(area67_raw, "area67_data.csv", row.names = FALSE, fileEncoding = "UTF-8") # 用Excel打开3. 🌊 渔区的渔获量
fishing_area_data()的输入是一个FAO主要渔区的名称,它提取该渔区的数据,绘制总渔获量及其阶段,以及该渔区占全球海洋渔获量的比例:
NEP <- fishing_area_data("Pacific, Northeast")
area67 <- NEP$area_datafishing_trend.png:总渔获量及其阶段
🔎
怎么看这张图:灰色面积是该渔区每年的渔获量(百万吨)。竖直虚线是突变点,即平均渔获量发生变化的年份,用Bai-Perron检验(strucchange::breakpoints())找出;每条虚线处开始一个新的阶段。灰色水平线段是各阶段的平均渔获量。
67区的结果:渔获量从1950年的59.8万t增长到1987年的峰值340.2万t,2024年为255.1万t。检验共找出3个阶段:1950–1963年(平均72.5万t);1964–1983年(平均201.5万t);1984–2024年(平均294.4万t)。这些阶段对应船队的历史,后面各步会逐一说明:1950年代加拿大和美国以鲑鱼和鲱鱼为主的少量渔获;1960年代起苏联和日本的拖网船队来到白令海和阿拉斯加湾捕捞底层鱼类;以及1977年200海里渔业管辖区设立之后,美国船队发展壮大,形成了最近四十年较高而平稳的渔获量。
fishing_percentage.png:占全球海洋渔获量的比例
🔎 怎么看这张图:每个点是当年该渔区渔获量占所有FAO海洋渔区渔获量的百分比;红线是这些比例的平均值。内陆水域不计算在内。
67区的结果:该渔区占全球海洋渔获量的2.1%至5.0%,平均为3.4%,2024年为3.2%。比例高于其平均值,说明该渔区的增长快于(或下降慢于)世界其他海域:这里是在1980年代,即该渔区的渔获量达到高位平台的时候。
NEP是一个列表:NEP$area_data(该渔区的数据,后面各步都要用到)、NEP$coefs_data(各阶段:起止年份和平均渔获量)和NEP$act_world_map(地图数据)。用saveRDS(NEP, "NEP.rds")保存,以后可以接着分析而不必重新计算。
4. 🐟 主要物种
fishing_area_species()按渔获量给物种条目排序(rank_range = 1:10:最大的十个),绘制它们的渔获量随时间的变化,并找出每个物种的阶段:
sp <- fishing_area_species(area67, rank_range = 1:10)area_species.png:主要物种放在一起,以及area_species_wrap.png:每个物种一个分面
🔎 怎么看这些图:第一张图把十个物种条目放在同一个纵轴上,以便比较它们的大小。第二张图给每个物种一个单独的分面和纵轴,这样小物种也看得清:折线是每年的渔获量,竖直虚线和灰色线段是该物种的阶段,倾斜的虚线是线性趋势,百分比是该物种在该渔区历年渔获量中所占的比例。
67区的结果:最近五年最大的条目是狭鳕(每年141.1万t)、北太平洋无须鳕(每年21.8万t)、太平洋鳕(每年17.2万t)、细鳞大麻哈鱼(每年12.9万t)、红大麻哈鱼(每年12.6万t)。有四个特点很突出:
- 一个物种占主导。1950年以来,狭鳕占该渔区全部渔获量的43.5%,而其后九个条目合计占39.3%。狭鳕的变化就是该渔区的变化。
- 暴涨暴跌。Pacific ocean perch(一种平鲉属岩鱼)的渔获量从1950年的2.5万t增长到1965年的峰值46.1万t,主要由苏联和日本的拖网船捕捞,十年后降到6.6万t。岩鱼生长慢、寿命长,承受不了长期的高强度捕捞。
- 逐渐消失的渔业。太平洋鲱的渔获量1950年为21.0万t,1963年达到峰值34.0万t,2024年只有2.2万t。
- 两年周期。细鳞大麻哈鱼(pink salmon)的生命周期为两年,因此奇数年和偶数年的洄游群体交替出现:2000年以来,奇数年的渔获量平均为21.3万t,偶数年为10.6万t,这就是它的分面中锯齿状的折线。
改变rank_range就会改变显示的物种,例如rank_range = 11:20显示其后的十个。只有在timeseries_analysis = FALSE时,分面中的折线才会被平滑,同时也不再显示阶段。
FAO物种名录(ASFIS)中没有中文名的物种,本包使用FishBase和SeaLifeBase中给中国大陆的简体中文俗名(如Pacific cod,太平洋鳕);两者都没有的(如Pacific ocean perch),图表和表格中显示英文名。
5. 🌎 主要国家
fishing_area_country()对国家做同样的分析,并加上一张各国渔获量的地图:
co <- fishing_area_country(area67, rank_range = 1:8)🔎 怎么看这些图:与物种的图一样:每个国家一个分面,显示其阶段、趋势和历年渔获量占比;地图按各国在该渔区的总渔获量着色。
67区的结果:最近五年,美利坚合众国(95.2%)和加拿大(4.5%)几乎占了全部渔获量。但过去并非如此。1950年代有9年加拿大是渔获量最大的国家;苏联在1962–1966年最大(峰值为1972年的86.9万t),日本在1967–1982年最大(峰值为1970年的139.1万t);大韩民国在1986年达到51.8万t。美国的份额1970年只有14%,1980年为32%,1990年为87%,2024年为96%;从1983年起美国每年的渔获量都超过日本,日本在该渔区最后一次超过1000 t的渔获是在2001年。
这一变化有明确的原因。美国的《渔业养护与管理法》(Fishery Conservation and Management Act,1976年通过,1977年3月1日生效)设立了200海里渔业管辖区,只把美国船队捕不完的那部分渔获分配给外国船队;加拿大也在同一年把渔业管辖范围扩大到200海里。1980年代,美国渔船先是在海上把渔获卖给外国加工船(“合资渔业”,joint ventures),后来改为运回本国上岸,直到外国捕捞结束。日本、苏联、韩国和波兰的分面都在这些年里结束。
6. 🔍 一个物种,一个国家
6.1 谁在捕捞某个物种:species_country()
pollock <- species_country(area67, "Alaska pollock(=Walleye poll.)", rank_range = 1:5)🔎
怎么看这些图:这些图把一个物种条目的渔获量按国家分解:排名图和小多图(每个国家一个分面,带阶段)、按时期显示各国占比的饼图,以及一张地图。物种名称必须按FAO数据中的写法给出(unique(area67$ASFIS.species..Name.)列出全部名称;fao_translate()给出中文名)。
67区的结果:狭鳕的历史就是该渔区历史的缩影。日本最先开发了这一渔业(峰值为1970年的107.3万t),随后是苏联(峰值为1972年的39.1万t)和大韩民国(峰值为1986年的46.4万t)。1980年以前美国几乎不捕狭鳕;它的渔获量在1980年代的合资渔业中增长起来,此后一直是唯一的大宗渔获,峰值为2005年的154.7万t。
6.2
一个国家捕什么:country_species()和country_analysis()
country_species()把一个国家在该渔区的渔获量按物种分解;country_analysis()考察同一个国家在所有FAO渔区的渔获量,看它在哪里捕捞:
usa_67 <- country_species(area67, "United States of America", rank_range = 1:10)
usa_all <- country_analysis("United States of America", rank_range = 1:10)🔎
怎么看这些图:United_States_of_America_species_*图:美国在67区捕捞的物种。United_States_of_Americaanalysis_*图:美国在所有渔区捕捞的物种、它在各渔区的渔获量(United_States_of_Americayearly_area_production.png,每个渔区一条线),以及它作业渔区的地图。
结果:1970年代,美国在67区的渔获主要是Natantian decapods nei、细鳞大麻哈鱼、King crabs,即沿岸渔业的鲑鱼、蟹类和虾类。最近五年则是狭鳕、北太平洋无须鳕、太平洋鳕,也就是过去由外国船队捕捞的底层鱼类。在所有FAO渔区中,67区从1985年超过西北大西洋起,一直是美国最大的渔区,现在它提供的渔获量远远超过其他渔区。
7. 📈 类群结构、资源状态、趋势与突变
7.1 物种类群:species_group_composition()
groups <- species_group_composition(area67)🔎
怎么看这张图:物种条目按FAO的ISSCAAP类群归类(如“鲱、沙丁鱼、鳀类”“鳕、无须鳕、黑线鳕类”)。堆积面积图显示每个类群的渔获量,_share图显示其占渔获量的百分比;最大的几个类群单独标出名称,其余合并为“其余类群”。
67区的结果:1950年,鲑、鳟、胡瓜鱼类(38%)和鲱、沙丁鱼、鳀类(35%)占了大部分渔获量,鳕、无须鳕、黑线鳕类只占9%。拖网渔业在二十年内改变了这一格局:鳕、无须鳕、黑线鳕类(狭鳕、太平洋鳕、北太平洋无须鳕)1970年达到53%,2024年为69%,鲆、鲽、鳎类居第二。
7.2 资源状态图:stock_status()
status <- stock_status(area67)🔎
怎么看这些图:每个“种群”是该渔区一个物种条目的渔获量序列。每一年,按种群渔获量相对于其自身峰值的比例划分状态(Kleisner等,2013):开发中(峰值之前,低于峰值的一半)、充分开发(高于峰值的一半)、过度开发(峰值之后,为峰值的10%–50%)、崩溃(峰值之后,低于10%)和恢复中(崩溃之后回升到10%–50%)。_stocks图统计种群数,_catch图按渔获量加权。
67区的结果:在91个种群中,按种群数计,2024年有44.0%处于崩溃状态,24.2%处于过度开发状态。按渔获量加权,情况就大不相同了:崩溃种群只占渔获量的1.1%,过度开发种群占19.7%,而仍高于其峰值一半的充分开发种群占75.0%。许多小种群远低于过去的峰值(其中一些,如鲱鱼,是因为渔业关闭或不再有市场需求),但提供大部分渔获量的大种群并非如此。
不能得出的结论。资源状态图只使用渔获量。渔获量下降可能是因为鱼变少了,也可能是因为捕捞减少、管理措施、市场或上报方式的变化(例如某个物种改为以“nei”上报)。用它来提出问题,而不要把它当作资源评估;smooth = TRUE按3年滑动平均划分状态,可以减小个别异常年份的影响。
7.3 各物种的峰值与趋势:peak_trend()
pt <- peak_trend(area67)
show_table(pt[, c("name", "peak_year", "pct_of_peak", "growth_pct_per_year", "trend")], n = 11)🔎
怎么看这张图:对每个主要物种给出:峰值渔获量出现的年份,最后一年的渔获量相当于峰值的百分比,最近十年的年均增长率,以及这一趋势的Mann-Kendall检验(P
<
0.05时为"up"(上升)或"down"(下降),否则为"none")。在67区,总渔获量和狭鳕都接近其1980年代末的峰值,而太平洋鲱和Pacific
ocean perch远低于各自的峰值。
7.4 同步突变:regime_shift()
shifts <- regime_shift(area67)🔎 怎么看这张图:每个主要物种的突变点按第4步的方法找出;柱状图统计每一年有多少个物种的平均渔获量在该年发生了变化。许多物种在同一年一起变化,说明存在共同的原因:海洋环境(生态系统转变,regime shift)、管理措施的改变,或上报方式的改变。
67区的结果:同时出现突变点最多的年份是1983年(3个物种)、1986年(3个物种)、1997年(3个物种)。北太平洋在1977年和1989年发生过著名的气候生态系统转变(Hare和Mantua,2000),但渔获量的突变点却集中在1980年代,即渔获从外国船队转到美国船队的那些年。在渔获数据中,船队和管理留下的痕迹往往比海洋更明显;单凭突变点无法判断是哪一种原因。
7.5 全部FAO渔区的比较:area_overview()
overview <- area_overview()🔎 怎么看这张图:每个FAO海洋渔区的渔获量随时间的变化,以及它们的峰值年份和近期趋势。它显示了67区在各渔区中的位置:一个中等规模的渔区,渔获量四十年来保持平稳,不同于那些达到峰值后下降的渔区。
8. 🔍 数据质量、多样性与船队
8.1 数据有多可靠?data_quality()
quality <- data_quality(area67)🔎
怎么看这些图:_taxon_share:鉴定到种、属、科,或只归到目及以上类群(如“Marine
fishes
nei”)的渔获量占比。_status_share:各国官方上报的渔获量占比,以及由FAO或该国估算的渔获量占比。
67区的结果:2024年,95.7%的渔获量鉴定到种,只有2.4%归到目或更高的类群,100.0%是各国上报的官方数据。数据这样好的渔区很少:上面的物种图描述了几乎全部渔获量,某个物种的变化不太可能是上报方式的变化。
8.2 多样性与集中度:diversity_concentration()
div <- diversity_concentration(area67)🔎 怎么看这张图:七个指标,每个指标一个分面:上报渔获量的物种条目数和国家数、物种的香农多样性指数、物种和国家的赫芬达尔-赫希曼指数(HHI),以及最大的五个物种和五个国家所占的份额。HHI从接近0(渔获量分散在许多物种或国家上)到10000(全部来自一个);高于2500为“高度集中”。
67区的结果:2024年,有95个物种条目和5个国家上报了渔获量。两个指数都高于2500:国家的HHI为9135,接近最大值,因为几乎全部渔获都由美国捕捞;物种的HHI为3295,原因是狭鳕。该渔区物种很多,但渔获量依赖于一个国家和一个物种。
8.3
谁在捕捞:country_group_summary()和coastal_distant()
income <- country_group_summary(area67)
fleets <- coastal_distant(area67)🔎
怎么看这些图:country_income:按世界银行收入分组统计的各国渔获量。coastal_distant:根据FAO渔区边界和国家轮廓,分为沿岸国(领土与该渔区接壤)和远洋捕捞国的渔获量。
67区的结果:几乎全部渔获量都由高收入国家捕捞;1960和1970年代“未分类”的部分是已不复存在的苏联。远洋捕捞国(日本、大韩民国、波兰等)1960年占渔获量的26%,1981年最高达到59%;1994年降到1%以下,此后一直如此。注意苏联和俄罗斯联邦算作沿岸国,因为俄罗斯在白令海的部分海岸与该渔区接壤:1990年以前外国船队所占的份额比远洋捕捞国的份额还要大。
9. 🔬 文献中的方法
这些分析采用已发表的方法;🔬 渔获骤变、渔业崩溃、同步性与远洋捕捞详细介绍了每一种方法。
9.1 渔获骤变:catch_shocks()
shocks_country <- catch_shocks(area67)
shocks_species <- catch_shocks(area67, by = "species", label = "area67_species")🔎
怎么看这些图:骤变是指某条序列的渔获量远低于其前几年所预示水平的年份(Cottrell等,2019)。柱状图给出每年发生骤变的序列所占的百分比;_series图显示各条序列及其骤变,_by_country和_by_continent图按分组统计骤变。
67区的结果:按国家划分序列(by = c("country", "area"),默认设置)时,67区只有8条序列,因此每次骤变都占很大的百分比,图很粗糙。按物种划分则有98条序列和35次骤变,对单个渔区来说信息更丰富。按问题选择序列:研究国家的食物供给用国家序列,研究生态用物种序列。
9.2 渔业崩溃:collapse_analysis()
set.seed(1) # 与随机序列的比较要用到随机数
collapses <- collapse_analysis(area67)
show_table(collapses$summary)🔎 怎么看这张图:一条序列(一个国家捕捞的一个物种)在达到最高值之后,如果渔获量连续四年低于最高值的十分之一,即为崩溃(Mullon等,2005)。柱状图按年份以及崩溃前下降的形态(平台型、平滑型或波动型)统计崩溃次数。函数还会在没有趋势的随机序列上重复同样的分析,因为单是随机的涨落就会产生一些“崩溃”(Wilberg和Miller,2007):只有超出这一零模型的部分才有意义。
67区的结果:50条序列中有10条崩溃(20%),而随机序列中为21%。这与单靠随机波动产生的比例相当,所以从整体上看,67区的崩溃并不能证明存在全渔区性的问题;应当逐条查看具体的序列。这正是零模型的意义所在:没有它,“20%的序列崩溃了”听起来会令人担忧。
9.3 同步性与组合效应:catch_synchrony()
sync <- catch_synchrony(area67)🔎
怎么看这些图:_cv:每个物种以及总渔获量(红色)的变异系数(年际波动)。_correlation:各物种之间如何共同变化。同步性指数φ在各物种相互补偿时为0,在同涨同落时为1(Loreau和de
Mazancourt,2008)。
67区的结果:φ = 0.30:总渔获量的波动(变异系数0.21)远小于各物种的波动(平均变异系数0.54):各物种的变异平均比它们的总和大161%。这种组合效应意味着一个物种减少时,其他物种会补上它的位置。在图中的主要物种里,Pacific ocean perch的波动远大于其他物种,这是它暴涨暴跌的痕迹。
9.4 中上层/底层比:pelagic_demersal()
pd <- pelagic_demersal(area67)
show_table(pd$decades[, c("period", "pd_mean", "pd_min", "pd_max")])🔎 怎么看这些图:P/D是小型中上层鱼的渔获量除以底层鱼和甲壳类的渔获量(Caddy,1993;de Leiva Moreno等,2000),用对数坐标表示;虚线为P/D = 1。在半封闭海域,P/D上升与营养盐增加有关;在开阔海域,它主要反映船队的捕捞对象。
67区的结果:P/D从1950年代的0.95降到2020年代的0.016。这并不说明海里的营养盐减少了:鲱鱼渔业萎缩,而底层鱼的拖网渔业扩大,所以这个比值讲述的是渔业的历史。
9.5 一个远洋船队:distant_water_profile()
japan_dw <- distant_water_profile("Japan")🔎 怎么看这些图:一个国家在与其相邻的FAO渔区(“邻近渔区”)和其他渔区(“远洋渔区”)的渔获量、远洋渔获所占的比例、每年作业的渔区数,以及它进入每个渔区的时间(Swartz等,2010)。
结果:日本唯一的邻近渔区是61区。它的远洋渔获比例在1970年升到最高的23.1%,当年在13个远洋FAO渔区作业;那一年仅67区就提供了139.1万t,占其远洋渔获的70%。1970年代末的200海里专属区关闭了其中最富饶的水域,2024年这一比例为7.6%。67区和日本展示了同一变化的两个方面。
10. 🌡️ 物种特征与温度
10.1 FishBase物种特征:fishbase_match()
traits <- fishbase_match(area67, version = "builtin")
show_table(traits[, c("species_en", "catch_pct", "match_type", "trophic_level", "temp_pref_mean")], n = 8)| species_en | catch_pct | match_type | trophic_level | temp_pref_mean |
|---|---|---|---|---|
| Alaska pollock(=Walleye poll.) | 43.51 | exact | 3.57 | 1.6 |
| North Pacific hake | 7.67 | exact | 4.32 | 8.6 |
| Pacific cod | 6.80 | exact | 3.78 | 2.9 |
| Pink(=Humpback) salmon | 5.25 | exact | 4.49 | 3.3 |
| Pacific herring | 4.61 | exact | 3.16 | 2.8 |
| Sockeye(=Red) salmon | 4.25 | exact | 3.54 | 4.2 |
| Yellowfin sole | 3.42 | exact | 3.49 | 3.4 |
| Pacific ocean perch | 2.66 | exact | 3.48 | 3.8 |
🔎
怎么看这张表:每个FAO物种条目按已发表的规则与FishBase或SeaLifeBase匹配(学名完全相同、同物异名、WoRMS、更高分类阶元的平均值);match_type说明用的是哪条规则,每一行都附有核对用的链接。version = "builtin"使用本包内置的表格,因此不联网也能运行。匹配结果只是初步结果:请用链接核对主要物种(见🐠 FishBase与SeaLifeBase物种特征)。
10.2 海表温度与渔获平均温度
sst67 <- fao_area_sst("Pacific, Northeast")
mtc <- mean_temperature_catch(area67, version = "builtin")
show_table(mtc$trend[, c("period_start", "period_end", "mtc_slope_per_decade", "trend", "sst_slope_per_decade", "cor_mtc_sst")])🔎 怎么看这张图:渔获平均温度(MTC,红线)是渔获物种偏好温度的平均值,按渔获量加权(Cheung等,2013);蓝线是该渔区的海表温度(SST),浅色带是它在渔区内的范围。下半部分是偏好温度已知的渔获量所占的比例;低于50%的年份淡化显示。MTC上升,说明暖水物种在渔获中所占的比例变大。
67区的结果:MTC保持在2.7至3.8 °C之间,远低于该渔区的SST(2024年为9.9 °C)。原因在于物种:主要渔获是生活在近底层的冷水性鱼类,如狭鳕(偏好温度1.6 °C)和太平洋鳕(2.9 °C)。MTC在1972年最低,当年狭鳕占渔获量的52%;在1967年最高,那时狭鳕渔业尚未壮大;美国西海岸的北太平洋无须鳕(8.6 °C)渔获量大的年份会把它拉高。MTC在1950–2024年间的趋势为“无趋势”(每十年0.009 °C),在1970–2024年间为“无趋势”(每十年0.056 °C),同期SST每十年升高0.21 °C。67区的MTC主要反映目标物种的组成,而不是海洋:要结合物种图来看。
11. 📉 主要物种的资源评估
cmsy_area()对渔获量最大的几个物种运行CMSY++仅渔获量资源评估(Froese等,2023)。它需要先安装一次JAGS程序(cmsy_setup(),见📉
CMSY++仅渔获量资源评估),运行需要几分钟;下面的图是事先用同样的代码生成的。
cmsy_setup() # 只需一次:安装JAGS和所需的R包
nep_cmsy <- cmsy_area("Pacific, Northeast", top = 10) # 十个主要物种
nep_cmsy$summary # B/Bmsy、F/Fmsy、MSY和资源状态🔎 怎么看Kobe图:每个圆圈是一个种群在最后一年的状态:横轴是生物量与产生最大可持续产量的生物量之比(B/Bmsy),纵轴是捕捞压力与产生最大可持续产量的捕捞压力之比(F/Fmsy);圆圈的大小表示渔获量。绿色(右下):健康;红色(左上):已过度捕捞且仍在过度捕捞;橙色和黄色:两者之一。B/Bmsy = 0.8处的虚线,按照FAO对仅渔获量结果的分级,把“最大可持续捕捞”与“过度捕捞”分开。
67区的结果:在评估的10个种群中,有6个在最后一年低于0.8 Bmsy;最低的是太平洋鲱(0.26)和Pacific ocean perch(0.37),也就是渔获量离其峰值最远的两个渔业。
| Stock | species | B_Bmsy | F_Fmsy | MSY | status |
|---|---|---|---|---|---|
| ALK_67 | 狭鳕 | 0.91 | 1.16 | 1,382,729 | 最大可持续捕捞 |
| NHA_67 | 北太平洋无须鳕 | 0.69 | 1.02 | 268,082 | 过度捕捞 |
| PCO_67 | 太平洋鳕 | 0.78 | 0.84 | 266,781 | 过度捕捞 |
| PIN_67 | 细鳞大麻哈鱼 | 0.61 | 1.14 | 163,342 | 过度捕捞 |
| HEP_67 | 太平洋鲱 | 0.26 | 0.99 | 197,699 | 过度捕捞 |
| SOC_67 | 红大麻哈鱼 | 0.85 | 1.02 | 134,004 | 最大可持续捕捞 |
| YES_67 | 糙鲽 | 1.24 | 0.55 | 152,488 | 最大可持续捕捞 |
| OPP_67 | Pacific ocean perch | 0.37 | 1.25 | 191,429 | 过度捕捞 |
| CHU_67 | 大麻哈鱼 | 0.71 | 1.21 | 59,817 | 过度捕捞 |
| HUM_67 | 单鳍多线鱼 | 0.85 | 1.33 | 59,732 | 最大可持续捕捞 |
🔎 怎么看这张图:每个种群一行:最后一年的B/Bmsy及其95%置信限(横条),颜色表示状态。横条越长,说明数据越难确定该种群的资源量。
🔎 怎么看这张图:逐年各状态类别的种群所占比例,可以看出该渔区的种群是否同步变化,例如是否在同一时期一起下降。
🔎 怎么看这张图:渔获量最大的种群(狭鳕)的“管理图”:左上为渔获量和MSY,右上为相对捕捞死亡率F/Fmsy,左下为相对资源量B/Bmsy及Bmsy和0.8 Bmsy两条线,右下为该种群在Kobe图中的变化路径;阴影为95%置信限。全部CMSY++图表见📉 CMSY++资源评估。
FAO捕捞统计没有丰度指数,所以这些都是仅渔获量评估,结果在很大程度上由先验决定:只具有指示意义,绝不能替代完整的资源评估。这一点在67区尤其重要:它的大多数主要种群每年都由美国和加拿大的渔业管理机构利用调查数据进行评估,渔获量受捕捞限额控制,因此一个停留在过去峰值以下的渔获量,可能被仅渔获量方法解读为资源量减少。使用这些结果之前,请与官方评估进行比较。CMSY++的代码来自其作者(https://github.com/SISTA16/cmsyPlusPlus);见📉 CMSY++仅渔获量资源评估中的免责说明。
12. 📝 Word、LaTeX和PDF格式的报告
fao_report()运行该渔区的各项分析,把整个评估写成一份报告:封面、摘要、数据与方法、附图表的结果、结论、参考文献和附录。这里生成一份中文Word报告,在默认章节之外加入渔获骤变和渔获平均温度:
report <- fao_report(67, lang = "zh", shocks = TRUE, mtc = TRUE)
report
#> FAO report: /tmp/Rtmp4BSWgT/faofishingreport_site_2191c2807ca5b/reports/FAO67_report_zh.docx
#> Sections: total, species, countries, groups, status, quality, diversity, fleets, shocks, mtc
#> $main_species main species of the last five years (10 rows)
#> $main_countries main fishing countries of the last five years (5 rows)
#> $mtc_species species of the mean temperature of the catch, with FishBase matches (200 rows)
#> $analyses results of the analyses: total, species, countries, groups, status, quality, diversity, fleets, shocks, mtcWord文件的各级标题:
doc <- officer::docx_summary(officer::read_docx(report$file[["docx"]]))
headings <- doc$text[doc$style_name %in% c("FAO Heading 1", "FAO Heading 2")]
headings
#> [1] "1 数据来源与分析方法" "1.1 数据来源"
#> [3] "1.2 分析方法" "2 结果与结论"
#> [5] "2.1 渔获量变化与阶段划分" "2.2 主要渔获种类"
#> [7] "2.3 主要捕捞国家(地区)" "2.4 渔获类群组成"
#> [9] "2.5 资源开发状态" "2.6 数据质量"
#> [11] "2.7 渔获多样性与集中度" "2.8 沿岸国与远洋捕捞"
#> [13] "2.9 渔获骤变" "2.10 渔获平均温度"
#> [15] "2.11 结论" "参考文献"
#> [17] "附件"12.1 生成PDF之前:安装一次TinyTeX
Word文件和LaTeX源文件(format = "latex")不需要其他软件。PDF由LaTeX源文件用XeLaTeX编译而成,XeLaTeX包含在LaTeX发行版中。最简单的是TinyTeX(Xie,2019),一个在R中就能安装的小型发行版,不需要管理员权限:
install.packages("tinytex")
tinytex::install_tinytex() # 只需一次,几分钟;装完后重启R
tinytex::is_tinytex() # 安装成功时返回TRUE第一次生成PDF会慢一些:TinyTeX会下载报告用到的LaTeX宏包(中文报告需要ctex和中文字体等),并保存下来供以后使用。如果TinyTeX是很早以前安装的,生成PDF时出现“TeX
Live is older than
remote”之类的信息,用tinytex::reinstall_tinytex()更新。其他情况(使用其他LaTeX发行版、编译修改过的.tex文件)见📝 一键生成评估报告。
12.2 同一份报告的LaTeX和PDF版本
同一份中文报告的LaTeX和PDF版本,并加入CMSY++(沿用第11步的结果,不必再次运行CMSY++):
fao_report(67, lang = "zh", format = c("docx", "latex", "pdf"), shocks = TRUE, mtc = TRUE,
cmsy = nep_cmsy)| 文件 | 内容 |
|---|---|
reports/FAO67_report_zh.docx |
Word报告,供编辑和补充 |
reports/FAO67_report_zh.tex和reports/FAO67_report_zh_figures/
|
LaTeX源文件及其图片 |
reports/FAO67_report_zh.pdf |
PDF(需要XeLaTeX,例如TinyTeX,见上文) |
报告是一份初稿:文字由模板填入分析结果生成。请通读全文,补充灰色的“【待补充:……】”备注(其他数据来源、讨论、其他参考文献),并对照上面的图表核对每一条结论。全部选项见📝 一键生成评估报告(Word、LaTeX、PDF)。
13. 🗂️ 文件保存在哪里,如何重新读取
每个函数都把结果写入工作目录:
| 文件夹 | 内容 | 由哪个函数写入 |
|---|---|---|
figures/png/ |
fishing_trend.png、fishing_percentage.png
|
fishing_area_data() |
figures/png/area/ |
area_species*.png、area_country*.png
|
fishing_area_species()、fishing_area_country()
|
figures/png/ |
area_country_map.png、<species>_country_map.png
|
fishing_area_country()和species_country()的地图 |
figures/png/species/ |
<species>_country_*.png |
species_country() |
figures/png/country/ |
<country>_species_*.png、<country>analysis_*.png、<country>yearly_area_production*.png
|
country_species()、country_analysis()
|
figures/png/summary/ |
<label>_<analysis>*.png,如Pacific__Northeast_stock_status_stocks.png
|
汇总分析和文献方法 |
figures/pptx/... |
同样的图表,保存为PowerPoint文件 |
pptx = TRUE时 |
tables/ |
CSV表格(UTF-8编码,可用Excel打开) | 设置table = TRUE的所有函数 |
reports/ |
报告,以及存放CMSY++结果的reports/cmsy/
|
fao_report() |
cmsy_areas/ |
各渔区的CMSY++运行结果、图表和表格 | cmsy_area() |
本教程保存的文件:
head(list.files("figures/png", recursive = TRUE), 20)
#> [1] "Alaska_pollock__Walleye_poll___country_map.png"
#> [2] "area_country_map.png"
#> [3] "area/area_country_wrap.png"
#> [4] "area/area_country.png"
#> [5] "area/area_species_wrap.png"
#> [6] "area/area_species.png"
#> [7] "country/United_States_of_America_species_pie_selected.png"
#> [8] "country/United_States_of_America_species_ranked_total.png"
#> [9] "country/United_States_of_America_species_ranked_wrap.png"
#> [10] "country/United_States_of_America_species_ranked.png"
#> [11] "country/United_States_of_Americaanalysis_area_total_production.png"
#> [12] "country/United_States_of_Americaanalysis_species_by_area.png"
#> [13] "country/United_States_of_Americaanalysis_species_pie_selected.png"
#> [14] "country/United_States_of_Americaanalysis_species_ranked_total.png"
#> [15] "country/United_States_of_Americaanalysis_species_ranked_wrap.png"
#> [16] "country/United_States_of_Americaanalysis_species_ranked.png"
#> [17] "country/United_States_of_Americafishing_area_map.png"
#> [18] "country/United_States_of_Americayearly_area_production_wrap.png"
#> [19] "country/United_States_of_Americayearly_area_production.png"
#> [20] "fishing_percentage.png"
length(list.files("figures/png", recursive = TRUE))
#> [1] 65
head(list.files("tables"), 10)
#> [1] "Alaska_pollock__Walleye_poll___country_ranked_table.csv"
#> [2] "area67_species_shocks_by_group.csv"
#> [3] "area67_species_shocks_by_year.csv"
#> [4] "area67_species_shocks_series.csv"
#> [5] "area67_species_shocks.csv"
#> [6] "country_coefs_data.csv"
#> [7] "country_ranked_table.csv"
#> [8] "Japan_distant_water_areas.csv"
#> [9] "Japan_distant_water.csv"
#> [10] "marine_areas_peak_trend_area.csv"重新读取结果。每个函数还会把结果返回给R(像上面那样赋值给变量)。要改天接着分析,可以把结果保存下来再读回,或者读取CSV表格:
saveRDS(list(NEP = NEP, status = status, mtc = mtc), "area67_results.rds")
results <- readRDS("area67_results.rds")
names(results)
#> [1] "NEP" "status" "mtc"
head(read.csv("tables/Pacific__Northeast_stock_status_stocks.csv"), 3)
#> species_name species_en first_year peak_year
#> 1 狭鳕 Alaska pollock(=Walleye poll.) 1950 1987
#> 2 Pacific ocean perch Pacific ocean perch 1950 1965
#> 3 北太平洋无须鳕 North Pacific hake 1960 1987
#> peak_tonnes last_year_tonnes pct_of_peak status_last_year
#> 1 1694473 1434351.99 84.64885 充分开发
#> 2 460647 63974.28 13.88792 恢复中
#> 3 372672 143562.00 38.52235 过度开发FAO发布新版本后,运行download_fao_data(),再运行同样的代码:每张图、每个表格和每个数字都会用新数据重新计算,fao_data_info()给出新的引用格式。
14. 🎨 按需定制
同样的分析可以改用英文或中英双语图表,也可以换一种风格或地图投影:
fao_settings(lang = "en") # 英文图表和名称
fao_settings(lang = "both") # 同一张图上显示中文和英文
fao_settings(theme = "minimal", palette = "npg", map_projection = "robinson", map_center = 180)
fao_settings(reset = TRUE) # 恢复默认设置全部设置见🎨 自定义图表与地图。
✅ 小结
| 步骤 | 函数 | 主要输出 |
|---|---|---|
| 数据 |
load_fao_data()、fao_data_info()
|
数据及需要引用的版本 |
| 渔区 | fishing_area_data() |
总渔获量、阶段、占全球的比例 |
| 物种、国家 |
fishing_area_species()、fishing_area_country()、species_country()、country_species()、country_analysis()
|
谁捕捞什么,以及各自的阶段 |
| 资源状态 |
species_group_composition()、stock_status()、peak_trend()、regime_shift()、area_overview()
|
类群结构、资源状态、趋势、突变 |
| 数据质量、船队 |
data_quality()、diversity_concentration()、country_group_summary()、coastal_distant()
|
数据有多可靠,渔获有多集中 |
| 文献方法 |
catch_shocks()、collapse_analysis()、catch_synchrony()、pelagic_demersal()、distant_water_profile()
|
渔获骤变、崩溃、同步性、P/D、远洋船队 |
| 温度 |
fishbase_match()、fao_area_sst()、mean_temperature_catch()
|
物种特征、SST、MTC |
| 资源评估 | cmsy_area() |
B/Bmsy、F/Fmsy、MSY |
| 报告 |
fao_report(),PDF需要TinyTeX |
Word、LaTeX、PDF |
📖 参考文献
- Bai, J. and Perron, P. (2003). Computation and analysis of multiple structural change models. Journal of Applied Econometrics, 18(1), 1–22. doi:10.1002/jae.659
- Caddy, J. F. (1993). Toward a comparative evaluation of human impacts on fishery ecosystems of enclosed and semi-enclosed seas. Reviews in Fisheries Science, 1(1), 57–95. doi:10.1080/10641269309388535
- Cheung, W. W. L., Watson, R. and Pauly, D. (2013). Signature of ocean warming in global fisheries catch. Nature, 497, 365–368. doi:10.1038/nature12156
- Cottrell, R. S., Nash, K. L., Halpern, B. S., Remenyi, T. A., Corney, S. P., Fleming, A., Fulton, E. A., Hornborg, S., Johne, A., Watson, R. A. and Blanchard, J. L. (2019). Food production shocks across land and sea. Nature Sustainability, 2, 130–137. doi:10.1038/s41893-018-0210-1
- de Leiva Moreno, J. I., Agostini, V. N., Caddy, J. F. and Carocci, F. (2000). Is the pelagic-demersal ratio from fishery landings a useful proxy for nutrient availability? ICES Journal of Marine Science, 57(4), 1091–1102. doi:10.1006/jmsc.2000.0705
- FAO. 2026. Global Capture Production 1950-2024, release 2026.1.0. In: Fisheries and Aquaculture [online]. Rome. [Cited 10 October 2026]. https://www.fao.org/fishery/collection/capture/en. Licence: CC BY 4.0.
- Fishery Conservation and Management Act of 1976. Public Law 94-265, 90 Stat. 331, United States (in force 1 March 1977; now the Magnuson-Stevens Fishery Conservation and Management Act).
- Froese, R., Winker, H., Coro, G., Palomares, M. L. D., Tsikliras, A. C., Dimarchopoulou, D., Touloumis, K., Demirel, N., Vianna, G. M. S., Scarcella, G., Schijns, R., Liang, C. and Pauly, D. (2023). New developments in the analysis of catch time series as the basis for fish stock assessments: the CMSY++ method. Acta Ichthyologica et Piscatoria, 53, 173–189. doi:10.3897/aiep.53.105910
- Hare, S. R. and Mantua, N. J. (2000). Empirical evidence for North Pacific regime shifts in 1977 and 1989. Progress in Oceanography, 47(2–4), 103–145. doi:10.1016/S0079-6611(00)00033-1
- Kleisner, K., Zeller, D., Froese, R. and Pauly, D. (2013). Using global catch data for inferences on the world’s marine fisheries. Fish and Fisheries, 14(3), 293–311. doi:10.1111/j.1467-2979.2012.00469.x
- Loreau, M. and de Mazancourt, C. (2008). Species synchrony and its drivers: neutral and nonneutral community dynamics in fluctuating environments. The American Naturalist, 172(2), E48–E66. doi:10.1086/589746
- Mullon, C., Fréon, P. and Cury, P. (2005). The dynamics of collapse in world fisheries. Fish and Fisheries, 6(2), 111–120. doi:10.1111/j.1467-2979.2005.00181.x
- Swartz, W., Sala, E., Tracey, S., Watson, R. and Pauly, D. (2010). The spatial expansion and ecological footprint of fisheries (1950 to present). PLoS ONE, 5(12), e15143. doi:10.1371/journal.pone.0015143
- Wilberg, M. J. and Miller, T. J. (2007). Comment on “Impacts of biodiversity loss on ocean ecosystem services”. Science, 316, 1285. doi:10.1126/science.1137946
- Xie, Y. (2019). TinyTeX: a lightweight, cross-platform, and easy-to-maintain LaTeX distribution based on TeX Live. TUGboat, 40(1), 30–32. https://tug.org/TUGboat/tb40-1/tb124xie-tinytex.pdf; R package tinytex: https://CRAN.R-project.org/package=tinytex
