2012-06-21 39 views
13

考慮到對可重複科學的壓力,我想知道我最近的工作是否需要在出版物中包含示例代碼。我使用的數據集非常大,因此發佈這些必要性是沒有意義的 - 但是,我在R中應用的統計方法通常並不爲我的聽衆所知(儘管我認爲它們應該是這樣)。關於何時應將可複製的代碼納入出版物,是否有任何指導原則?

我在我的分析中使用經驗正交函數分析(EOF)和廣義相加模型(GAM)。特別是,GAM在生態學研究中被廣泛使用,但在物理科學中則少見 - 我的作品跨越兩個學科。

我明確提到我使用的R包,審閱者/讀者本身並不會很難找到這些引用(包括示例)。所以,我的問題是,在出版物中包含可複製代碼的最適合哪種情況?

+1

這可能更多關於[Academia site](http://academia.stackexchange.com/)的主題。 –

+0

也許,但我會感謝編程社區可以提供的任何經驗。 –

+0

我認爲這裏的共識非常明確。還有更多的期刊接受附錄,其中包括分析中使用的代碼,並且如下面的幾條評論所示,上傳數據集的選項等。 –

回答

14

代碼是您實際所做的最精確的代表。因此,在我看來,你應該總是旨在發佈代碼旁邊的文章。

但是,編輯對此的抵制非常強烈。擔心的是,如果評論者能夠訪問代碼,那麼如果稍後發現實質性編碼錯誤,則該期刊看起來相當糟糕。考慮到Levitt paper等,這不是假想的恐懼。

Knuth對文學編程有一些強烈的看法,您應該可以將其作爲理由。如果您無法說服期刊接受您的代碼作爲出版物的一個組成部分,請考慮將其發佈到您的個人網站上(例如Raj Chetty爲他的許多論文采取的方法)或將其作爲R包發佈。

最後,這裏有一張紙條,我寫我的編程的學生:

考慮發佈你的代碼。這樣做將作爲一個承諾 設備,這將鼓勵良好的習慣 - 使自己的 工作更容易的習慣。發佈代碼還可以讓其他人更容易地擴展您的分析,這可能會導致您的工作引用更多。 發佈您的代碼也是一個很好的學術實踐:它是您的分析最真實的證明。並提供您的程序到世界 炫耀美好的編碼技能,你將獲得 。

+0

說得好 - 不確定我的編碼技能是否都很漂亮;-) –

+0

哈哈。這是在這個課程的30pp手冊的背景下,所以它更多的是關於我的美麗教學技能,而不是他們的編碼技能:-)。 '< - 虛假不謙虛' –

10

科學的基本原則是可重複性。所以答案就是將所需的代碼「包含」到基於數據分析的每篇論文/出版物進行分析。

我說「包括」,因爲您不需要直接將R代碼放入紙張。許多如果不是大多數期刊允許補充材料是一種選擇。或者,將您的腳本提供給衆多科學數據存檔站點之一(如Fighare),然後(並且這裏是殺手!)引用您自己的腳本,使用Fighare提供給您的存檔腳本的DOI。如果你可以發佈數據,那麼一切都會好起來; Fighare並不太關心大數據集。

以上內容適用於您使用其他軟件包的代碼,您的R腳本可以執行加載和格式化數據,調用其他軟件包的功能,然後繪製或顯示輸出/結果等內容。如果你已經開發了新的R代碼來實現一個特定的方法,那麼我會說,將代碼打包爲一個R包,並將其提交給CRAN或r-forge或類似的東西。

從您的描述中,前者(將分析腳本存入回購)將是最合適的。

+0

太棒了 - 我沒有聽說過Fighare。 「無限的公共空間」? –

+0

或者只是把它放在一個公共的VCS存儲庫上:BitBucket甚至爲學者提供了無限制的帳戶,包括私人帳戶,所以真的沒有任何藉口。然後,您可以鏈接到寫入紙張時使用的最後一個標記/提交,同時繼續更新代碼(如果它可重用)。 – naught101

5

我們最近在我們的研究所就可重複研究進行了討論。激勵來自自然社論(http://arstechnica.com/science/2012/02/science-code-should-be-open-source-according-to-itorial /),它認爲所有的代碼應該被髮布。我完全同意這一點。即使您的數據集非常大,發佈您用來創建結果的R代碼也可以讓您清楚所做的事情。通常情況下,一篇論文的方法不包含足夠的細節來重現結果,在這種情況下代碼是相當有幫助的。

相關問題