鉴于对可重复科学的压力,我想知道我最近的工作是否保证在出版物中包含示例代码。我使用的数据集非常大,因此发布这些必要性是没有意义的 - 但是,我在R中应用的统计方法通常不为我的观众所知(尽管我认为它们应该是)。
我在我的分析中使用经验正交函数分析(EOF)和广义加性模型(GAM)。特别是GAM广泛用于生态学研究,但在物理科学中却不那么重要 - 我的工作跨越两个学科。
我肯定会参考我使用的R包,并且审阅者/读者自己寻找这些引用(和包含的示例)并不困难。所以,我的问题是,什么情况最适合在出版物中包含可复制的代码?
答案 0 :(得分:14)
代码是您实际所做事情的最准确表示。因此,在我看来,您总是的目标是在您的文章旁边发布代码。
然而,编辑对此的抵制非常强烈。担心的是,如果审阅者可以访问代码,那么如果稍后发现实质性编码错误,则该期刊看起来非常糟糕。鉴于Levitt paper等等,这不是假设的恐惧。
Knuth对文学编程有一些强烈的看法,你应该能够引用它作为理由。如果您无法说服期刊接受您的代码作为出版物的一个组成部分,请考虑将其发布在您的个人网站上(例如Raj Chetty对他的许多论文采取的方法)或将其作为R发布封装
最后,这是我给编程学生写的一封信:
考虑发布您的代码。这样做将充当承诺 鼓励良好习惯的设备 - 养成自己的习惯 工作更轻松。发布代码也使其他人更容易 扩展您的分析,这可能会导致更多的工作引用。 释放你的代码也是很好的学术实践:它是 最真实的分析证明。并提供您的计划 世界展示了你即将到来的美丽编码技巧 获得。
答案 1 :(得分:10)
科学的基本原则是可重复性。因此,答案是“包含”对基于数据分析的每篇论文/出版物进行分析所需的代码。
我说“包含”因为您不需要将R代码直接放入论文中。许多(如果不是大多数)期刊允许提供补充材料。或者,将您的脚本提供给众多科学数据存档站点之一(例如]图片共享器),然后(这里就是杀手!)使用FIGhare为您存放的脚本提供的DOI引用您自己的脚本。如果你也可以发布数据,那就更好了;无花果共享并不太关心大数据集。
以上内容适用于使用其他软件包的代码,R脚本执行加载和格式化数据,调用其他软件包中的函数,然后绘制或显示输出/结果。如果您已经开发了新的R代码来实现特定的方法,那么我会说将代码打包为R包并将其提交给CRAN或r-forge或类似的东西。
根据您的描述,前者(将分析脚本存放在回购中)将是最合适的。
答案 2 :(得分:5)
我们最近在我们的研究所讨论了可重复的研究。奖励来自Nature社论(http://arstechnica.com/science/2012/02/science-code-should-be-open-source-according-to-editorial/),该论文认为您的所有代码都应该发布。我完全赞同这一点。即使您的数据集非常大,发布用于创建结果的R代码也可以清楚地表明您所做的事情。通常,论文的方法不包含足够的细节来重现结果,在这种情况下代码是非常有用的。