什么时候可以将可重复的代码包含在出版物中?

Mar*_*box 13 r

鉴于对可重复科学的压力,我想知道我最近的工作是否保证在出版物中包含示例代码.我使用的数据集非常大,因此发布这些必要性是没有意义的 - 但是,我在R中应用的统计方法通常不为我的观众所知(尽管我认为它们应该是).

我在我的分析中使用经验正交函数分析(EOF)和广义加性模型(GAM).特别是GAM广泛用于生态学研究,但在物理科学中却不那么重要 - 我的工作跨越两个学科.

我肯定会参考我使用的R包,并且审阅者/读者自己寻找这些引用(和包含的示例)并不是很困难.所以,我的问题是,什么情况最适合在出版物中包含可重现的代码?

Ari*_*man 14

代码是您实际执行的最准确的表示.因此,在我看来,您应该始终致力于在文章旁边发布代码.

然而,编辑对此的抵制非常强烈.担心的是,如果审阅者可以访问代码,那么如果稍后发现实质性编码错误,则该期刊看起来非常糟糕.考虑到莱维特的论文等,这不是假设的恐惧.

Knuth对文学编程有一些强烈的看法,你应该能够引用它作为理由.如果您无法说服期刊接受您的代码作为出版物的一个组成部分,请考虑将其发布在您的个人网站上(例如Raj Chetty为其许多论文采用的方法)或将其作为R包发布.

最后,这是我给编程学生写的一封信:

考虑发布您的代码.这样做将作为一种承诺设备,鼓励良好的习惯 - 使您自己的工作更轻松的习惯.发布代码还可以让其他人更轻松地扩展您的分析,这可能会导致更多的工作引用.释放您的代码也是很好的学术实践:这是您分析的最真实证明.向全世界提供您的程序展示了您即将获得的美妙编码技能.


Rei*_*son 10

科学的基本原则是可重复性.因此,答案是"包含"对基于数据分析的每篇论文/出版物进行分析所需的代码.

我说"包含"是因为你不需要将R代码直接放入论文中.许多(如果不是大多数)期刊允许提供补充材料.或者,将您的脚本提供给众多科学数据存档站点之一(例如]图片共享器),然后(这里就是杀手!)使用FIGhare为您存放的脚本提供的DOI引用您自己的脚本.如果你也可以发布数据,那就更好了; 无花果共享并不太关心大数据集.

以上内容适用于使用其他软件包的代码,R脚本执行加载和格式化数据,调用其他软件包中的函数,然后绘制或显示输出/结果.如果您已经开发了新的R代码来实现特定的方法,那么我会说将代码打包为R包并将其提交给CRAN或r-forge或类似的东西.

根据您的描述,前者(将分析脚本存放在回购中)将是最合适的.


Pau*_*tra 5

我们最近在我们的研究所讨论了可重复的研究.激励来自Nature社论(http://arstechnica.com/science/2012/02/science-code-should-be-open-source-according-to-editorial/),该论文认为您的所有代码都应该发布.我完全赞同这一点.即使您的数据集非常大,发布用于创建结果的R代码也可以清楚地表明您所做的事情.通常,纸张的方法不包含足够的细节来重现结果,在这种情况下代码是非常有用的.