メタ分析
Yoshihiko Baba
2021/8/13
メタ分析
メタ分析 (meta-analysis) とは、複数の研究の結果を統合 (pool) し分析すること、またはそのための手法や統計解析のことです。 システマティックレビューで文献をくまなく探し、その結果をメタ分析することが典型的な方法です。
メタ分析については、R には多くのパッケージがあり、公式サイト中にも Michael Dewey によるメタ分析のパッケージの紹介ページがあります。
https://cran.r-project.org/web/views/MetaAnalysis.html
また、Minds 診療ガイドライン作成マニュアル2020 ver. 3.0 には、複数の事例とサンプルコードが解説されています。
R以外のソフトウェアとしては、メタ分析を推奨している Cochrane から RevMan をいうソフトウェアを無償で提供しています。
メタ分析は、参照する文献が用いている統計手法によって違いが出てきます。
- システマティックレビューによって抽出された論文からデータを取得する
- データがない場合は、コレスポンディングオーサーにデータを請求する
- 固定効果、ランダム効果を選択する、あるいは weight を計算する
- データを統合 (pool) する
- 異質性 (heterogeneity) を検証する
- 出版バイアスを検証する
これを一度に行ってくれるのが meta
ライブラリです。 メタ分析は、対象となる統計手法に応じて統合 (pool) 方法も変わります。 meta
は、以下のような関数を提供しています。
- metacont: 2群の連続変数
- metabin: 2群の2値変数
- metainc: 2群の発症 (incidence) 率
- metacor: 相関係数 (1群)
- metamean: 平均値 (1群)
- metaprop: proportion (1群) 引数 event(イベント数) と n(観察数)
- metarate: 発症 (incidence) 率 (1群) 引数 event(イベント数)と person time
比率 (proportion) のメタ分析
実際の論文をもとに、比率 (proportion) のメタ分析を行ってみましょう。 ここで、比率 (proportion) とは、ある母集団に対して特定の特徴を持った人の比率です。
なお、rate と proportion の用語は、ここでは深入りしません。
Abate SM, Ahmed Ali S, Mantfardo B, & Basu B (2020). Rate of Intensive Care Unit admission and outcomes among patients with coronavirus: A systematic review and Meta-analysis. PloS one, 15(7), e0235653. https://doi.org/10.1371/journal.pone.0235653
コロナウィルス感染患者の ICU admission のデータです。
library(readr)
dfMeta <- read_csv("https://ndownloader.figshare.com/files/23167073")
##
## ─ Column specification ────────────────────────────
## cols(
## Author = col_character(),
## year = col_double(),
## event = col_double(),
## sample = col_double(),
## country = col_character(),
## corona = col_character(),
## `Study design` = col_character()
## )
dfMeta <- na.omit(dfMeta)
関数
- na.omit: NA のある行を削除する。
元データの最後の行は空データで、おそらく元々は統合データを格納するために準備してあったと思われます。 この行は不要なので、NA データのある行を削除しました。
R では、データの入っていないことを表す手段が複数あります。NULL や NA です。NA などがあるとエラーが出やすくなります。
meta
ライブラリの metaprop 関数を使います。
library(meta)
## Loading 'meta' package (version 4.18-2).
## Type 'help(meta)' for a brief overview.
mpResult <- metaprop(data = dfMeta,
event = event,
n = sample,
studlab = paste(Author, year))
関数
- paste: 文字列をつなげる。文字列間 (sep) にはデフォルトで空白が追加される。 ここでは、Author と year を空白でつなげている。
変数と引数
- mpResult は、metaprop の結果を格納します。MetaProp から mp をとって mpResult と命名しました。
- 引数 data は、データフレーム dfMeta としました。
- 引数 event は、データフレーム中の event (イベント数) 列を指定しました
- 引数 n は、データフレーム中の sample (観測数) 列を指定しました
- 引数 studlab は、データフレーム中の Author (著者) 列と year (発行年) をつなげたものを指定しました
結果を見て見ます。
mpResult
## proportion 95%-CI
## Liu et al 2020 0.1410 [0.0726; 0.2383]
## Xu et al 2020 0.0323 [0.0039; 0.1117]
## Cao et al 2020 0.1765 [0.1081; 0.2645]
## Chen et al 2005 0.4925 [0.3682; 0.6176]
## Chen et al 2020 0.2323 [0.1533; 0.3279]
## Chan et al 2003 0.3391 [0.2535; 0.4333]
## Chen et al 2020 0.0884 [0.0562; 0.1307]
## Choi et al 2003 0.2584 [0.2070; 0.3153]
## Du et al 2020 0.4679 [0.3717; 0.5659]
## Guan et al 2020 0.0500 [0.0379; 0.0646]
## Guan et al 2020 0.0623 [0.0509; 0.0753]
## Huang et al 2020 0.3171 [0.1808; 0.4809]
## Lei et al 2020 0.4412 [0.2719; 0.6211]
## Ling et al 2020 0.1633 [0.0732; 0.2966]
## Pan et al 2020 0.0784 [0.0455; 0.1242]
## Wang et al 2020 0.2609 [0.1899; 0.3424]
## Wu et al 2020 0.2637 [0.2042; 0.3303]
## Yang et al 2020 0.0732 [0.0552; 0.0949]
## Zhou et al 2020 0.7800 [0.6404; 0.8847]
## Grasselli et al 2020 0.8033 [0.7829; 0.8225]
## Zangrillo et al 2020 0.1041 [0.0825; 0.1292]
## Lodigiania et al 2020 0.1598 [0.1248; 0.2001]
## Ghaleb et al 2016 0.8519 [0.6627; 0.9581]
## Fahad et al 2016 0.6250 [0.2449; 0.9148]
## Halim et al 2016 0.4375 [0.2636; 0.6234]
## Garbati et al 2016 0.1739 [0.0495; 0.3878]
## Ghamdi et al 2016 0.3725 [0.2413; 0.5192]
## Saad et al 2014 0.7000 [0.5787; 0.8038]
## Yaseen et al 2014 0.8333 [0.5159; 0.9791]
## Lew et al 2003 0.2312 [0.1745; 0.2960]
## Young et al 2020 0.1111 [0.0138; 0.3471]
## Docherty et al 2020 0.1491 [0.1442; 0.1541]
## Arentz et al 2020 0.8095 [0.5809; 0.9455]
## Bialek et al 2020 0.2382 [0.2018; 0.2777]
## Petrilli, et al 2020 0.4407 [0.4102; 0.4715]
## Richardson et al 2020 0.1416 [0.1285; 0.1555]
## Bhatraju et al 2020 0.5000 [0.2912; 0.7088]
##
## Number of studies combined: k = 37
##
## proportion 95%-CI
## Fixed effect model 0.1900 [0.1858; 0.1943]
## Random effects model 0.2834 [0.2057; 0.3765]
##
## Quantifying heterogeneity:
## tau^2 = 1.6165; tau = 1.2714; I^2 = 99.0% [98.8%; 99.1%]; H = 9.83 [9.26; 10.44]
##
## Test of heterogeneity:
## Q d.f. p-value Test
## 3481.43 36 0 Wald-type
## 4446.74 36 0 Likelihood-Ratio
##
## Details on meta-analytical method:
## - Random intercept logistic regression model
## - Maximum-likelihood estimator for tau^2
## - Logit transformation
## - Clopper-Pearson confidence interval for individual studies
結果においては、異質性 (heterogeneity) 検定の結果が示されています。 Q, \(\tau^2\), \(I^2\) などが異質性の指標です。
- \(I^2\): 0 〜40%(重要でない異質性),30 〜60%(中等度の異質性),50 〜90%(大きな異質性),75 〜100%(高度の異質性)
forest(mpResult)
あまり美しくないので、別のライブラリを試して見ます。
出版バイアス Harbord’s test
これまで、研究はポジティブな結果が出た時に発表される傾向がありました。これはメタ分析を行う際にはバイアスとなってしまいます。これを出版バイアスと言います。多くの論文では、ファンネルプロットを作成して、視覚的に出版バイアスがあるかどうかを確認するに止まります。
しかしながら、出版バイアスを検証する統計もあります。ここでは、実際の論文を用いて検定してみましょう。
Shigemura T, Baba Y, Murata Y, Yamamoto Y, Shiratani Y, Hamano H, & Wada Y (2020) Is a portable accelerometer-based navigation system useful in total hip arthroplasty?: A systematic review and meta-analysis. Orthopaedics & Traumatology: Surgery & Research.
ライブラリ meta
にもありますが、対象となるのが2値変数のみのようです。 そこで、より基本的で広範囲に適用可能な metafor
で行ってみます。 metafor
ライブラリは、R におけるメタ分析の基本的なライブラリで、他のメタ分析ライブラリは内部で metafor
をインポートしているようです。
meta
がイベント数などを指定するのに対し、metafor
は、平均値と標準偏差を指定します。
dfHarbord <- read.table(text = "study,M1,SD1,N1,M2,SD2,N2,weight
Hayashi,2.7,2.2,63,4.8,3.6,30,0.147
Tanino,2.8,2.3,115,3.7,2.7,106,0.315
Okamoto,6,4.5,55,9,6.8,55,0.75
Hayashi,2.7,2.2,63,4.8,3.6,30,0.147
Tanino,2.8,2.3,115,3.7,2.7,106,0.315", header = TRUE, sep=",")
library(metafor)
rmaResult <- rma(m1i=M1,
sd1i=SD1,
n1i=N1,
m2i=M2,
sd2i=SD2,
n2i=N2,
data=dfHarbord,
measure="MD")
rmaResult
##
## Random-Effects Model (k = 5; tau^2 estimator: REML)
##
## tau^2 (estimated amount of total heterogeneity): 0.2737 (SE = 0.4106)
## tau (square root of estimated tau^2 value): 0.5232
## I^2 (total heterogeneity / total variability): 50.58%
## H^2 (total variability / sampling variability): 2.02
##
## Test for Heterogeneity:
## Q(df = 4) = 7.4304, p-val = 0.1148
##
## Model Results:
##
## estimate se zval pval ci.lb ci.ub
## -1.4351 0.3455 -4.1541 <.0001 -2.1122 -0.7580 ***
##
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
- \(\tau^2\) = 0.6537 (論文中では 0.67)
- Q (\(\chi^2\)) = 5.0201 (論文中では 5.02、Qとchi2は同じものです。)
- Qのp値 = 0.0813 (論文中では 0.08)
- \(I^2\) = 59.59% (論文中では 60%)
以上、\(\tau^2\) 値が少し異なりますが、おおむね同じ結果かと思います。
ファンネルプロットを描いてみます。
funnel(rmaResult)
regtest(rmaResult)
##
## Regression Test for Funnel Plot Asymmetry
##
## Model: mixed-effects meta-regression model
## Predictor: standard error
##
## Test for Funnel Plot Asymmetry: z = -2.7169, p = 0.0066
## Limit Estimate (as sei -> 0): b = 0.1011 (CI: -0.9197, 1.1218)
これに対し、Harbord検定を行ったところ、
- z = -2.2331,
- p = 0.0255
となり、出版バイアスが考えられます。