統計ER

R, EZR, SPSS, KH Coder を使ったデータ分析方法を紹介するブログ。ニッチな内容が多め

メタアナリシスのグラフ―フォレストプロットはどう描く?

メタアナリシスをまとめるときに、 必ず登場するのがフォレストプロット(forest plot)。

個々の研究の結果と、 統合した結果を一度に描いたグラフ。

フォレストプロットが簡単にきれいに描けるのが、 統計ソフトRのmetaforパッケージだ。

フォレストプロットを簡単に描くにはまず統合値の計算

metaforパッケージを使う。

最初一回だけインストールする。

install.packages("metafor")

使用するデータは以下の通り。

a <- c(3,7,5,102,28,4,98,60,25,138,64,45,9,57,25,65,17)
n1 <- c(38,114,69,1533,355,59,945,632,278,1916,873,263,291,858,154,1195,298)
c <- c(3,14,11,127,27,6,152,48,37,188,52,47,16,45,31,62,34)
n0 <- c(39,116,93,1520,365,52,939,471,282,1921,583,266,293,883,147,1200,309)

dat <- data.frame(a,n1,c,n0)

metaforパッケージを呼び出す。

escalc()で個々の研究の推定値estimate; yiと 分散variance; viを計算する。

measure=で指標を指定。今回のデータはオッズ比。

rma.uni()で統合オッズ比を計算する。

統合する方法は制限付き最尤推定量(REML)。

toukeier.hatenablog.com

library(metafor)

dat.escalc <- escalc(measure="OR", ai=a, n1i=n1, ci=c, n2i=n0, data=dat)

res.reml <- rma.uni(yi, vi, method="REML", data=dat.escalc)

フォレストプロットを描いてみる

デフォルトはこうなる。

forest(res.reml)

f:id:toukeier:20200920211812p:plain

真数の表示で対数目盛りにする方法

X軸(横軸)の値を対数から真数に変更するには atransf=expと指定する。

atransf=expは、数値は真数だが、目盛りは対数とする指定。

at=でX軸の目盛りのラベルを規定する。 0.05, 0.25, 1, 4, 20の5つの値を表示するように指示している。

0.05, 0.25, 1, 4, 20の対数の位置に、0.05, 0.25, 1, 4, 20を表示する という指示だ。

グラフを見てみると、 数値は真数のオッズ比0.05, 0.25, 1, 4, 20だが、 間隔は対数になっている。

0.05と20、0.25と4がそれぞれ1から同じ距離だ。

目盛り(距離)は対数で、目盛りに書いてある数値は真数ということだ。

とても便利な機能。

forest(res.reml, atransf=exp, at=log(c(.05,.25,1,4,20)))

f:id:toukeier:20200920211944p:plain

推定値の順番に並べ替える方法

order="obs"の指定を追加した。

obsはobserved effect size(観察された効果の大きさ)の略語。

forest(res.reml, atransf=exp, at=log(c(.05,.25,1,4,20)), order="obs")

f:id:toukeier:20200920212027p:plain

分散が小さい順に並べる方法

指定はorder="prec"。

precはprecision(精度)の略じゃないかな?

forest(res.reml, atransf=exp, at=log(c(.05,.25,1,4,20)), order="prec")

f:id:toukeier:20200920212049p:plain

まとめ

統計ソフトRのmetaforパッケージ中の関数 forest() を使って、 メタアナリシスのフォレストプロットを描いてみた。

すごく簡単にきれいなフォレストプロットが描けるので、 ぜひ試してみてほしい。