如何提高研究的长期可重复性(尤其是使用 R 和 Sweave)

机器算法验证 r 可重复研究 项目管理
2022-01-22 01:53:14

背景: 在回答关于可重复研究的较早问题时,杰克写道

我们在创建 JASA 存档时发现的一个问题是 CRAN 包的版本和默认值发生了变化。因此,在该存档中,我们还包括我们使用的软件包的版本。当人们更改他们的包时,基于小插图的系统可能会中断(不确定如何在 Compendium 的包中包含额外的包)。

最后,我想知道当 R 本身发生变化时该怎么办。有没有办法生产,比如说,一个虚拟机,它可以复制用于论文的整个计算环境,使得虚拟机不是很大?

问题:

  • 有什么好的策略可以确保可重现的数据分析在未来(例如,出版后的五年、十年或二十年)是可重现的?
  • 具体来说,在使用 Sweave 和 R 时,最大化持续再现性的好策略是什么?

这似乎与确保可重现的数据分析项目将在其他人的机器上运行的问题有关,但默认值、包等略有不同。

4个回答

在某种程度上,这变得不可能。考虑著名的 Pentium 浮点错误的情况:您不仅需要保存模型、数据、参数、包、所有外部包、主机系统或语言(例如 R)以及操作系统 .. . 加上可能运行它的硬件。现在考虑一些结果可能是基于模拟的,并且需要特定的机器集群......

这只是为了实用。

话虽如此,我认为更实用的解决方案是在版本控制中对您的代码(可能还有您的数据)进行版本控制、存储所有相关软件的版本并通过运行单个顶级脚本来重现结果可能是“足够好”的妥协。

你的旅费可能会改变。这也因学科或行业而异。但请记住关于万无一失系统不可能的老观点:你只是创造了更聪明的傻瓜。

可重复性的第一步是确保数据采用便于未来研究人员阅读的格式。平面文件是这里的明确选择(Fairbairn in press)。

为了使代码长期有用,也许最好的办法是编写清晰的文档来解释代码的作用以及它是如何工作的,这样如果你的工具链消失了,你的分析可以在未来的某个系统中重新实现.

一种策略涉及使用cacher包。

进一步的讨论和示例可以在书中找到:

但是,我没有亲身体验过它在确保持续可重复性方面的有效性。

如果您对虚拟机路线感兴趣,我认为可以通过安装了特定版本的 R 和软件包的小型 linux 发行版来实现。数据与脚本一起包含在内,并将整个内容打包在一个虚拟盒子文件中。

这并不能解决前面提到的硬件问题,例如 Intel CPU 错误。