科学研究の再現性: 実践ガイド
科学研究の再現性とは、同じデータ、コード、計算環境を与えられた独立した研究者が同じ結果を得る能力のことです。この標準は 2019 年に全米アカデミーによって正式化され、バージョン管理、コンテナ化、永続的な識別子のような実践を通じて運用化されています。再現性は、新しいデータの収集を必要とする複製可能性とは異なります。
科学研究における再現性とは何ですか?
科学研究における再現性は、しばしば混同される関連概念群の中で特定の分野を占めています。 2019 年の全米アカデミーのレポート 科学における再現性と複製可能性 では、広く採用されている区別が示されています。科学研究の再現性とは、同じ入力から同じ結果を計算することを意味し、複製可能性とは、新しいデータを使用した新しい研究から一貫した結果が得られることを意味します。3 番目の用語である反復可能性は、同じアナリストが同じデータに対して同じ分析を再実行することを表します。
計算科学者にとって、故障モードは異なるため、この分類法は重要です。再現できない分子動力学 (MD) シミュレーションは通常、環境上の理由 (異なる GROMACS または LAMMPS ビルド、異なる力場パラメーター ファイル、異なる GPU アーキテクチャ、または未記録のランダム シード) により失敗します。再現できない研究は、異なるサンプル、異なる機器、または一般化できない本物の効果など、科学的な理由で失敗します。
この区別は、作業を文書化する方法に実際的な影響を及ぼします。再現性を実現するには、入力データ、コード バージョン、依存関係のバージョン、ハードウェア、コンパイラ フラグ、実行されたコマンドのシーケンスなど、計算の来歴チェーン全体をキャプチャする必要があります。再現性を確保するには、他の人が同等の研究を計画できるように、実験またはサンプリングのプロトコルを十分に詳細に記述する必要があります。
実際に再現性がうまくいかない理由
科学研究の再現性に関する失敗は、少数の繰り返し発生する原因に集中しており、そのほとんどは詐欺的というよりも日常的なものです。これらの原因を理解することが予防への第一歩です。
環境ドリフトは、計算作業における最も一般的な原因です。 2021 年に正しく実行された Python 分析は、NumPy のデフォルト動作の変更、PyPI からの推移的な依存関係のヤンク、またはシステム BLAS ライブラリのアップグレードにより、2024 年に失敗する可能性があります。コードは変更されていません。足元の状況が変わってしまったということです。
関連: — ガイド付きターミナルと実際のデータセットを使用したプロジェクトベースのデータ サイエンス パス.
文書化されていないランダム性は、シミュレーションと機械学習に同様に影響を与えます。 MD は、ランジュバンまたはアンデルセンのサーモスタットを使用して実行され、シードが記録されないままになることが多い乱数生成器から抽出されます。統計的に同一に見える軌道でも、数ピコ秒後には原子座標ごとに異なる可能性があります。
非表示の状態と手動ステップ — ノートブックのセルが順序どおりに実行されず、スプレッドシートが手動で編集され、パラメーターが GUI で調整されても、入力と出力の間のチェーンが切断されます。あるステップが誰かの記憶の中にのみ存在する場合、それは再現できません。
データのバージョン管理のギャップにより、どのデータセットがどの図を生成したかについてあいまいさが生じます。 Zenodo や Figshare などのパブリック リポジトリは、凍結されたスナップショットに DOI を割り当てますが、多くのプロジェクトは依然として変更可能な URL またはローカル パスを参照しています。
一見の価値があります: — 大学が支援する Python およびデータサイエンス証明書の 1 つのサブスクリプション.
ハードウェアと数値ライブラリに関する 不十分なメタデータ は、多くの研究者が予想しているよりも重要です。浮動小数点の結果は、CPU アーキテクチャ、GPU モデル、さらにはコンパイラの最適化レベルによっても異なる可能性があるため、ビットごとの再現性が統計的な再現性よりも厳しい目標となります。
作業を再現可能にするコアプラクティス
科学研究の再現性を実現するための再現可能な計算プロジェクトは、相互に強化し合ういくつかの実践に基づいています。どれも単独では十分ではありませんが、これらを組み合わせることで、上で説明したギャップのほとんどを埋めることができます。
コードとテキストのバージョン管理
Markdown または LaTeX で書かれたソース コード、分析スクリプト、原稿のデフォルトは Git のままです。重要な規律は、頻繁にコミットすることと、公開された結果に対応するリリースにタグを付けることです。 「v1.0-paper」などのタグを使用すると、読者は図の背後にある正確なコードの状態を確認できます。
依存関係と環境のキャプチャ
環境キャプチャはかなり成熟しました。 Conda 環境ファイル、固定バージョンの「pip」要件、R の「renv」、多くの言語エコシステムのロックファイルなどのツールは、正確な依存関係のバージョンを記録します。 Docker、Podman、または Singularity/Apptainer を使用したコンテナ化は、オペレーティング システム、システム ライブラリ、およびコンパイラをキャプチャすることでさらに進みます。 Docker が利用できない HPC 環境の場合、デーモンなしで実行され、Slurm などのスケジューラーと統合される Apptainer (旧称 Singularity) が一般的な選択肢となります。
ワークフローマネージャーと来歴
Snakemake、Nextflow、Make などのワークフロー マネージャーは、入力と出力の間の依存関係グラフをエンコードするため、単一のコマンドですべての派生アーティファクトが再生成されます。また、実行されたステップとその順序も記録されます。より詳細な来歴を得るために、データ バージョン コントロール (DVC) などのツールは、Git 内のコードと一緒にデータとモデルのバージョンを追跡します。
永続的な識別子とアーカイブ
Zenodo、Figshare、または機関リポジトリを介して DOI を含むスナップショットをアーカイブすると、ラボの Web サイトを超えても正確な成果物が確実に保存されます。 DOI はまた、査読者や将来の読者に安定した引用対象を与えます。
パラメータとシードのドキュメント
ランダムシード、サーモスタットとバロスタットの設定、積分タイムステップ、カットオフ半径、および力場のバージョンを記録することは、MD 作業には不可欠です。これらの値をリストした短い「README」または構造化メタデータ ファイル (JSON サイドカーなど) によって、不透明な軌跡が再現可能なものに変わります。
再現性ツールを選択するための基準リスト
科学研究の再現性を確保するには、プロジェクトごとに異なるレベルの厳密さが必要です。次の基準は、インフラストラクチャに投資する量を決定するのに役立ちます。
| 基準 | 軽量の選択 | ヘビー級の選択 |
|---|---|---|
| 環境キャプチャ | 固定された要件ファイル | 完全なコンテナイメージ |
| データのバージョン管理 | Git LFS または手動スナップショット | DVC または DOI を備えたデータ リポジトリ |
| ワークフロー オーケストレーション | シェルスクリプトまたはMakefile | Snakemake または Nextflow |
| 来歴 | コミットメッセージと README | 自動来歴ログ |
| アーカイブ | GitHub リリース | Zenodo DOI スナップショット |
| ランダム性 | 構成に記録されたシード | ログ状態のシード済み RNG |
トレードオフは単純です。重いツールはセットアップ時間とメンテナンスにコストがかかりますが、プロジェクトが人事異動、ジャーナルのレビュー、または複数年にわたる複製の試行に耐えなければならない場合には、その効果は十分にあります。単一著者による探索的分析では、コンテナが必要になることはほとんどありません。3 本の論文と1 本の学位論文の根拠となるラボパイプラインであれば、通常はコンテナが必要です。
分子動力学と数値パイプラインの再現性
研究ソフトウェア工学 における分子動力学では、結果がソフトウェアとハードウェアの両方に依存するため、特に厳しい科学研究の再現性の問題が生じます。同じ GROMACS 入力デッキでも、浮動小数点のリダクション次数と高速演算の最適化の違いにより、異なる GPU 世代ではわずかに異なる軌道を生成する可能性があります。
実際的な軽減策には、ランダム シードを明示的に修正すること、正確なビルド (コンパイラー、CUDA バージョン、SIMD フラグ) を文書化すること、結果がビット単位で再現可能か統計的に再現可能かどうかを報告することが含まれます。異種ハードウェア間でのビットごとの再現性は達成できないことが多いため、多くのジャーナルや査読者は、統計的再現性 (アンサンブル平均と誤差範囲内の熱力学量) を MD の適切な基準として受け入れています。
NumPy および HDF5 パイプラインの場合、同様の問題は、配列の順序付け、dtype の精度、HDF5 ライブラリのバージョンです。あるマシンで float32 配列を書き込み、別のマシンで float64 として読み取るパイプラインは、結果をサイレントに変更できます。 dtype を記録し、I/O 境界で明示的な変換を使用すると、この種のバグを防ぐことができます。
科学研究における再現性: 基準、ジャーナル、およびインセンティブ
科学研究の再現性に対する組織の圧力は着実に高まっています。 2016 年に Scientific Data で発表された FAIR 原則 (検索可能、アクセス可能、相互運用可能、再利用可能) は、広く引用されているデータ管理のフレームワークを提供します。 Nature、Science、および多くの分野固有のタイトルを含むジャーナルでは、現在、データとコードの可用性に関する記述が必須または強く推奨されています。
Center for Open Science と ReproNim プロジェクトは、再現可能な神経イメージングおよびそれ以降のためのトレーニングとツールを提供します。アラン・チューリング研究所が管理するチューリング・ウェイは、分野を超えた再現可能な研究実践を網羅したコミュニティ・ハンドブックです。
インセンティブは依然として不完全です。コードとデータの共有には時間がかかりますが、採用や昇進で報われることはほとんどなく、レビュー担当者がリポジトリが実際に実行されるかどうかを確認することはほとんどありません。それにもかかわらず、NIH や NSF などの資金提供者はデータ管理計画をますます必要とし、一部のジャーナルは現在、投稿されたコードを実行する再現性レビュー担当者を雇用しています。
よくある反対意見と正直な警告
再現性の擁護者は、科学研究の再現性という目標を誇張することがあります。正直なところ、いくつかの注意点を述べておきます。
ビット単位の再現性は、必ずしも達成可能であるとは限らず、必ずしも必要であるとは限りません。 異種ハードウェアでは、浮動小数点の非決定性が現実のものとなります。現実的な目標は、文書化された許容差による統計的な再現性です。
プロプライエタリなソフトウェアとライセンスされたデータにより、共有できる内容が制限されます。 ツールまたはデータセットを再配布できない場合は、バージョン、パラメータ、アクセス手順を文書化することが最善の代替手段となります。
再現性は正確さを保証するものではありません。 バグのある分析は完全に再現できる可能性があります。再現性は信頼できる科学にとって必要条件ではありますが、十分条件ではありません。
オーバーヘッドは実際のものです。 小さなスクリプトのコンテナ化には、分析自体よりも時間がかかる場合があります。投資を賭け金と仕事の予想寿命に合わせてください。
重要なポイント
- 再現性とは、同じデータ、コード、環境から同じ結果が得られることを意味し、複製可能性とは、新しいデータから一貫した結果が得られることを意味します。国立アカデミーは 2019 年にこの区別を正式に定めました。
- 環境ドリフト、文書化されていないランダム性、隠れた手動ステップ、およびメタデータの欠落は、計算科学研究の再現性作業における再現性の失敗のほとんどを引き起こします。
- バージョン管理、ピン留めされた依存関係、コンテナ、ワークフロー マネージャー、および DOI でアーカイブされたスナップショットがコア ツールキットを形成します。プロジェクトの利害に見合った厳密さのレベルを選択してください。
- 分子動力学と数値パイプラインはハードウェアに依存する非決定論に直面するため、多くの場合、文書化された許容差による統計的再現性が現実的な標準となります。
- FAIR の原則、ジャーナルデータの可用性ポリシー、資金提供者の要件により、共有された実行可能な成果物に対するベースラインの期待が着実に高まっています。
出典と詳細情報
- 科学的方法 — Wikipedia: 科学的方法は、注意深い観察、厳格な懐疑、仮説検証、実験的検証を通じて知識を獲得するための経験的方法です…
よくある質問
科学研究における再現性とは何ですか?
科学研究における再現性とは、同じデータ、コード、計算環境から研究結果を再計算できる能力のことです。これは、新しいデータを収集し、その結果が一般化するかどうかをテストする複製可能性とは異なります。 2019 年の全米アカデミー報告書では、この用語が科学研究の再現性に関して広く使用される標準として確立されました。
再現性と複製可能性はどう違うのですか?
再現性は、通常は計算作業において、同じ入力が同じ出力を生成することに関係します。複製可能性は、新しいデータまたは新しいサンプルを使用して研究を繰り返したときに、結果が維持されるかどうかに関係します。どちらも重要ですが、異なる理由で失敗し、異なる文書が必要になります。
計算研究の再現性を高めるのに役立つツールは何ですか?
一般的なツールには、バージョン管理のための Git、依存関係キャプチャのための Conda または pip lockfile、コンテナ化のための Docker または Apptainer、ワークフロー オーケストレーションのための Snakemake または Nextflow、データ バージョニングのための DVC、DOI でアーカイブされたスナップショットのための Zenodo または Figshare が含まれます。適切な組み合わせは、プロジェクトの規模と予想される寿命によって異なります。
分子動力学を正確に再現するのはなぜ難しいのですか?
分子動力学は、ランダム シード、力場のバージョン、統合設定、およびハードウェア固有の浮動小数点の動作に依存します。 GPU の世代やコンパイラの最適化が異なるとリダクション順序が変わる可能性があるため、マシン間でのビット単位の再現性が達成できないことがよくあります。文書化されたエラーバー内の統計的再現性が実用的な標準です。
ジャーナルには再現可能なコードとデータが必要ですか?
Nature や Science を含む多くのジャーナルは、データとコードの可用性に関するステートメントを要求または強く推奨しており、一部のジャーナルでは再現性のレビュー担当者を雇用しています。要件は出版社や分野によって異なるため、投稿する前に特定のジャーナルのポリシーを確認してください。 NIH や NSF などの資金提供者も、データ管理計画の必要性をますます高めています。
再現可能な研究でも間違っている可能性はありますか?
はい。再現性とは、分析が正確であることを保証するものではなく、分析を再実行できることを保証します。欠陥のあるメソッドやバグのあるスクリプトは、完全に再現できる可能性があります。再現性は信頼できる科学に必要な基盤ですが、それは健全な方法論と査読と組み合わせる必要があります。
よくある質問
科学研究における再現性とは何ですか?
科学研究における再現性とは、同じデータ、コード、計算環境から研究結果を再計算できる能力のことです。これは、新しいデータを収集し、その結果が一般化するかどうかをテストする複製可能性とは異なります。 2019 年の全米アカデミー報告書では、この用語が科学研究の再現性に関して広く使用される標準として確立されました。
再現性と複製可能性はどう違うのですか?
再現性は、通常は計算作業において、同じ入力が同じ出力を生成することに関係します。再現性は、新しいデータまたは新しいサンプルを使用して研究を繰り返したときに、結果が維持されるかどうかに関係します。どちらも重要ですが、異なる理由で失敗し、異なる文書が必要になります。
計算研究の再現性を高めるのに役立つツールは何ですか?
一般的なツールには、バージョン管理のための Git、依存関係キャプチャのための Conda または pip lockfile、コンテナ化のための Docker または Apptainer、ワークフロー オーケストレーションのための Snakemake または Nextflow、データ バージョニングのための DVC、DOI でアーカイブされたスナップショットのための Zenodo または Figshare が含まれます。適切な組み合わせは、プロジェクトの規模と予想される寿命によって異なります。
分子動力学を正確に再現するのはなぜ難しいのでしょうか?
分子動力学は、ランダム シード、力場のバージョン、統合設定、およびハードウェア固有の浮動小数点の動作に依存します。 GPU の世代やコンパイラの最適化が異なるとリダクション順序が変わる可能性があるため、マシン間でのビット単位の再現性が達成できないことがよくあります。文書化されたエラーバー内の統計的再現性が実用的な標準です。
ジャーナルには再現可能なコードとデータが必要ですか?
Nature や Science を含む多くのジャーナルは、データとコードの可用性に関するステートメントを要求または強く推奨しており、再現性のレビュー担当者を雇用しているジャーナルもあります。要件は出版社や分野によって異なるため、投稿する前に特定のジャーナルのポリシーを確認してください。 NIH や NSF などの資金提供者も、データ管理計画の必要性をますます高めています。
再現可能な研究でも間違っている可能性はありますか?
はい。再現性とは、分析が正確であることを保証するものではなく、分析を再実行できることを保証します。欠陥のあるメソッドやバグのあるスクリプトは、完全に再現できる可能性があります。再現性は信頼できる科学に必要な基盤ですが、それは健全な方法論と査読と組み合わせる必要があります。
ブラウザでコーディングして Python を学習する
ブラウザーで直接コーディングするインタラクティブな Python およびデータ サイエンス コース