analytical-method-validation について
規制フレームワークに沿って分析法バリデーションを計画・評価するスキルです。試験室の分析者やレビュー担当者向けに、試験設計、データ解析、文書化を支援しますが、最終判断は担当者に委ねます。
主な機能
- 01フレームワークと必要特性の選定
- 02プロトコル骨子の作成
- 03応答と検量線の適合性解析
- 04真度と精度の推定
- 05検出限界と生体分析ランの評価
- 06事前設定した許容幅での方法比較
活用シーン
- 01データ収集前のバリデーション試験設計
- 02範囲全体での検量線の挙動確認
- 03日や装置をまたぐ精度の評価
- 04方法移管時の分析手順の比較
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kalarislabs/ research-agent-skills --skill analytical-method-validationインストール後、Claude Code で/analytical-method-validationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/validation-protocol-template.mdvalidation-report-template.mdreferences/compendial-and-clsi.mdframework-selection.mdich-m10-bioanalytical.mdich-q2r2.mdsource-ledger.mdstatistics.mdscripts/_catalog.py_common.pycheck_accuracy_precision.pycheck_bioanalytical_run.pycheck_detection_limits.pycheck_response.pycompare_methods.pyplan_validation.py詳細
分析法バリデーション
使用する場面
分析手順が意図した目的に適合しているかどうかが問題となるあらゆる場面です。バリデーション試験の設計、バリデーションデータの評価、公定書収載手順の検証、別の検査室や機器への手順の移管、またはこれらのいずれかを報告書で説明する場合が該当します。
2つのルール
1. 何かを設計する前に、どのフレームワークが適用されるかを確認します。 同じアッセイでも、ICH Q2(R2)、USP <1225>、ICH M10、CLSI EP、ISO/IEC 17025では、バリデーションの方法が異なります。必須となる特性、試験の構成、数値の判定基準が示されているかどうかも、それぞれ異なります。これらを混在させると、どのフレームワークにも適合しないプロトコルになります。
2. データを収集する前に判定基準を定めます。 結果を見た後に選んだ基準は判定基準ではなく、事後に決定することは監査で常に指摘される事項です。ICH Q2(R2)では数値基準が意図的にほとんど示されていません。基準は規格、分析目標プロファイル(ICH Q14 セクション3)、または開発データから導き出す必要があります。例外はICH M10で、明示的な数値が示されており、クロマトグラフィーアッセイとリガンド結合アッセイとでは異なります。
適用範囲
このスキルは、試験を計画し、統計量を正しく計算し、文書を構成します。手順がバリデート済みであると判断すること、バッチを出荷すること、ランを受け入れるか却下すること、調査を終了すること、または分析者、技術レビュー担当者、品質部門、規制当局の代わりとなることはありません。すべてのスクリプトは報告を行いますが、結論を出すものはありません。
著作権上の境界
ICHガイドラインは公開され、謝辞を付記すれば再利用できるため、その要件はこのスキルに直接組み込まれています。USP一般章、CLSI EP文書、ISO規格は著作権で保護され、有料で提供されています。 これらについて、このスキルが提供するのは名称、適用範囲、正規のコピーの入手先のみであり、本文や独自に作成した閾値は提供しません。エージェントにその内容の取得、書き起こし、再構成を依頼しないでください。有料文書に記載された数値が必要な場合は、正規のコピーを参照してください。
フレームワーク
cd skills/analytical-method-validation/scripts
python3 plan_validation.py --list-frameworks
| キー | 適用対象 | 数値基準の提供 |
|---|---|---|
ich-q2r2 | 原薬および製剤の出荷試験・安定性試験 | ほとんどなし — 自ら導き出します |
ich-m10 | 生物分析における濃度測定(PK、TK、BE) | あり。測定方式によって異なります |
usp-1220 | 公定書収載手順のライフサイクル、3段階 | 有料 |
usp-1225 / usp-1226 | 公定書収載手順のバリデーション/検証 | 有料 |
clsi | 臨床検査室の測定手順(EPシリーズ) | 有料 |
iso-17025 | 認定下で開発・変更された方法 | なし — 「必要な範囲で」 |
Q2(R2)は2023年11月にQ2(R1)に取って代わり、特性の構成を変更しました。 範囲は親特性(セクション3.2)となり、その中に応答(直線性)と下限範囲の限界値のバリデーション(DL/QL)が含まれます。正確さと精度はセクション3.3にあり、単一の基準に照らして組み合わせて評価できます。頑健性は開発活動として扱われ、ICH Q14を相互参照しています。多変量手順は明示的に取り上げられ(2.5および3.2.2.3)、付属書2では、Q2(R1)で扱われていなかった技法の実例が追加されています。対象技法は、定量的¹H-NMR、NIR、定量LC/MS、qPCR、生物学的アッセイ、粒子径です。直線性、範囲、正確さ、精度、特異性、LOD、LOQ、頑健性を並べた、Q2(R1)形式のプロトコルは時代遅れです。また、表5および表6~11に対する2023年11月30日付の誤記訂正にも注意してください。
スクリプト
cd skills/analytical-method-validation/scripts
| スクリプト | 回答する質問 |
|---|---|
plan_validation.py | どのフレームワークか、どの特性か、どのような試験計画か、どのプロトコルか。 |
check_response.py | キャリブレーションモデルは実際に範囲全体で成り立つか。 |
check_accuracy_precision.py | 回収率はどれくらいで、変動のうち日間変動が占める割合はどれくらいか。 |
check_detection_limits.py | 各許容アプローチによる DL と QL はいくつか。また、報告閾値を満たすか。 |
check_bioanalytical_run.py | このランは、そのモダリティに関する ICH M10 の要件を満たすか。 |
compare_methods.py | 事前に定めた許容幅で、2 つの手順は同等か。 |
すべて --format table|tsv|json を受け付けます。出典情報、ガイドラインの引用、注意事項は stderr に、
データは stdout に出力されるため、> out.tsv で両者を分けて保存できます。終了コードは、
所見がない場合は 0、所見が報告された場合は 1、入力が不正な場合は 2 です。そのため、いずれもワークフローのゲートとして使用できます。
ワークフロー
1. フレームワークと必要な特性を決める
python3 plan_validation.py --framework ich-q2r2 --attribute assay --technique hplc --range-use assay
Q2(R2) Table 1 では、技法ではなく、測定対象の特性に基づいて必要な項目が決まります。定量試験の場合:特異性、応答、真度、併行精度、中間精度。限度試験の場合:特異性と DL のみ。確認試験の場合:特異性のみです。指定できる特性には assay、impurity(定量)、impurity-limit、identity があります。
報告可能範囲は規格から決まります。Q2(R2) Table 2 には具体例が示されています。定量試験では申告含量の 80–120%、含量均一性では 70–130%、不純物では報告閾値から規格の 120% までです。
2. プロトコルを生成し、基準を記入する
python3 plan_validation.py --framework ich-q2r2 --attribute impurity --protocol > protocol.md
角括弧で囲まれた各フィールドは、データ収集の前に判断して記録すべき項目です。Q2(R2) に関する作業では、妥当なデフォルトが存在しないため、このプロトコルのひな形では合格基準を意図的に事前入力していません。
3. 応答を評価する
python3 check_response.py -i calibration.csv --max-back-calc-error 2
入力は level,response で、1 行につき 1 回の注入です。同じレベルの行は反復測定値であり、これらを入力することで初めて直線性試験が可能になります。
決定係数なら問題なしと判定してしまう曲線の実際の出力例:
statistic value
distinct levels 5
slope 166.6000
intercept 2495.0000
intercept CI includes 0 no
coefficient of determination (r2) 0.9830
lack-of-fit F 469.5294
lack-of-fit p 1.5139e-06
runs test p 0.0492
level n mean_response mean_back_calculated relative_error_pct
50.0000 2 10075.0000 45.4982 -9.0036
75.0000 2 15150.0000 75.9604 1.2805
100.0000 2 20050.0000 105.3721 5.3721
125.0000 2 24050.0000 129.3818 3.5054
150.0000 2 26450.0000 143.7875 -4.1417
r² = 0.983 ですが、このモデルは使用できません。範囲の下限で逆算誤差が −9.0%、適合度不足の p 値が 1.5 × 10⁻⁶ で、残差の符号もランダムではありません。r² は直線性の証拠にはなりません。範囲が広がると上昇し、曲率にはほとんど反応しないためです。証拠となるのは、純誤差に対する適合度不足の F 検定と残差パターンです。そのため Q2(R2) 3.2.2.1 では、相関係数だけでなく、直線からの各点の偏差を分析するよう求めています。
範囲が広い曲線には --weight 1/x2 を追加します。範囲の上位 3 分の 1 の残差分散が下位 3 分の 1 の 10 倍を超える場合、スクリプトは不均一分散性を報告します。重み付けしない当てはめでは、報告閾値が存在する低濃度側に偏りが生じるためです。
4. 真度と精度を評価する
python3 check_accuracy_precision.py -i ap.csv --accuracy-limit 2 --rsd-limit 1.0 --design-check assay
入力は level,measured,group です。group は中間精度の要因であり、日、分析者、または装置を指定します。
level component sd rsd_pct df ci90_low_sd ci90_high_sd
100 repeatability (within group) 0.0707 0.0707 3 0.0438 0.2065
100 between-group 1.6515 1.6515 2 n/a n/a
100 intermediate precision (total) 1.6530 1.6530 2.0037 0.9554 7.2821
併行精度のRSD 0.07%は非常に優れているように見えますが、中間精度は1.65%で、その23倍です。これは、変動がすべて日間に生じているためです。日内の数値を手順の精度として報告すると、日常的な性能を一桁以上過小評価することになります。このため、このスクリプトはデータをプールするのではなく、一元配置ランダム効果モデルを当てはめます。
このスクリプトが処理する2つの落とし穴:
- 精度は各濃度レベル内で推定し、レベル間でプールしません。 80/100/120%の結果を1つの標準偏差にプールすると、濃度範囲そのものが見かけ上の不精確さになります。このスクリプトはレベルごとの結果に加えて、名目値に対する割合としてレベルに依存しない見方も報告します。
--require-ci-within-limitは、平均値だけでなく信頼区間全体が限度内に収まることを求めます。Q2(R2) 3.3.1.4では、信頼区間が基準と適合することを求めています。6反復で平均値がかろうじて基準内に入っただけでは、十分な実証にはなりません。
5. DLおよびQLを設定し、確認する
python3 check_detection_limits.py --calibration lowcal.csv --blanks blanks.csv \
--confirm-ql 0.05 --confirm-data ql_check.csv --reporting-threshold 0.05
approach sigma slope DL QL
sd-and-slope (sigma = residual SD of regression) 7.2816 5033.3490 0.0048 0.0145
sd-and-slope (sigma = SD of y-intercept) 4.3303 5033.3490 0.0028 0.0086
sd-and-slope (sigma = SD of 8 blanks) 3.7702 5033.3490 0.0025 0.0075
同じデータでも、σの選択だけでQLの推定値に1.9倍の幅が生じます。そのため、Q2(R2) 3.2.3.5では、限度と、限度の決定に用いたアプローチの両方を報告すること、さらに推定した限度を、その付近の試料で確認することを求めています。不純物試験法では、QLは報告閾値以下でなければなりません。何も考えずに 3.3σ/slope を選び、アプローチを明記せずに数値を1つ報告し、確認もしないことは、それぞれ別個の指摘事項となります。
6. ICH M10に基づくバイオアナリシスの分析ラン
python3 check_bioanalytical_run.py --modality chromatographic --run run1.csv
python3 check_bioanalytical_run.py --modality lba --isr isr.csv
python3 check_bioanalytical_run.py --modality lba --criteria
--modality は必須であり、デフォルト値はありません。適用基準が実際に異なるためです。
| クロマトグラフィー法 | リガンド結合法 | |
|---|---|---|
| 検量線の許容範囲 | ±15%、LLOQでは±20% | ±20%、LLOQおよびULOQでは±25% |
| 真度/精度 | ±15%/CV ≤15%(LLOQでは±20%/≤20%) | ±20%/CV ≤20%(LLOQおよびULOQでは±25%/≤25%) |
| 真度・精度試験の設計 | QC 4濃度、1ランあたり5反復、2日以上にわたり3ラン以上 | QC 5濃度、1ランあたり3反復、2日以上にわたり6ラン以上 |
| 総誤差 | 該当する基準なし | ≤30%、LLOQおよびULOQでは≤40% |
| ISRの一致 | 繰り返し測定の2/3以上で±20% | 繰り返し測定の2/3以上で±30% |
クロマトグラフィー法の±15%という数値をリガンド結合法に適用することも、LBAの総誤差基準をクロマトグラフィー法に持ち込むことも、どちらもよくありますが、どちらも誤りです。
分析ランのチェックでは、見落とされがちなレベルごとのルールを適用します。すべてのQCの2/3以上に加えて、各レベルで少なくとも50%が基準を満たさなければなりません。全体の割合では合格していても、1つのレベルが完全に不合格となる場合があります。
finding: QC level high: 0/2 within tolerance (0%); M10 requires at least 50% at each level
7. 移管と分析法の比較
python3 compare_methods.py -i paired.csv --margin 2 --relative --slope-tolerance 0.05
mean difference (%) 1.4646
TOST margin 2.0000
TOST p-value 1.0528e-13
90% CI (TOST) 1.44127 to 1.48797
equivalent at stated margin yes
--- for contrast only ---
paired t-test p (NOT equivalence) 0.0000
OLS slope (biased here) 1.0396
Deming slope 1.0398
Passing-Bablok slope 1.0351
このスクリプトが置き換える2つの誤り:
- 「p > 0.05で有意差なし、したがって分析法は同等である。」 差を検出できなかったことは、同等性の証拠ではありません。特に移管データが少ない場合、差を検出できない結果はほぼ確実に得られます。TOSTは重要な仮説、すなわち真の差が事前に定めたマージン内にあるかを検定します。ここではt検定で差が非常に有意と判定される一方、TOSTでは±2%で分析法が同等と判定されます。どちらも正しく、問いに答えるのは一方だけです。
- 分析法の比較に通常の最小二乗法を用いること。 OLSは、比較対象となる分析法の参照値に誤差がないと仮定しますが、これは誤りであり、傾きをゼロ方向に偏らせます。誤差分散比を明示したDeming回帰と、ノンパラメトリックで外れ値に頑健なPassing–Bablok回帰が適切な回帰手法です。対比のため、OLSと並べて報告します。
このスクリプトは比例バイアスにもフラグを立てます。これは、差が濃度に応じて変化する場合を指します。平均バイアスがいかに小さく見えても、一致限界は誤解を招きます。
このスキルが防止すること
- Q2(R2)に置き換えられてから3年後も、ICH Q2(R1)の構成に照らして検証すること。
- データを確認した後に受入基準を作成すること。
- r²を直線性の根拠として提示すること。
- 繰返し性を手順の精度として報告し、日間成分を見えなくすること。
- アプローチも確認方法も明記せず、DL/QLの数値を1つだけ示すこと。
- クロマトグラフィー法のM10基準をリガンド結合法に適用する、またはその逆を行うこと。
- t検定で有意差が認められなかったことを、分析法移管における同等性の証拠として提示すること。
参考資料
references/framework-selection.md— 適用されるフレームワークと、その判断に用いる質問references/ich-q2r2.md— 構成、表1と表2、特性ごとに推奨されるデータreferences/ich-m10-bioanalytical.md— クロマトグラフィー法とLBAの基準の全項目を並べて比較references/compendial-and-clsi.md— USP、CLSI、ISOの名称、適用範囲、および引用方法references/statistics.md— 統計手法、それぞれを用いる理由、およびよくある誤りreferences/source-ledger.md— このスキルに含まれるすべての主張の出典と調査日
アセット
assets/validation-protocol-template.md— 基準をあらかじめ明記するプロトコルの構成assets/validation-report-template.md— 生データのトレーサビリティを備えた報告書の構成
関連スキル
iso-standards-readiness:ISOマネジメントシステムおよび試験所の能力に関する規格(ISO 13485医療機器…)の準備状況を示す証拠を準備し、構成をレビューします