ネットワークメタアナリシス
解説
ネットワークメタアナリシス (NMA) は、3つ以上の治療法を同時に比較し、直接比較と間接比較のエビデンスを統合する手法です。従来のメタアナリシスが2つの治療の比較に限定されるのに対し、NMAは複数の治療オプションを包括的に評価することができます。
原理
- 直接比較: 同一研究内で直接比較されたエビデンス (例: A vs B)。
- 間接比較: 共通の比較対照を介して推定 (例: A vs C と B vs C から A vs B を推定)。
- 混合比較: 直接比較と間接比較のエビデンスを統合し、より精度の高い推定値を得る。
- 前提: 推移性 (transitivity) と一貫性 (consistency) の仮定が成り立つことが必要。
通常のメタアナリシスとの違い
| 項目 | 通常のメタアナリシス | ネットワークメタアナリシス |
|---|---|---|
| 比較数 | 2治療の比較 | 3治療以上の同時比較 |
| エビデンス | 直接比較のみ | 直接比較 + 間接比較 |
| 出力 | 単一の統合効果量 | 全ペア比較のマトリックス |
| ランキング | なし | P-score による治療順位 |
| 追加の仮定 | なし | 推移性、一貫性 |
効果指標の種類
通常のメタアナリシスと同様の効果指標を使用します。
比の指標 (対数スケール)
- オッズ比 (OR): 事象発生のオッズの比。
- リスク比 (RR): リスク (発生割合) の比。
- ハザード比 (HR): 生存時間分析における瞬間的ハザードの比。
- 効果なしの値: いずれも 1
差の指標 (線形スケール)
- リスク差 (RD): リスクの絶対差。
- 平均差 (MD): 連続アウトカムの平均の差。
- 標準化平均差 (SMD): 異なる尺度で測定された研究の統合。
- 効果なしの値: いずれも 0
統計モデル
固定効果モデル (Fixed-effect model)
- 仮定: すべての比較において真の効果が同一。
- 適用: 研究間の差異が偶然誤差のみで説明できる場合。
ランダム効果モデル (Random-effects model)
- 仮定: 各比較の真の効果は、効果の分布からの標本である。
- 適用: 研究間に臨床的・方法論的な多様性がある場合。より一般的に使用される。
- 特徴: ネットワーク全体で共通の研究間分散 (τ²) を仮定。
異質性の評価
NMAにおける異質性は、同一比較内での研究間のばらつきを指します。
- Cochran's Q 検定 (全体): ネットワーク全体の異質性を検定。
- I² 統計量: 研究間の変動のうち、偶然誤差では説明できない割合。
- 0% から 40%: 重要でない可能性がある
- 30% から 60%: 中程度の異質性
- 50% から 90%: 実質的な異質性
- 75% から 100%: かなりの異質性
- τ² (タウ二乗): 研究間分散の推定値。
一貫性の評価
一貫性 (consistency) は、直接比較と間接比較の結果が矛盾しないという仮定です。
- 一貫性の仮定: θ_AC = θ_AB + θ_BC(すべての閉ループで成立)
- Q統計量 (非一貫性): 直接比較と間接比較の不一致を検定。
- 解釈:
- p ≥ 0.05: 一貫性は保たれていると判断
- p < 0.05: 非一貫性の可能性あり、結果の解釈に注意が必要
- 注意: ネットワークにループ構造がない場合、一貫性検定は実施できない。
ネットワークグラフ
- 目的: ネットワーク構造を視覚化し、どの治療間に直接比較のエビデンスがあるかを示す。
- 構成要素:
- ノード (点): 各治療を表す
- エッジ (線): 直接比較が存在する治療ペア
- 線の太さ: 比較に寄与する研究数を反映
- 解釈: 接続されていない治療間は間接比較のみで推定される。ネットワークが切断されている場合、一部の比較は不可能。
フォレストプロット
- 目的: 基準治療に対する各治療の相対効果を視覚化。
- 構成要素:
- 各治療の効果推定値と信頼区間
- 効果なしの線 (垂直線)
- 注意: 「望ましい効果の方向」設定により、ラベルの向きが変わる。
- 小さい値が良い (例: 死亡率): 左側が治療有利
- 大きい値が良い (例: 奏効率): 右側が治療有利
リーグテーブル
- 目的: 全治療ペアの効果量を行列形式で一覧表示。
- 読み方:
- 行の治療 vs 列の治療の効果量を表示
- 対角線には治療名
- 上三角と下三角は逆方向の比較 (逆数関係)
- 色分け:
- 緑色: 統計的に有意 (信頼区間が無効果値を跨がない)
- 灰色: 有意でない (信頼区間が無効果値を跨ぐ)
P-score(治療ランキング)
- 定義: 各治療が他のすべての治療より優れている確率を 0〜100% で表す指標。
- 解釈:
- P-score = 100%: 常に他のすべての治療より優れている
- P-score = 50%: 平均的な効果
- P-score = 0%: 常に他のすべての治療より劣っている
- 「望ましい効果の方向」との関係:
- 小さい値が良い場合: 効果量が小さい治療ほど P-score が高い
- 大きい値が良い場合: 効果量が大きい治療ほど P-score が高い
- 注意: P-score はベイジアンNMAにおける SUCRA の頻度論的代替指標。ランキングの不確実性を考慮し、信頼区間の重複も確認すること。
ファンネルプロット
- 比較調整ファンネルプロット: NMAでは各比較の効果量を比較固有の効果で中心化して表示。
- 目的: 小規模研究効果や報告バイアスの視覚的評価。
- 解釈: 非対称性は報告バイアスを示唆する可能性があるが、真の異質性など他の原因でも生じうる。
実用面
NMAは、複数の治療オプションを比較する必要がある場合に特に有用です。
- 診療ガイドラインにおける治療推奨の根拠
- 医療技術評価 (HTA) における費用対効果分析
- 直接比較試験が存在しない治療間の効果比較
報告には PRISMA-NMA 拡張声明への準拠が推奨されます。
具体例
禁煙治療の有効性を評価するため、12件のランダム化比較試験の結果をNMAで統合します。
比較する治療は、プラセボ、ニコチン補充療法 (NRT)、ブプロピオン、バレニクリンの4種類です。アウトカムは禁煙成功 (イベント) とし、オッズ比を効果指標として選択しました。
ランダム効果モデルで統合した結果:
- バレニクリン vs プラセボ: OR = 3.59 (95% CI: 2.59-4.97)
- ブプロピオン vs プラセボ: OR = 2.16 (95% CI: 1.53-3.03)
- NRT vs プラセボ: OR = 1.88 (95% CI: 1.36-2.59)
I² = 0% で異質性は認められず、一貫性検定も有意ではありませんでした (p = 0.99)。
P-score による治療ランキング (大きい値が良い設定):
- バレニクリン: 99.9%
- ブプロピオン: 60.2%
- NRT: 39.9%
- プラセボ: 0.0%
注意点
NMAを実施・解釈する際の注意点は以下の通りです。
- 推移性の仮定: 間接比較が妥当であるためには、比較される研究間で効果修飾因子の分布が類似している必要があります。
- 一貫性の確認: 非一貫性が検出された場合、直接比較と間接比較のどちらを重視するか慎重に検討してください。
- ネットワーク構造: ネットワークが切断されている場合、一部の比較は不可能です。また、特定の比較にエビデンスが偏っている場合、推定の不確実性が高くなります。
- ランキングの解釈: P-score は点推定値であり、治療間で信頼区間が大きく重複する場合、ランキングの差は臨床的に意味がない可能性があります。
- 望ましい効果の方向: アウトカムの性質に応じて正しく設定してください。死亡率などのネガティブアウトカムでは「小さい値が良い」、奏効率などのポジティブアウトカムでは「大きい値が良い」を選択します。
- エビデンスの質: 各比較に寄与する研究の質と数を考慮してください。間接比較のみに基づく推定は、直接比較がある場合より不確実性が高くなります。
- 報告バイアス: 特に研究数が少ない場合、報告バイアスの可能性を考慮してください。
| 分類内容 | 値 | |
| {{ item.tag }} |
データの取り扱い
- データインポート
- データの読み込みは、ブラウザ内で完結し、外部へのデータ送信は発生しません。
- データ保持
- 読み込んだデータはブラウザ内に保持されます。
- ブラウザのセッションが終了または全てのタブが閉じられると、保持していたデータは自動的に破棄されます。
- データの安全性
- ブラウザがクラッシュした場合でも、10分経過すれば次回の起動時にデータは安全に消去されます。
- 共用のPCでの使用も考慮し、データの外部漏洩のリスクを最小化しています。
クラウド R を利用する時のデータ送信
- 最小限のデータ送信
- 外部のRサーバーへ送信されるデータは、数値計算に必要な最小限のセットに制限されています。
- 送信データは解析に必要なサブセットのみに限られます。
- ユーザーコントロール下のデータ送信
- 送信前に、どのデータが外部サーバーへ送信されるのか内容を確認することが可能です。
- データの送信はユーザーの操作により行われ、自動的な送信は行いません。
- クラウド R 出力結果の保持
- クラウド R からの出力結果は、将来の自動翻訳や自動解説の機能実現のため、サーバーがデータベースに保持します。
- その際に、送信者の情報や、計算元となるデータなど、プライバシーに関わる情報は保持しません。
- 通信経路も全て暗号化していますので、たとえプライバシーに関わる情報が含まれていたとしても、通常は漏洩する恐れはありません。
AI による解説を利用する時のデータ送信
- 最小限のデータ送信
- 外部のAIサーバーへ送信されるデータは、クラウド R の出力結果と、用いた統計手法の徐放です。
- ただし、クラウド R の出力結果に連続した数値データが含まれる場合は、AI にデータ形式を認識させる目的で、連続データの最初の行のみを送信します。
- クラウド R 出力結果の保持
- AI による解説内容は、将来の品質向上などのため、サーバーがデータベースに保持します。
- その際に、送信者の情報や、計算元となるデータなど、プライバシーに関わる情報は保持しません。
Reactive stat において、統計データの変数は、通常の数値や文字列として扱われます。 したがって、日付や時間の概念は直接的にはサポートされていません。
統計計算を行う際には、日付や時間の差分を数値として事前に用意しておく必要があります。
チェックされた行が削除対象となります
削除対象の行
データ入力
AI による R コードの解説
R の出力結果
R出力図形
AI による R 出力結果の解説
- データ: カラム名 (列名) をそのまま記述するか、"列名" のようにダブルクォートで挟んで指定
- 算術演算子: +, -, *, /, ()
- 基本関数: abs(), sqrt(), pow(), exp(), log(), log10()
- 三角関数: sin(), cos(), tan(), asin(), acos(), atan()
- 丸め関数: round(), floor(), ceil()
体重 / pow(身長, 2), "体重" / ("身長" * "身長")
{{ column }}
{{title}}
{{ t("leagueTableDescription") }}
| {{ treat }} | |
|---|---|
| {{ rowTreat }} | {{ rowTreat }} {{ formatCell(rowIdx, colIdx) }} |
- {{ t("readRowVsCol") }}
- {{ t("exampleReading") }}
- {{ t("greenText") }}: {{ t("significantEffect") }}
- {{ t("grayText") }}: {{ t("notSignificantEffect") }}
| {{ t("numberOfTreatments") }}: | {{ nmaResults.network.n_treatments }} |
| {{ t("numberOfStudies") }}: | {{ nmaResults.network.n_studies }} |
| {{ t("referenceTreatment") }}: | {{ nmaResults.network.reference }} |
{{ t("effectsVsReference") }} ({{ nmaResults.network.reference }})
| {{ t("treatment") }} | {{ settings.effectMeasure }} | {{ settings.confidenceLevel }}% CI | P{{ t("value") }} | {{ t("significance") }} |
|---|---|---|---|---|
| {{ treat }} | {{ formatEffect(nmaResults.effects.effect[idx]) }} | [{{ formatEffect(nmaResults.effects.lowerCI[idx]) }}, {{ formatEffect(nmaResults.effects.upperCI[idx]) }}] | {{ formatPValue(nmaResults.effects.pval[idx]) }} | {{ getSignificanceText( nmaResults.effects.lowerCI[idx], nmaResults.effects.upperCI[idx] ) }} |
{{ t("pscoreDescription") }}
| {{ t("rank") }} | {{ t("treatment") }} | P-score | |
|---|---|---|---|
| 1 2 3 {{ idx + 1 }} | {{ item.treatment }} ref | {{ (item.pscore * 100).toFixed(1) }}% |
|
{{ t("pscoreInterpretation") }}
- P-score = 100%: {{ t("pscoreHigh") }}
- P-score = 50%: {{ t("pscoreMid") }}
- P-score = 0%: {{ t("pscoreLow") }}
{{ t("smallValuesNote") }}: {{ settings.smallValues === "desirable" ? t("smallerBetter") : t("largerBetter") }}
{{ t("heterogeneity") }}
| τ² (Tau²): | {{ formatNumber(nmaResults.heterogeneity.tau2, 4) }} |
| I²: | {{ formatNumber(nmaResults.heterogeneity.I2, 1) }}% - {{ getI2Interpretation(nmaResults.heterogeneity.I2) }} |
| Cochran Q: | Q = {{ formatNumber(nmaResults.heterogeneity.Q, 2) }}, df = {{ nmaResults.heterogeneity.df_Q }}, P {{ formatPValue(nmaResults.heterogeneity.pval_Q) }} |
{{ t("consistency") }}
| Q ({{ t("inconsistency") }}): | {{ formatNumber(nmaResults.consistency.Q, 2) }} NA |
| df: | {{ nmaResults.consistency.df !== null ? nmaResults.consistency.df : "NA" }} |
| P{{ t("value") }}: | {{ formatPValue(nmaResults.consistency.pval) }} NA |
{{ t("inconsistencyWarning") }} {{ t("consistencyOk") }}
{{ t("consistencyNote") }}
データ
設定
各研究の各治療アームを1行として入力してください。同じ研究名を持つ行が同一研究内の異なる治療アームとして扱われます。
各研究の各ペア比較を1行として入力してください。3群以上の研究は複数行に分けて入力します。