Preface

注:本书由 Chapman & Hall/CRC 在其 R 系列中出版。本书可从 Routledge 以及亚马逊等销售商处购买。

这本新书《使用 R 进行渔业建模和定量方法》由我早期的《渔业建模和定量方法》(Haddon 2011)演变而来。新书旨在介绍一系列在进行渔业资源评估时有用的分析方法,但与此同时,其中许多方法也更普遍地适用于生态学。通过集中介绍一般分析方法,同时保留早先对渔业建模的一些关注,其目的是使新书适用于更广泛的生态学读者,希望对他们有用,而不仅仅是渔业科学家。与原书一样,新书仍将文字与实例相结合。然而,时过境迁,用于此类分析的软件工具(如 R(R 核心团队,2019 ))也在不断发展,许多自然科学专业学生的背景知识也在不断发展。考虑到这一点,并且在收到许多关于提供早期示例框的 R 版本的电子邮件请求后,我想到编写一本新书,重点介绍许多分析技术,并使用 R 进行这些分析,这可能是一个有益的贡献。

早先的书应该是一本入门读物,然而,正如第二版序言(Haddon 2011)中所说:“……在涵盖一些更重要但本质上更复杂的方法时,要使这本书成为一本大多数人都能读懂的入门读物是一项挑战”。当时的挑战来自于尝试使用 Microsoft Excel 来实现这些高级方法,这需要工作表映射、宏和相关策略(希望大多数人会同意,在 Excel 中实现马尔可夫链蒙特卡洛分析并不是一项真正明智的工作)。本书仍然是一本入门书籍,目的是说明这些方法是如何工作的,并提供一个可以进行实验和学习的框架。希望这本书能为读者提供一个基础,在此基础上转向更多基于生产的方法。

我试图在书中加入更多的实际细节和开展工作所需的示例代码。为了补充和简化本书中的代码部分,我还开发了一个 R 软件包 MQMF,可从 https://www.github.com/haddonm/MQMF 获取,并发布到 CRAN,https://cran.r-project.org/ 。书中的示例需要用到这个软件包。示例的 R 代码块全部在六个函数的帮助部分提供,分别称为 chapter2、chapter3、……、chapter7。每个示例都按照每章的顺序排列,并附有章节标题,以方便查找感兴趣的特定示例。在 RStudio 中,我们只需选择所需的代码部分,然后像往常一样按 {ctrl}{enter}。否则,选择代码并将其粘贴到 R 控制台或编辑器中,即可根据自己的意愿调整每个脚本。

我并不自诩为计算机程序员,而是一名科学程序员。这就意味着我写的代码可能没有那么高效,也没有那么好的结构。不过,我希望它的意图是明确的,而且相对简单易懂。R 代码有一个非常好的方面,那就是它通常是开源的,所以你可以随意修改或改进这里的代码。

与所有入门书籍一样,需要考虑的问题是包括哪些内容以及在何处停止。本书所包含的方法调查范围相对较广,对每种方法的处理深度也不尽相同。我的主要希望是,读者能在本书中找到他们认为对自己的工作和对分析的理解有用的东西。

Malcolm Haddon

Hobart, January 2020

致谢

我要特别感谢位于霍巴特的澳大利亚联邦科学与工业研究组织(CSIRO)海洋与大气部,感谢他们给了我成为该组织荣誉研究员的机会。能够继续使用图书馆和办公室为本书的写作提供了极大的便利。除了实用性之外,能在这样一个活跃的工作环境中与这么多优秀的人共事也很有价值,我在从事渔业科学工作期间曾与他们共事和合作。此外,我还要感谢塔斯马尼亚大学任命我为海洋与南极研究所的兼职教授。即使在 2008 年底离开塔斯马尼亚大学后,我仍继续与那里的许多优秀员工合作,特别是克雷格-蒙迪(Craig Mundy)博士,我还要感谢他允许我在 MQMF R 软件包中的许多数据集中使用鲍鱼研究项目的各种数据。

我还要感谢许多通过电子邮件与我联系的人,他们提出了许多有趣的问题。他们帮助我找出了我没有说清楚的地方。

最后,我要感谢我在Chapman & Hall/CRC的编辑罗布-卡尔弗(Rob Calver),他安排我在github页面或 http://www.bookdown.org 上免费发布本书的在线git-book版本。在我看来,bookdown 的最大优势之一就是它能为多种出版选择提供便利。开放源码社区(R、CRAN 和 RStudio 的部分内容是其中的最佳范例)是一项了不起的成就,我们都应该为它喝彩,并为相关人员鼓掌。

作品细节

本书是在RStudio(RStudio,2019)中使用Bookdown(Xie 2016)编写的,我使用了Chapman & Hall/CRC LaTeX class (kranz.cls),该类经谢益辉修改,并由我自己对页面分数进行了一些非常小的试错编辑。代码块使用 Consolas 字体书写,将显示在略微灰色的方框中。软件包名称将以粗体显示(MQMF),函数名称(function())将以圆括号结束,如果它们只是在文本中被引用。括号的作用是将它们与其他code 文本区分开来,后者通常是指变量、参数和函数参数。与数字有关的代码块一般指颜色,但本书是黑白印刷,因此也使用不同的图案或特定的顺序来区分不同的行。在其他地方,一般会使用颜色或图案,但不会同时使用两种。我在代码块和图例中保留了对颜色的引用,这样代码就保持了一般性,但希望不会造成混淆。

代码块的控制台输出一般会预置 # 号,而代码块中的整行注释则总是缩进一个空格。无论代码块试图使用什么字体(font=7 意味着衬线字体),用于定义 pdfengine 如何渲染数字的 LaTeX 类都设置为使用无衬线字体。因此,如果单独使用代码块,它们将以不同的方式渲染图表。