統計ER

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

フォレストプロットの書き方 R の方法

メタアナリシスのフォレストプロットの書き方の解説

R の metafor パッケージを使う方法

>>もう統計で悩むのを終わりにしませんか?


↑1万人以上の医療従事者が購読中

フォレストプロットの書き方 統合値の計算

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)。

REML については、以下を参照。

toukeier.hatenablog.com

R のスクリプトは以下の通り。

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)

フォレストプロットの書き方 R の方法

R スクリプトは以下のようにとても単純だ。

forest(res.reml)

デフォルトはこうなる。

>>もう統計で悩むのを終わりにしませんか?


↑1万人以上の医療従事者が購読中

フォレストプロットの書き方 真数の表示で対数目盛りにする方法

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を表示するという指示だ。

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

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

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

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

フォレストプロットの書き方 推定値の順番に並べ替える方法

点推定値の順番に並べるには、order="obs" の指定を追加する。

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

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

そうすると、点推定値が小さい(左)研究から大きい(右)研究の順に並び変わった。

フォレストプロットの書き方 分散が小さい順に並べる方法

分散が小さい研究から大きい研究の順番に並びかける 指定はorder="prec"。

precはprecision(精度)の略と思われる。

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

すると、このように描画される。

まとめ

R の metafor パッケージ中の関数 forest() を使って、メタアナリシスのフォレストプロットを書く方法を解説した。

参考になれば。