ネットワークメタ分析の入門
専修大学人間科学部
国里 愛彦
1
メタ分析とは
• 過去の研究を系統的・批判的に収集・検討し
て,量的・統計的に統合する方法
• 組み込む研究の質が高いものなら,一般的に
単体のRCTよりも強いエビデンスとなる
→実施方法が不適切だと誤った結論にもなり得
る危険性もある。
※メタ分析自体は以下の資料を参照ください
https://www.slideshare.net/YoshihikoKunisato/ss-37490113
※本日の解析コードは,以下で公開しております
https://cpp-laboratory.hatenablog.com/ 2
メタ分析の手順
①問題の定式化
②文献検索
③研究の選択・データベース化
④個々の研究のバイアス評価
⑤結果の統合
⑥バイアスの検討
⑦メタ分析の質の評価と解釈
3
治療効果の比較
● 通常のメタ分析は,治療Aと治療Bを比較したRCT
を収集してまとめる(一対比較のメタ分析)
● しかし,3つ以上の治療の比較した試験や,治療A-
B間のRCTと治療A-C間のRCTはあるが,治療B-C
間のRCTは無い状況も
→ネットワークメタ分析は,治療A-BやA-C間の直接
比較だけでなく,治療B-Cのような間接比較をした上
で,治療効果をまとめることができる
A
B C
4
ネットワークメタ分析
ネットワークメタ分
析のメリット
1. 間接比較ができる
2. 間接と直接比較を
統合し,より精度
を高められる
3. 複数の治療が比較
でき,ランク付け
に使える
メタ分析
一対比較
(2治療の比較)
ネットワーク
(3治療以上の
比較)
混合治療比較
(間接と直接の
組み合わせ)
間接治療比較
(間接のみ)
A
B C
A
B C
Sonya et al., 2014 『Network Meta-Analysis』
5
ネットワークメタ分析の動作原理を理解
するために
1. 一対比較の固定効果モデル・ランダム効果モ
デルを用いたベイジアンメタ分析
2. ネットワークメタ分析(間接比較の方法,一
般化線形モデルへの拡張)
3. ネットワークメタ分析をする上での留意点
※ネットワークメタ分析はベイズに限定されないが,
統合的に理解する上ではベイズのほうがスムーズ&
拡張性が高い&解釈しやすい指標を出せる
6
メタ分析の前に・・・効果量
<質的変数>
①リスク差 = 介入群の比率 - 統制群の比率
②NNT(Number needed to treat) = 1/|リスク差|
③リスク比 = 介入群の比率/統制群の比率
④オッズ比 = [介入群の比率/(1-介入群の比率)]/[統
制群の比率/(1-統制群の比率)]
<量的変数>
①平均値差=介入群の平均値-統制群の平均値
②標準化平均値差=(介入群の平均値-統制群の平
均値)/プールされた標準偏差
7
ベイズ統計
事後分布
(Posterior
distribution)
尤度
(Likelihood)
事前分布
(Prior
distribution)
規格化係数
(Normalizing constant)
● 事前分布の設定がベイズ統計では重要
● データがどのように生成されたかモデル化
8
どのソフトを使う?
• 『Network Meta-Analysis for Decision-Making』を
含む医療領域ではWinBUGSを使うことが多い(開
発が終わった枯れた技術だから?)。
• JGASベースのGeMTCという便利なパッケージも
ある。
→今回は,ネットワークメタ分析の原理の理解を
メインにするので,GeMTCなどの使い方は説明し
ない。また,WinBUGSは今さら覚えても...
→今回は,Stanを使います!
9
使用データ
● 『Network Meta-Analysis for Decision-Making』で紹
介されている血栓溶解治療のデータを用いる
(Caldwell et la., 2005のデータ)。7つの治療を比較す
る36個の試験が含まれている。
『Network Meta-Analysis for Decision-Making』の2章
10
使用データ(一対比較用)
● 血栓溶解治療のデータ(Caldwell et la., 2005)のうち,
ACC t-PA(治療0,controlにする)とPTCA(治療1)を比較
した11の試験。
r[,1] n[,1] r[,2] n[,2] #Study year
3 55 1 55 #Ribichini 1996
10 94 3 95 #Garcia 1997
40 573 32 565 #GUSTO-2 1997
5 75 5 75 #Vermeer 1999
5 69 3 71 #Schomig 2000
『Network Meta-Analysis for Decision-Making』のデータ
r = 死者数
n = 試験の参加患者数
# Study = 研究者名
year =研究発表年
※ベースになる治療は
0とコード化
11
固定効果モデル
● 固定効果モデル(fixed-
effect model):1つの真
の介入効果を仮定して
おり,偶然誤差の影響
によって個々の研究結
果がばらつくとするモ
デル
yi=θ+ei
● 試験iにおける効果(yi)は,全体の平均の効果(θ)と誤差
(ei)からなる
→各試験の結果は,θを平均とした正規分布から生成さ
れるという非階層モデル
Study 3: y3 = θ + e3
e3
12
データの生成過程(モデル)
● 死亡数のデータ生成過程は,二項分布(生存・死
亡などの2値データにおいて,n回の独立な試行
を行った時の片方が発生する数の分布)によって
表現できる
● Stanだと以下のbinomial()が使える
rik ~ binomial(nik,pik)
※r = 死亡数,n = 合計患者数,p = 死亡率,i=試験
の番号, k = 治療群(arm)の番号
13
データの生成過程(モデル)
● 死亡率(pik)は確率なので,0~1でないといけない。
● 下右辺のような線形モデルからpikを直接予測せず,
-∞~∞をとるロジット変換したlogit(pik)を予測する。
つまり,リンク関数はロジット変換。
logit(pik) = μi+d1k
※ pik=試験iの治療kの確率, μi= 試験iのベースライン
の効果(つまり治療0の効果),d1k=治療を基準とした
時の治療1の相対効果(dの添字は比較する治療群)
14
データの生成過程(モデル)
● まとめ:線形モデルをロジット変換して,二項分
布から死亡数を生成するモデルを使う
logit(pik) = μi+d1k
rik ~ binomial(nik,pik)
● なお,pikを出すにはロジット変換の逆変換が必要
だが,Stanだと逆ロジット変換した上で二項分布
が使えるbinomial_logit()もある(1行で済む&コー
ディングが大変楽になる)。
rik~binomial_logit(nik,μi+d1k) 15
Stanコードへ
data{
int ld; // length of data
int nt; // number of treatment
int ns; // number of study
int study[ld]; // vector of the study id
int treatment[ld]; //vector of the treatment id
int dead[ld]; // vector of the number of dead
int sampleSize[ld]; // vector of the number of patient
}
parameters{
real d01;
real mu[ns];
}
r[ , ]やn[ , ]などの行列形式は,ネッ
トワークメタ分析に拡張した時に,
やや面倒になるので,今回は,各変
数を1列のベクターにしている
(long形式にしたものの各列を読み
込む感じです)
推定するパラメータは,mu(各研究におけ
るベースライン=各研究での治療0の効果)
とd01(治療0と治療1の差=治療0を基準と
したときの治療1の相対効果)
16
Stanコードへ
model{
for(i in 1:ld){
if(treatment[i]==0){
dead[i] ~ binomial_logit(sampleSize[i],mu[study[i]]);
}else{
dead[i] ~ binomial_logit(sampleSize[i],mu[study[i]]+d01);
}
}
# prior
d01~normal(0,10000);
mu~normal(0,10000);
}
死者数が,binomial_logit(試験の参加人数,
死亡確率を構成する式)から生成
・治療0は,その試験のmuのみ
・治療1は,その試験のmu + d01
d12とmuの事前分布としては,幅のひろー
い正規分布
スライドからは割愛したが,modelブロッ
クの下のgenerated quantities(生成量)ブ
ロックでは,d01からオッズ比(exp(d01)
で計算)や有害の確率,モデル比較用の対
数尤度を計算
17
推定結果
Mean SD 2.5% 97.5%
d01 -0.2332 0.1182 -0.4668 -0.0019
オッズ比 0.7975 0.0946 0.6270 0.9981
有害となる確率 0.0243 0.1540 0.0000 0.0000
推定は収束し,
教科書とほぼ一致
死亡に関して,ACC t-PAを基
準にした時のPTCAのオッズ
比は0.798[0.627 0.998]
→PTCAの方が死亡率が低い
18
ランダム効果モデル
● ランダム効果モデル
(random -effect model):
研究ごとに真の介入効果
を仮定し,偶然誤差と研
究間の効果の差によって,
個々の研究結果がばらつ
くとするモデル
yi=θ+deltai+ei
● 試験iにおける効果(yi)は,全体の平均の効果(θ)と試験i固
有の効果の違い(si)と誤差(ei)からなる。
→さきほどの,Stanコードだと,deltai ~ nomal(θ, sd)と
なり,θはその治療の平均的な相対効果,sdは異質性に
対応する(今回の発表はランダム効果モデルは割愛)
Study 1: y1 = θ + delta1+ e1
e1
θ
delta1
19
ネットワークメタ分析の原理
● ネットワークメタ分析では,3群以上の比較と間
接比較が可能になる。
● 2~3群比較をしている臨床試験をあつめて,ネッ
トワークを作成する(なお,右図の実線は直接比
較,点線は間接比較)。
A B
A C
A D
A
B
C
D
B C
20
ネットワークメタ分析の原理
● ネットワークメタ分析の基本は効果の
引き算
● Bと比べた時のCの真の効果δBCは,
dBCを平均,σ2
BCを分散とした正規分
布から生成される
δBC~Normal(dBC,σ2
BC)
● 平均(引き算)と分散
dBC=dAC-dAB; σ2
BC=σ2
AB+σ2
AC-2ρBCσABσAC
※基本的にσ2は,治療間で均質と考える
A
B C
dAB dAC
dBC
Lu & Ades, 2009
21
ネットワークメタ分析での仮定
● 同質性(Homogeneity): 同じ比較をおこなっている
研究間で効果に意味のある違いはないこと
● 類似性(Similarity,Transitivity): ネットワーク内の試
験は,患者の属性,デザイン,アウトカムなどの
ような重要な要因が類似していること
→間接比較したときに,その効果は治療によるものと
推定できること
● 一貫性(Consistency):直接比較と間接比較の知見が
一貫していること
Sonya et al., 2014 『Network Meta-Analysis』
22
使用データ(ネットワークメタ分析用)
● 7つの治療薬について検討した36試験からなる血栓溶
解薬のデータ(Caldwell et la., 2005)
● na[ ]はアーム数,t[ ]は治療ID,r[ ]は死者数,n[ ]は試験
の参加患者数,# Study = 研究者名,year =研究発表年
→Stanだとちょっとこの行列の扱い(というか欠測値)の扱
いがやりにくいので,各変数を列にしたlong型へ
na[] t[,1] t[,2] t[,3] r[,1] n[,1] r[,2] n[,2] r[,3] n[,3] #study year
3 1 3 4 1472 20251 652 10396 723 10374 #GUST
O-1
1993
2 1 2 NA 3 65 3 64 NA NA #ECSG 1985
2 1 2 NA 12 159 7 157 NA NA #TIMI-1 1987
2 1 2 NA 7 85 4 86 NA NA #PAIM
S
1989
『Network Meta-Analysis for Decision-Making』のデータ
23
推定のイメージ
1. リファレンス(SK)のベースライ
ンに対する相対効果dは0に設定
2. リファレンスと直接比較してい
る試験を使って,それらのdを
推定する
3. リファレンスとの直接比較の推
定値を使って,リファレンスが
含まれない試験についても,直
接比較の推定値を活用して推定
する
※一貫性の検討をする場合のため
にもデータの順番は意識する
ベースライン 比較 推定方法
SK PTCA 直接 d[6]
SK t-PA 直接 d[1]
SK Acc t-PA 直接 d[2]
...
t-PA PTCA 間接 d[2]-d[4]
Acc t-PA TNK 間接 d[5]-d[2]
24
Stanコードへ
data{
int ld; // length of data
int nct; // number of compared treatment
int ns; // number of study
int study[ld]; // vector of the study id
int treatment[ld]; // vector of the treatment id
int dead[ld]; // vector of the number of dead
int sampleSize[ld]; // vector of the number of patient
int baseline[ld]; // vector of baseline treatment each study
}
parameters{
real d[nct];
real mu[ns];
}
各変数を1列のベクターにしている
(long形式にしたものの各列を読み
込む感じ)
なお,treatmentでリファレンス治療
SKは,0とコードした
推定するパラメータは,
mu(各研究におけるベースラインの効果)と
d[nct](リファレンスに対する6つの治療の
相対効果) 25
model{
for(i in 1:ld){
if(baseline[i]==0){
if(treatment[i]==0){
dead[i] ~ binomial_logit(sampleSize[i],mu[study[i]]);
}else{
dead[i] ~ binomial_logit(sampleSize[i],mu[study[i]]+d[treatment[i]]);
}
}else{
if(baseline[i]==treatment[i]){
dead[i] ~ binomial_logit(sampleSize[i],mu[study[i]]);
}else{
dead[i] ~ binomial_logit(sampleSize[i],mu[study[i]]+d[treatment[i]]-d[baseline[i]]);
}
}
}
# prior
d~normal(0,10000);
mu~normal(0,10000);
}
リファレンス(SK)との比較の場合:
・リファレンス治療の死亡率は,各試験のmuから生成
・それ以外の治療の死亡率は,mu(リファレンスの効果)
+ d(各研究の相対効果)から生成
試験のベースラインがリファレンス(SK)以外の場合:
・試験のベースラインの死亡率は,muから生成
・他の治療の死亡率は,mu(各試験のベースラインの効
果) + d(各治療のリファレンスに対する相対効果) - d(リフ
ァレンスに対するベースライン治療の相対効果)から生成
例) TNKの相対効果のd(Acc t-PA→TNK)は,d(SK→TNK)
からd(SK→Acc t-PA)を引いたもの 26
推定結果
● 推定は収束し,教科書と同様の結果になった。
● リファレンス(SK)に対する,各治療の相対効果(d)
をみると,SKとは直接比較していない,TNKの効
果(d[5])も推定されている!
mean se_mea
n
sd 2.50% 97.50% n_eff Rhat
d[1] -0.0032 0.0002 0.0304 -0.0627 0.0562 23842 0.9998
d[2] -0.1567 0.0003 0.0434 -0.2418 -0.0729 21865 1.0001
d[3] -0.043 0.0003 0.0465 -0.1334 0.0465 28616 1
d[4] -0.1106 0.0004 0.0601 -0.2289 0.0053 23642 1
d[5] -0.1517 0.0005 0.0763 -0.3028 -0.0022 22117 1
d[6] -0.4746 0.0006 0.0998 -0.672 -0.2797 23850 0.9999
27
● 生成量を使って,
可能性のある組み
合わせすべてのオ
ッズ比を出す(リ
ファレンスの効果
を仮定できれば,
リスク差,NNTも
出せる)
● 間接比較はできる
が,直接比較は
Acc t-PAとだけの
TNKの組み合わせ
は確信区間広め
28
一対比較とネットワークメタ分析の比較
● 一対比較の固定効
果モデルにおける
オッズ比の推定値
(赤)より,固定
効果ネットワーク
メタ分析のオッズ
比の方が事後分布
の幅が狭い
→間接効果も考慮す
ることで精度が向
上!
pair mean 2.50% 97.50%
Pairwise Acc t-PA
vs PTCA
0.7967 0.6257 0.9974
Network Acc t-PA
vs PTCA
0.7311 0.601 0.8796
29
ランキングの計算
● 生成量を使って,ランキングの計算もできる。
● MCMCサンプリングの1回のサンプリングのサン
プル(リファレンスはd0に0を代入して追加)でラ
ンク付けをして,順位のところに1を返すことを
サンプル数分繰り返す(平均すると特定の順位の
確率が計算できる)。
30
治療ランキングのプロット
→PTCAが1位!
31
Multi-Arm試験の場合
● Multi-Armの試験は,Arm間の治療効果に相関があ
るので,それを調整する。
● 以下のように,多変量正規分布を考える
● WinBUGSでは代数表現できない(らしい)ので,
以下の式にすることもできる(らしい)
32
モデルフィット
● 解析結果からの予測がデータと適合しているか検
討する必要がある。MCMCのサンプルごとの尤度
を基に以下が算出できる。
①逸脱度の事後平均(-2*モデルの尤度):小さいほど良
く適合。モデル適合の検討に使える
②残差逸脱度(モデルの逸脱度の事後平均 - 飽和モ
デルの逸脱度の事後平均):小さいほど良く適合。モ
デル比較の検討に使える
③DIC(逸脱度の事後平均+有効パラメータ数):小さ
いほどよく適合。モデル比較の検討に使える。
『Network Meta-Analysis for Decision-Making』
33
モデルフィット
④Leverage plot(個々のデータ
がモデルパラメータに影響す
る程度を可視化):x軸に残差逸
脱度,y軸にLeverage,半円は
『Network Meta-Analysis for Decision-Making』
● 『Network Meta-Analysis for Decision-Making』はDIC推
し。しかし,DICは統計モデルが真の分布を含みかつ事後
分布が厳密に正規分布の場合に使える。そうでない場合
は,渡辺先生のWAICが良い。WAICはStanで尤度の計算
をしておけばlooパッケージなどで算出できる
http://watanabe-www.math.dis.titech.ac.jp/users/swatanab/waic2011.html
DICへの影響性も表している(DIC=3より外は適合悪い)
34
一般化線形モデルによる拡張
● データを生成する確率分布と線形モデルをパラメー
タに合わせるリンク関数を変えれば様々なデータに
拡張が可能(例. 単位時間あたりのイベント発生数だとポ
アソン分布&Logリンク関数,連続変数を正規分布など)
● 線形モデルは以下を使う
固定効果:g(γ) = θik = μi + dt_i1,t_ik
ランダム効果:g(γ) = θik = μi + δik; δik~normal(dt_i1,t_ik,σ2)
※iはtrial番号,kはArm番号,g()はリンク関数,γがパラメータ,
θは線形予測子,μiはtrial iのArm 1に特有の効果, dt_i1,t_ikは,
trial iのArm 1に対するArm kの効果,ランダム効果では,平均d,
標準偏差σ2の正規分布からδが生成 35
一般化線形モデルによる拡張手順
1. ランダム効果か固定効果か選択(その汎用コードを選
ぶ)
2. データ生成プロセスを最も記述する確率分布を選
ぶ(汎用コードを選んだ確率分布に合わせて変更)
3. 線形予測子とパラメータをつなぐリンク関数を選
択(汎用コードにリンク関数を追加)
4. ランダム効果モデルは,研究間の標準偏差につい
ての適切な事前分布を選ぶ(Gelman priorを参照。汎用
コードに事前分布を追加)
5. 生成量を利用するコードの追加(モデル適合のための
対数尤度,オッズ比などの適切な尺度で相対効果,NNTな
どの絶対効果などを計算コードを追加)
『Network Meta-Analysis for Decision-Making』をStan用アレンジ
36
非一貫性と異質性
● 右図の場合,直接効果A-BとA-Cから得
た間接効果B-Cが,直接効果BCと不一
致した場合が非一貫性の例
→トライアングルが単位となる(非一貫
性の自由度:ノードの数-(治療数-1))
A
B
C
D
● 非一貫性:同じ比較における直接効果と間接効果
間の不一致
● 異質性:同じ比較内での推定値の変動のしやすさ
→非一貫性は,ネットワーク構造に関連した異質性
の一種ともいえる
37
Local Inconsisitency
● 直接効果と間接効果の差が0と帰無仮説と
するZ検定を実施(|Z|>1.96で5%水準で有
意な非一貫性)
● 全体を評価する場合は,Bucher法の反復,
Node-splitting(特定ノードを直接比較のみの事
後分布と残りの全ての間接比較の事後分布に分け
て推定し比較し,ベイジアンp値を算出)など
A
B
C
D
● Bucher法:(1)一対比較メタ分析を実施(直接効果),
(2)間接効果を計算して,以下の指標を計算
38
Global Inconsistency
● Local Inconsistencyを全体に適用する方法では,複
雑なネットワークは大変・・・
● 一貫性を仮定しないモデル(Unrelated mean
effects model; 間接効果は推定せず,それぞれの比
較を独立に行う)を作成して,一貫性を仮定するネ
ットワークメタ分析のモデルと比較して検討
● 2つのモデルで推定値に大きな差はないか,モデ
ル比較から一貫性の仮定が妥当かを検討する
39
まとめ
● ネットワークメタ分析は,3群以上の比較を可能
する手法であり,同質性,類似性,一貫性が仮定
されている。
● 一対比較のベイジアンメタ分析からまず理解を深
めるとわかりやすい。
● ネットワークメタ分析の原理は,引き算になる。
● 一般化線形モデルを使って様々なデータに適応可
能になる。
● ネットワーク構造をしっかり把握することが大切
になり,非一貫性に注意する。
40
おまけ:Dockerで解析環境を再現!
● Stanなどの複雑なソフトを使っていると,データ
と解析コードが共有されていても解析がうまく再現
できなことが・・・データと解析コードだけでなく,
解析環境自体の共有も重要!
→コンテナ型の仮想環境を提供するDockerが便利!
→以下にネットワークメタ分析を行う場合に使うパッ
ケージ(rstan,rjags,rjagsのGeMTCなど)を含んだ
Dockerファイルを置いています(DL時間を除けは数
分で解析開始できます)。
https://hub.docker.com/r/ykunisato/netmeta-r/ 41
参考文献
● 『Network Meta‐Analysis for Decision Making』(Dias,
S.他 著 John Wiley & Sons Ltd., 2018年)
ほとんどこの本を基に作成した。
● 『Network Meta-Analysis: Evidence Synthesis With
Mixed Treatment Comparison』(Biondi-Zoccai, G編
Nova Science Pub Inc, 2014年)
応用例もありわかりやすくまとまっている。
● 『Meta-Analysis with R』(Schwarzer, G他編, Springer,
2015年)
ネットワークメタ分析のRパッケージが紹介されている42

ネットワークメタ分析入門