研究の長期的な再現性を高める方法(特にRとSweaveを使用)


31

コンテキスト:ジェイクが書いた 再現可能な研究に関する以前の質問への回答

JASAアーカイブの作成時に発見した問題の1つは、CRANパッケージのバージョンとデフォルトが変更されたことです。そのため、そのアーカイブには、使用したパッケージのバージョンも含まれています。ユーザーがパッケージを変更すると、ビネットベースのシステムはおそらく破損します(大要であるパッケージ内に追加のパッケージを含める方法がわからない)。

最後に、R自体が変更された場合の対処方法について考えます。たとえば、仮想マシンが巨大にならないように、論文に使用される計算環境全体を再現する仮想マシンを作成する方法はありますか?

質問:

  • 再現可能なデータ分析が将来(たとえば、発行後5年、10年、または20年)再現可能であることを保証するための優れた戦略は何ですか?
  • 具体的には、SweaveとRを使用するときに継続的な再現性を最大化するための優れた戦略は何ですか?

これは、再現性のあるデータ分析プロジェクトを、わずかに異なるデフォルト、パッケージなどを使用して他の誰かのマシンで実行することを保証する問題に関連しているようです。


理論的な動作を検証するために、RUnitを使用した単体テストを検討していますか?

回答:


18

あるレベルでは、これは不可能になります。有名なPentium浮動小数点バグの場合を考えてみましょう。モデル、データ、パラメーター、パッケージ、すべての外部パッケージ、ホストシステムまたは言語(Rなど)、OSなどを保存する必要があるだけではありません。 。さらに、潜在的にすべてが実行されたハードウェア。ここで、一部の結果はシミュレーションベースであり、特定のマシンのクラスターを必要とする可能性があることを考慮してください...

それは実用的であるためにほんの少しです。

そうは言っても、リビジョン管理でコード(およびデータ)をバージョン管理し、関連するすべてのソフトウェアのバージョンを保存し、単一のトップレベルスクリプトを実行して結果を再現できるようにするより実用的なソリューションは、十分な」妥協。

あなたのマイレージは異なる場合があります。これは、分野や業界によっても異なります。しかし、誰もがフールプルーフシステムの不可能性について見ていました。あなたは単により賢いフールを作成するだけです。


1
(+1)私はあなただけに同意できます。具体的には、Rについては、(a)パッケージの更新後も一部の計算の再現性を維持すること(最近私に起こります)、および(b)依存関係との競合がいつか発生しないこと(たとえば、用lme4)。
chl

13

再現性の最初のステップは、将来の研究者が読みやすい形式にすることです。ここでは、フラットファイルを選択するのが適切です(Fairbairn in press)。

コードを長期にわたって有用にするために、おそらく最善の方法は、コードの機能と動作の両方を説明する明確なドキュメントを作成することです。これにより、ツールチェーンがなくなった場合に、将来のシステムで分析を再実装できます。


1
最初に合意された、堅実なデータとメタデータ。
mindless.panda

11

1つの戦略には、cacherパッケージの使用が含まれます。

  • Peng RD、Eckel SP(2009)。「キャッシュ計算を使用した分散型の再現可能な研究」、IEEE Computing in Science and Engineering、11(1)、28–34。(PDFオンライン
  • Roger PengのWebサイトの記事も参照してください。

さらなる議論と例は本で見つけることができます:

ただし、継続的な再現性を確保する上での有効性を直接体験することはできません。


7

仮想マシンのルートに興味があるなら、Rの特定のバージョンとパッケージがインストールされた小さなLinuxディストリビューションで実現できると思います。スクリプトとともにデータが含まれ、すべてを仮想ボックスファイルにパッケージ化します。

これは、前述のIntel CPUバグなどのハードウェアの問題を回避しません。


4

すでに存在する優れた答えに加えて、2つのことをお勧めします。

  • コードのキーポイントで、現在のデータをフラットファイルとしてダンプし、適切な名前を付けてコメントで説明します。これにより、1つのパッケージが異なる結果をもたらし、異なる結果を生み出したかどうかを強調します。これらのデータファイル、および元の入力と結果の出力は、「再現可能な研究セット」に含める必要があります

  • たとえばTestThatのようなものを使用して、コード内に関係するパッケージのテストを含めます。難しい部分は、分析に関連するパッケージの動作の変更を強調する可能性が高い、小規模で再現可能なテストを行うことです。これは少なくとも、環境に何らかの違いがあることを他の人に強調するでしょう。


1

良い提案、私は今検討することがたくさんあります。

覚えておいて、非常に重要な考慮事項の1つは、最初に作業が「正しい」ことを確認することです。これは、Sweaveのようなツールが果たす役割であり、あなたがしたこととあなたが言ったことが同じことである可能性を高めることによってです。


1
スマトラプロジェクトも参考になります:neuroensemble.org/trac/sumatra/wiki。コマンドラインインターフェイスを使用して、コードを実行したり、Rで実行したりすることができます。Python APIもあります。再現性のある研究のためのR中心のツールについて議論しているRブロガーに関する素晴らしいブログ投稿があり、Sumatraの使用についても言及しています。 r-bloggers.com/managing-a-statistical-analysis-project- –-guidelines-and-best-practices /
ジョシュヘマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.