近年来,越来越多的证据表明,科研成果的复用性出现了危机。对心理学和癌症生物学领域的论文的评论发现,只有40%和10%的结果可以被复制。近年来,越来越多的证据表明,科研成果的复用性出现了危机。对心理学和癌症生物学领域的论文的评论发现,只有40%和10%的结果可以被复制。
原文作者:andrew tait,本文由36大数据(dashuju36)翻译,译者echo。 36大数据专稿,本文由36大数据(dashuju36)翻译,不授权任何网站使用,除了36大数据网站和微信公众号,所有其他的转载均为侵权!
《自然》杂志2016年发表了一项对研究人员的调查结果:
52%的研究人员认为存在显著的再现性危机
70%的科学家曾尝试过但未能重现另一位科学家的实验
2013年,一组研究人员发表了一篇论文,描述了可再生计算研究的十项规则。如果遵循这些规则,将会带来更多可复制的结果。
所有数据科学都是研究。仅仅因为它没有发表在学术论文中,并不能改变我们试图从庞杂的数据中获取见解的事实。因此,论文中的十条规则对任何从事内部分析的数据科学家来说,都是值得关注的。
规则1 对于每一个结果,记录它是如何产生的
重要的是要知道你的结果的出处。知道你是如何从原始数据到结论的,你可以这样做:
维护结果
如果发现错误,就更新结果
在数据更新时重现结
提交你的审计结果
如果您使用一种编程语言(r、python、 julia, f#,等等)来编写您的分析脚本,只要您避免使用任何手工步骤,那么所采取的路径应该是清晰的。使用“点和点击”工具(例如excel)会使得跟踪您的步骤变得更加困难,因为您需要描述一组手动活动,这对文档和重新编写都很困难。
规则2 避免手动操作数据步骤
在编辑器中打开数据文件可能会有一种手动清理一些格式错误或移除异常值的诱惑。另外,现代操作系统使得剪切和粘贴应用程序变得很容易。但是,应该抵制缩短脚本编制的诱惑。手动数据操作是隐藏的操作。
规则3 存档所有外部程序的精确版本
理想情况下,您可以使用所有用于运行脚本的软件建立一个虚拟机。这允许您快照分析生态系统,使结果的复制变得微不足道。
然而,这并不总是现实的。例如,如果您正在使用云服务,或者在大数据集群上运行您的分析,那么很难将您的整个环境进行归档。此外,使用商业工具可能会很难与其他人共享这样的环境。
至少,您需要记录包括操作系统在内的所有软件的版本。对软件的微小更改可能会影响结果。
规则4 版本控制所有的自定义脚本
版本控制系统,如git,应该用来跟踪脚本的版本。您应该在生成的任何结果中标记(快照)多个脚本并引用该标记。如果您后面决定更改您的脚本,就像您肯定会做的那样,那么您就可以回到过去,并获得用于生成给定结果的确切脚本。
规则5 记录所有中间结果,用尽可能的标准格式
如果您坚持规则1,那么应该可以重新生成原始数据的任何结果。然而,虽然这在理论上是可能的,但实际上可能是有限的。问题可能包括:
缺乏从零开始运行结果的资源(例如,如果使用了大量集群的计算资源)
如果使用了商业工具,则缺少一些工具的许可证
使用某些工具的技术能力不足
在这些情况下,从原始数据下游几步的派生数据集开始是很有用的。保留这些中间数据集(例如,以csv格式),提供了更多的选项来构建分析,并且可以更容易地识别出问题的出在哪里,因为不需要重新做所有的东西。
规则6 对于包含随机算法的分析,需要注意随机种子的设置
数据科学家常常做不到的一件事是为分析设置随机数的种子。这就不可能准确地重建机器学习的研究。许多机器学习算法包括一个随机元素,虽然健壮的结果可能在统计上是可重复的,没有什么可以与匹配其他人生的确切数字的温暖辉光相比。
如果使用脚本和源代码控制,可以在脚本中设置种子值。
译者补充:随机种子是一种以随机数作为对象的以真随机数(种子)为初始条件的随机数,计算机专业术语。一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数。
规则7 总是将原始数据存储在幕后
如果您使用一个脚本/编程语言,您的图表通常会自动生成。但是,如果您正在使用excel这样的工具来绘制图表,请确保您保存了底层数据。这使得图表能够被复制,但也允许对其背后的数据进行更详细的审查。
规则8 生成层次分析输出,允许对增加细节的层进行检查
作为数据科学家,我们的工作是以某种形式对数据进行汇总。这就是从数据中得出的见解。
然而,总结也是滥用数据的一种简单方法,因此,感兴趣的各方可以将汇总信息分解为单个数据点。对于每个汇总结果,链接到用于计算摘要的数据。
规则9 将文本语句连接到底层结果
最后,数据分析的结果以文字形式呈现。语言是不精确的。结论与分析之间的联系有时很难确定。由于报告通常是研究中最具影响力的部分,因此,它可以与结果联系起来,并且出于规则1,所有的方式回到原始数据。
这可以通过在引用文件或包含导致报告中观察到的特定数据的url的文本中添加脚注来实现。如果你不能建立这个链接,你可能还没有充分地记录所有的步骤。
规则10 提供对脚本、运行和结果的公共访问
在商业环境中,提供公共访问所有数据可能是不合适的。但是,在组织中提供对其他人的访问是有意义的。基于云计算的源代码控制系统,如bitbucket和github,允许创建可以由任何授权的同事访问的私有存储库。
许多眼睛改善了分析的质量,所以你能分享的越多,你的分析就越好。
end.