メインコンテンツへスキップ
ActivePapers データを再計算可能なドキュメントとして保存。公開されたあらゆる結果の再実行、検証、および保存が可能になります。

当サイトの一部にはアフィリエイトリンクが含まれています。これらのリンク経由でご購入いただいた場合、追加費用なしで弊社に手数料が支払われることがありますが、推奨内容に影響はありません。詳細はアフィリエイト開示ページをご確認ください。 アフィリエイト開示.

研究には再現性がない?実践的なガイド

再現性のない研究は、同じデータ、コード、記述された手法を与えられた独立したグループが同じ結果を得ることができない場合に発生します。通常、ウェットラボ技術ではなくソフトウェアが失敗点となるため、計算科学者が直接対処できる問題は分野を超えて文書化されています。 2019 National Academies レポート 科学における再現性と複製可能性 などの標準は実用的な語彙を定義しており、実際の修正はバージョン管理、ピン留めされた依存関係、コンテナ化、ビルドの自動化など具体的です。

  • 再現性と複製可能性は区別されます。再現性とは、同じ データに対して 同じ 分析を再実行し、同じ数値を取得することを意味します。複製可能性とは、新しい研究が一貫した結論に達することを意味します。
  • 再現性のないほとんどの計算研究では、コードの欠落または変異、ピン留めされていないソフトウェア環境、文書化されていないデータの出所、および隠された手動ステップの 4 つの原因が追跡されます。
  • 再現可能なビルドは、ソース入力から出力への決定論的な変換です。ソフトウェア パッケージングにおける再現可能なビルドと同じ考え方が、分析パイプラインに適用されます。
  • 実行可能な最小限の修正は、ロックファイル、単一のエントリ ポイント (make、Snakemake、またはスクリプト)、および見知らぬ人が質問することなく従うことができる README を備えたリポジトリです。
  • コンテナー (Docker、Apptainer/Singularity、Conda 環境) は環境ドリフトを解決します。文書化されていないデータ クリーニングや非決定的アルゴリズムは解決しません。
  • 再現性はスペクトルであり、二値的なものではありません。完璧ではなく、「有能な第三者があなたの図を再生成できる」ことを目指してください。

「再現可能」とは実際に何を意味するのか (そして意味しないのか)

再現可能な研究とは、独立した研究者が元のデータとコードから結果を再生成できるように研究をパッケージ化する実践です。この言葉には、日常の用法とは異なる特定の技術的な意味が含まれています。辞書的な意味では、「再現可能」は単に再度生成できることを意味しますが、計算科学では、決定論、来歴、および再生がオリジナルの作成者が保持する暗黙知に依存しない十分な文書化を意味します。

研究における再現性は、よく混同される関連用語に分類されます。 2019 年の全米アカデミーのコンセンサス研究では、計算の再現性 (同じデータ、同じコード、同じ結果) と複製可能性 (新しいデータ、一貫した結果) が区別されています。統計学者は「反復可能性 (repeatability)」という概念を加えます。これは、同じ分析者が同じ結果を 2 回得ることを意味します。研究は再現可能である場合もありますが、複製可能ではありません。コードは、新しい実験で確認できなかった結果を忠実に再生成します。この区別は、失敗を診断するときに重要です。

「reproducable」という異綴りは、検索クエリや非公式の文書で頻繁に使用されますが、標準英語では「reproducible」が使用されます。接尾辞は、「-ible」という形式で「reproduction」という語根に付加され、「producible」と「deducible」に対応します。スタイルガイドや辞書には「reproducible」としか記載されていません。「reproducable」は、古いフォーラムの投稿や英語が母国語ではない原稿で見かけることがあっても、スペルミスとして扱ってください。

研究に再現性がない理由: 4 つの失敗モード

コードの欠落または変異は、再現試行の失敗の大部分を占めます。一般的なシナリオ: 公開された論文が分析について説明しており、対応する著者が研究室を離れており、リポジトリが存在しないか、古いバージョンが含まれているか、プライベート データセットを参照しているかのいずれかです。 「自分のマシンでは動作する」もののバージョン履歴がないコードは監査できず、コミット ハッシュがなければ、どのバージョンで公開された図が生成されたかを知る方法がありません。

固定されていないソフトウェア環境では、再現が静かに妨げられます。バージョン 1.20 で作成された NumPy パイプラインは、2.x では異なる浮動小数点結果、非推奨の警告、または完全なエラーを生成する可能性があります。コンパイラ フラグ、FFT ライブラリ、または並列分解が変更されると、1 つの GROMACS または LAMMPS ビルドで生成された分子動力学軌跡が別のビルドとは異なる場合があります。修正方法は、パッケージ名のリストだけでなく、正確なバージョン (ハッシュ付きの requirements.txt、conda env export、R の renv.lock、またはコンテナー イメージ ダイジェスト) を保存することです。

関連: — ガイド付きターミナルと実際のデータセットを使用したプロジェクトベースのデータ サイエンス パス.

文書化されていないデータの出所は 3 番目の障害モードです。未処理の計測器出力、シミュレーション再起動ファイル、および HDF5 アーカイブは、多くの場合、メソッド セクションでは決して示されていない複数のクリーンアップと変換の手順を経ます。共同作業者がスプレッドシート内の外れ値を手動でフィルタリングした場合、このステップは表示されず、再現できません。来歴とは、各入力がどこから来たのか、どのような変換がどのような順序で適用されたのかを記録することを意味します。

隠された手動ステップは 4 番目です。 GUI をクリックしてプロットをエクスポートしたり、手動でファイル名を変更したり、ツール間で数値をコピーしたりすると、すべて自動化が中断されます。テストは簡単です。あなたに会ったことのない人が、電話をかけずにパイプラインをエンドツーエンドで実行できるでしょうか?答えが「いいえ」の場合は、手動の手順に問題があります。

研究を再現可能にする方法: 実践的なワークフロー

バージョン管理が基礎です。 Git (または既存のプロジェクトの場合は Mercurial) は、コード、原稿、小さな構成ファイルに加えられたすべての変更を追跡します。早めにコミットし、意味のある投稿を作成し、送信された記事と一致する正確なコミットをマークします。大規模なバイナリ アーティファクト (軌跡、HDF5 ファイル、トレーニングされたモデルの重み) の場合は、リポジトリにギガバイトをコミットするのではなく、DOI を備えた Git LFS、DVC、または Zenodo/figshare リポジトリを使用します。

一見の価値があります: — 大学が支援する Python およびデータサイエンス証明書の 1 つのサブスクリプション.

次に依存関係を固定します。 Python プロジェクトはロック ファイル (pip-compile、Poetry、または uv) を提供する必要があります。 R プロジェクトでは「renv」を使用する必要があります。 Julia プロジェクトには「Project.toml」と「Manifest.toml」があります。 3 レベルでの深い変更によりデジタル出力が変化する可能性があるため、直接的な依存関係だけでなく、推移的な依存関係も固定します。結果に影響を与えるオペレーティング システム、コンパイラー、およびハードウェア固有のライブラリ (BLAS、CUDA) を記録します。

単一のエントリ ポイントにより、スクリプトのフォルダーがパイプラインに変わります。古典的なツールは make です。Makefile はターゲット、依存関係、およびコマンドを宣言し、make は変更されたものだけを再構築します。これは Make を使用した再現可能なリサーチの本質です。ビルド グラフはワークフローを文書化し、順序を強制します。最新の代替手段には、Snakemake、Nextflow、ターゲット (R 用) などがあります。どれも、「script1.py を実行し、script2.py を実行して…」という README よりも優れています。

コンテナ化は環境全体を捉えます。 Docker イメージ、Apptainer/Singularity イメージ (Docker が使用できない HPC クラスターで一般的)、および Conda 環境は、それぞれ環境ドリフトを解決します。ピン留めされたダイジェストを含むコンテナーは、ラップトップ、クラスター、レビュー担当者のマシン上で分析が同じように実行されることを最も確実に保証します。トレードオフはイメージのサイズとビルド時間です。無駄のないベースイメージとマルチステージビルドにより、両方を管理しやすくします。

ドキュメントは一巡します。 README には、ソフトウェア要件、各図を再現するための正確なコマンド、予想される実行時間、予想される結果が記載されている必要があります。 「CITATION.cff」ファイルまたは「codemeta.json」は、他の人がソフトウェアを正しく引用するのに役立ちます。ステップが本当にインタラクティブである場合は、読者が繰り返しできるように具体的に説明します。

R を使用した再現可能な研究: 具体的な例

R には最も成熟した再現性エコシステムの 1 つがあり、そのため「R での再現性のある研究」がよく検索されます。 renv パッケージはパッケージ バージョンのスナップショットをロックファイルに保存するため、renv::restore() はプロジェクトが開発された正確なライブラリを再構築します。 R Markdown と Quarto は、コード、出力、散文を 1 つの文書に織り込み、編むと再生成されるため、分析と原稿の間のコピー&ペーストのエラーが排除されます。

最小限の R プロジェクト構造は次のようになります。依存関係用の renv.lock、関数用の R/ ディレクトリ、取り込みスクリプト用の data-raw/ ディレクトリ、処理されたオブジェクト用の data/ ディレクトリ、およびビルドを調整する Makefile または _targets.R です。 targets パッケージは、make スタイルの依存関係追跡を R に拡張し、入力が変更されていないステップをスキップします。より詳細な処理については、Christopher Gandrud 著の Reproducible Research with R and RStudio という書籍が標準的な参考資料であり、Roger Peng 著の R Programming for Data Science とジョンズ ホプキンスの再現性コースの教材が最初から最後までワークフローをカバーしています。

関連: — 科学技術コンピューティング関連の書籍、ビデオ、ライブ トレーニングの詳細な技術ライブラリ.

同じ原則が Python にも引き継がれます。固定された依存関係を含む pyproject.toml、Makefile または Snakemake ワークフロー、および Quarto または Jupyter Book 原稿は、R スタックと同等のものを提供します。ツールが異なります。規律はそうではありません。

再現可能なビルドとは何ですか?

再現可能なビルドとは、同じツールチェーンを使用して同じソース コードをコンパイルすると、バイトごとに同一のバイナリが生成されるソフトウェア エンジニアリングの実践です。この概念はフリーソフトウェアの世界で生まれ、Debian プロジェクトと Tor プロジェクトがその先駆者となりました。現在は Reproducible Builds プロジェクトによって維持されている正式な標準です。動機は信頼です。誰かがバイナリを再構築して同じハッシュを取得できれば、配布されたバイナリが公開されたソースと一致し、隠れた変更が含まれていないことを検証できます。

科学パイプラインに直接例えることができます。再現可能な分析ビルドでは、ソース入力 (生データ、コード、構成) を取得し、出力 (図、表、統計) を決定的に生成します。非決定論はこれを破り、研究を再現できなくなります。固定されていないランダム シード、さまざまな順序で合計される並列リダクション、出力ファイルに埋め込まれたタイムスタンプ、およびスレッド数に依存する浮動小数点演算はすべて、実行ごとの変動を引き起こします。シードの修正、削減前のソート、およびタイムスタンプの削除が標準的な解決策です。

ショッピングの場合: — ブラウザーで直接コーディングするインタラクティブな Python およびデータ サイエンス コース.

非決定性の原因をすべて排除できるわけではありません。 GPU アクセラレーションを使用した分子動力学では、浮動小数点の丸め処理が異なるため、ハードウェアが異なればわずかに異なる軌跡が生成される可能性があり、モンテカルロ法は本質的に確率的です。正直なアプローチは、予想される変動を文書化して報告し、科学的結論がそれに対して堅牢であることを確認することであり、提供できないビットレベルの同一性を主張することではありません。

研究に再現性があるかどうかの判断基準

基準弱い強い
コードの利用可能性”リクエストに応じて利用可能”タグ付きリリースと DOI を含むパブリック リポジトリ
環境パッケージ名のみダイジェストが固定されたロックファイルまたはコンテナ
エントリーポイント番号付きスクリプト、手動注文make、Snakemake、または targets ワークフロー
データの出所方法の段落文書化された取り込みスクリプトとチェックサム
決定論シードなしのランダム性シードを修正し、予想される変動を文書化
ドキュメント著者の知識を前提としています第三者がすべての図を再生成できる

これを提出前の自己監査として使用し、研究に再現性の欠如がないか確認します。現在、ほとんどのジャーナルと資金提供者はデータとコードの利用可能性に関する声明を要求しており、いくつかの AGU、PLOS、および Nature ポートフォリオジャーナルを含む一部のジャーナルでは、コードを DOI とともにリポジトリに保管することを要求しています。 「強力な」コラムを満たすことが、ボーナスではなく出版の条件になることが増えています。

よくある反対意見と正直なトレードオフ

時間のコストが最もよく挙げられる反対意見ですが、それは現実です。パイプラインを適切にパッケージ化するには、すでに「完了した」プロジェクトの場合は数日かかる場合があります。反論は、それを「しない」ことのコストは、多くの場合、分析のリバースエンジニアリングに数週間を費やす学生や共同研究者によって後で支払われるというものです。実用的な中間パス: バージョン管理とロックファイルに直ちに投資し、他の人が再利用することが期待されるプロジェクトのみをコンテナ化します。

機密データや制限されたデータは共有を困難にします。臨床データ、独自データ、および特定の機器データは公的に公開できません。このような場合、再現性とは、アクセス手順の明確な説明とともに、コード、スキーマ、合成または匿名化されたサンプルを公開することを意味します。目標は、正当なアクセス権を持つ資格のある研究者が結果を再生成できるようにすることです。

レガシー コードも制約の 1 つです。 1990 年代の Fortran および C シミュレーションは、パッチがなければ最新のシステムではコンパイルできない場合があります。多くの場合、古いツールチェーンを使用してコンテナーにそれらをラップする方が、書き換えるよりも簡単で、元の数値が保持されます。どのパッチを適用したのか、そしてその理由を文書化します。

最後に、再現性は正確さとは同じではありません。パイプラインは完全に再現可能であっても、依然として間違っている可能性があります。忠実に再現されたバグは依然としてバグです。再現性は精査の前提条件であり、それに代わるものではありません。研究が誤りだけを再現しているのではないことを確認するには、ピアレビュー、独立した複製、感度分析が引き続き必要です。

よくある質問

研究に再現性がないとはどういう意味ですか?

独立した研究者が同じデータとコードを使用して公開された結果を再生成できない場合、研究を再現することはできません。通常、原因は、コードの欠落、固定されていないソフトウェア環境、文書化されていないデータ処理、または自動化されていない手動ステップです。これは 成果物 の特性であり、元の作者の誠実さについての判断ではありません。

再現性と複製可能性の違いは何ですか?

再現性とは、同じデータに対して同じ分析を再実行し、同じ結果が得られることを意味します。再現可能性(Replicability)とは、新しい研究(新しいデータ、新しいサンプル)を実施し、一貫した結論に達することを意味します。 2019 年の全米アカデミー報告書では、これらの概念は別個の概念として扱われており、たとえ再現可能性(replicability)がなくても、研究は再現可能(reproducible)である場合があります。

研究を再現可能にするにはどうすればよいですか?

バージョン管理 (Git) から始めて、記事に対応するコミットをマークします。ロック ファイルまたはコンテナ イメージを使用して依存関係を固定します。 「Makefile」、Snakemake、またはtargets ワークフローなどの単一のエントリ ポイントを提供します。データの出所と予想される結果を README ファイルに文書化します。送信する前に、クリーンなマシンですべてをテストしてください。

「reproducable」というスペルは正しいですか?

いいえ、標準英語では「reproducible」という単語を綴ります。これは、「reproduce」に接尾辞「-ible」を加えたものです。辞書やスタイルガイドには「reproducible」のみが記載されています。 「reproducable」という表記は、非公式の文書や英語を母国語としないテキストでは使用されますが、正式な科学文書では受け入れられません。

科学技術コンピューティングにおける再現可能なビルドとは何ですか?

再現可能なビルドとは、同一の入力から同一の出力を生成するビルドであり、ソフトウェア パッケージ化のための再現可能なビルド プロジェクトによって形式化された標準です。科学においても、同じ原則が分析パイプラインに当てはまります。固定されたランダム シード、決定論的な削減、固定されたツールチェーンにより、結果を正確に再生成できます。ハードウェアに依存する浮動小数点の変動が避けられない場合は、予想される範囲を文書化してください。

再現性を確保するには、すべてのデータを共有する必要がありますか?

必ずしもそうとは限りません。制限付きデータ、臨床データ、または独自データは、文書化されたアクセス手順と並行してコード、スキーマ、および合成サンプルを公開することで処理できます。多くの資金提供者やジャーナルは、オープンデータではなく、データの利用可能性に関する声明を要求しています。テストは、正当なアクセス権を持つ資格のある研究者が結果を再生成できるかどうかです。

詳細な資料とツール

National Academies の Reproducibility and Replicability in Science (2019) は、研究が再現不可能な場合に信頼できる概念的参考資料です。 Reproducible Builds プロジェクトは、ソフトウェア エンジニアリング標準を文書化しています。ワークフロー ツールについては、GNU Make、Snakemake、Nextflow、targets、renv、および Quarto のドキュメントを参照してください。 The Turing Way は、分野を超えた再現可能な研究実践を網羅したオープン コミュニティ ハンドブックであり、Software Sustainability Institute は研究用ソフトウェア エンジニア向けの実践的なガイダンスを発行しています。

よくある質問

研究に再現性がないとはどういう意味ですか?

独立した研究者が同じデータとコードを使用して公開された結果を再生成できない場合、研究を再現することはできません。通常、原因は、コードの欠落、固定されていないソフトウェア環境、文書化されていないデータ処理、または自動化されていない手動ステップです。これは成果物の特性であり、元の作者の誠実さについての判断ではありません。

再現性と複製可能性の違いは何ですか?

再現性とは、同じデータに対して同じ分析を再実行し、同じ結果が得られることを意味します。再現性とは、新しい研究(新しいデータ、新しいサンプル)を実施し、一貫した結論に達することを意味します。 2019 年の全米アカデミー報告書では、これらの概念は別個の概念として扱われており、たとえ再現できなかったとしても研究は再現可能です。

研究を再現可能にするにはどうすればよいですか?

バージョン管理 (Git) から始めて、記事に対応するコミットをマークします。ロック ファイルまたはコンテナ イメージを使用して依存関係を固定します。 「Makefile」、Snakemake、または「ターゲット」ワークフローなどの単一のエントリ ポイントを提供します。データの出所と予想される結果を README ファイルに文書化します。送信する前に、クリーンなマシンですべてをテストしてください。

「再現可能」は正しいスペルですか?

いいえ、標準英語では「reproducible」という単語を綴ります。これは、「reproduction」に接尾辞「-ible」を加えたものです。辞書やスタイルガイドには「再現可能」としか記載されていません。 「再現可能」という変形は、非公式の文章や英語を母国語としない一部の文章では使用されますが、正式な科学的文章では受け入れられません。

科学計算における再現可能なビルドとは何ですか?

再現可能なビルドとは、同一の入力から同一の出力を生成するビルドであり、ソフトウェア パッケージ化のための再現可能なビルド プロジェクトによって形式化された標準です。科学においても、同じ原則が分析パイプラインに当てはまります。固定されたランダム シード、決定論的な削減、固定されたツールチェーンにより、結果を正確に再生成できます。ハードウェアに依存する浮動小数点の変動が避けられない場合は、予想される範囲を文書化してください。

再現性を確保するには、すべてのデータを共有する必要がありますか?

いつもではありません。制限付きデータ、臨床データ、または独自データは、文書化されたアクセス手順と並行してコード、スキーマ、および合成サンプルを公開することで処理できます。多くの資金提供者やジャーナルは、オープンデータではなく、データの利用可能性に関する声明を要求しています。テストは、正当なアクセス権を持つ資格のある研究者が結果を再生成できるかどうかです。詳細な資料とツール National Academies の『Reproducibility and Replicaability in Science (2019)』は、研究が再現できない場合に使用する権威ある概念的参考資料です。 Reproducible Builds プロジェクトは、ソフトウェア エンジニアリングの立場を文書化します。


ブラウザでコーディングして Python を学習する

ブラウザーで直接コーディングするインタラクティブな Python およびデータ サイエンス コース