Excelファイルをドラグアンドドロップでメタアナリシスを実行するウェブページ

メタアナリシスのためのデータをExcelで用意し、そのファイルをドラグアンドドロップすると、メタアナリシスを実行し、Forest plotとFunnel plotを作成するウェブページを作りました。

解析はJavaScriptで作成したコードで行っており、MathライブラリとjStatライブラリを用いています。インターフェース関連でjQueryも用いています。

メタアナリシスはInverse-variance method分散逆数法、ランダム効果モデルによる方法で、研究間の分散はRestricted Maximum Likelihood (REML)法(Viechtbauer W 2005)を用いています。

ExcelシートはMindsのテンプレートをそのまま用いて、データを入力します。図1は介入研究用(RoB2)の例です。介入、対照、アウトカムの欄にはデータを入力する必要があります。さらに、研究コード、リスク人数と書いてあるデータの部分、そして効果指標のタイプは設定する必要があります。

図1. Mindsの評価シート(介入研究RoB2用)。この例では、メタアナリシスの結果のデータも入力済み。

必要なデータを入力したらファイルを保存します。

ブラウザで次のウェブページを開いてください。Meta-analysis IZ mi

図2.Meta-analysis IZ miのウェブページ。

右の円が描かれているエリアにExcelのファイルをドラグアンドドロップすると、すぐ上のドロップダウンメニューにシート名の一覧が表示されるので、メタアナリシスの対象のシートを選択し、その左のDo Meta-analysisのボタンをクリックしてください。Forest plotとFunnel plotが表示されます。また、結果の数値データが上のテキストエリアに書き込まれます。

Do Meta-analysisの実行直後は、各研究の効果指標と95%信頼区間、統合値と95%信頼区間の値がクリップボードに格納されているので、Excelシートの効果指標(値)のセルに貼り付けることができます。図1の例であれば、セルU12を選択して貼り付けます。

Forest plotとFunnel plotは右クリックして保存したり、コピーして貼り付けたりできます。数値データは必要に応じて、Copy to Clipboardボタンをクリックして、クリップボード経由でExcelシートに貼り付けられます。

図3.Meta-analysis IZ izのメタアナリシス実行結果。

Meta-analysis IZ miはRoB2用のシートだけでなく、それ以外のシートにも対応しています。効果指標のタイプは、二値変数アウトカムのRR, OR, RD、ハザード比HR、連続変数アウトカムのMD, SMDに対応しています。評価シートの効果指標(種類)でタイプを設定してください。

使用法の解説動画はこちらです (YouTube Link)。

ここで紹介した、Mindsの評価シートに対応しているのが、Meta-analysis IZ miですが、メタアナリシスだけで十分な場合は、別のフォーマットでExcelファイルを用意してMeta-analysis IZ izを使うこともできます。こちらは、REML法とDerSimonian-Laird法の指定ができます。

サンプルデータを入力したMindsの評価シートのファイルとMeta-analysis IZ iz用のサンプルデータを入力したファイルはこちらでダウンロードできます。右クリックして保存してから使用してください。

minds-sample-rob2.xlsx
iz-meta-sample.xlsx

メタアナリシスの際に用いている計算式について詳細を知りたい人は、Deeks J and Higgins JPT 2010を参照してください。この解説の時点では、研究間の分散の計算はDerSimonian-Laird法を用いていますが、最近RevManでもREML法も選択できるようになったようです。McKenzie J, Veroniki AAの解説を参照してください。

文献:
Viechtbauer W: Bias and Efficiency of Meta-Analytic Variance Estimators in the Random-Effects Model. Journal of Educational and Behavioral Statistics
Fall 2005, Vol. 30, No. 3, pp. 261–293. Link

Viechtbauer W氏のR package metafor Link The metafor Package: A Meta-Analysis Package for R. Link

Deeks J and Higgins JPT: Statistical algorithm in Reveiw Manager 5. 2010. Link

McKenzie J, Veroniki AA: Introduction to new random-effects methods in RevMan. Link 解説スライド

Excelのデータからそのままメタアナリシス:Meta-analysis IZ exと評価シートへの実装

Excelで一定の形式でデータを入力して、アドインメニューからDo Meta-analysisをクリックすると、ブラウザが開かれ、Forest plot、Funnel plot、結果の数値データが表示されるMeta-analysis IZ exというExcel bookを作りました。インターネットに接続された環境で使用します。

VBAで書かれたプロブラムで、メタアナリシスに必要なデータを結合して、GETメソッドで送信し、PHPのプログラムで受信し、JavaScriptのプログラムで解析して、ブラウザに結果を表示します。Forest plot、Funnel plotは右クリックしてコピーしたりPENGファイルとして保存できます。

VBAのプロブラムを動かすには、Excelでマクロが動作する設定にする必要があります。必要な場合、Excelファイルを開いてから、ファイルメニュ–>オプション–>トラストセンター–>トラストセンターの設定(T)…ーー>マクロの設定–>VBAマクロを有効にするをチェックしてください。一度閉じて、再度開いてください。このマクロに関する設定は、他のExcelファイルに対しても適用されるので、他のExcelファイルでマクロが付いている場合も、無条件にマクロが実行可になります。セキュリティ上は、電子署名されたマクロを除き、VBAマクロを無効にする(G)の設定が望ましいので、さまざまなソースのExcelファイルを使用する方は、あとで設定をそのように変更してください。

このExcel bookのファイル名は2025_meta-analysis_ex.xlsmです。下記のLinkからダウンロードして、ダウンロードしたファイルを開いてください。上記のごとく、最初に、マクロを有効化して使用してください。

また、Mindsの評価シートをBookとしてまとめた、2025_excel_book_for_sr.xlsmというファイルと、そこから必要なシートをコピーして、システマティックレビューに使用するシートを集めたBookを各自作るための2025_My_SR Book.xlsmというファイルも入れてあります。システマティックレビュー用の評価シートに必要なデータを入力後、アドインメニューからMeta-analysis → Do Meta-analysisをクリックするとブラウザが開かれ、結果が表示されます。これらのBookの評価シートは、Rのパッケージmetafor, forestpolotを用いて、Rで動作するメタアナリシスを行うのスクリプトも含んでいるのでRを使ってメタアナリシスをすることもできますし、後述するMeta-analysis IZ rというウェブツールを使ってメタアナリシスをすることもできます。

Link: 2025_meta-analysis_ex.zip
2025.2.2 より前にダウンロードされた方、一部修正しましたので再度ダウンロードしてください。ZIPファイルから外に保存してから使ってください。

ここからは、2025_meta-analysis_ex.xlsmについての解説です。最初のシートに使い方の解説があります。二値変数アウトカムの場合、リスク比、オッズ比、リスク差、生存分析の場合、ハザード比、連続変数アウトカムの場合は、平均値差、標準化平均値差を扱えます。

図 Meta-analysis IZ exの最初のシート。

それぞれのシートにはサンプルデータが入力されているので、自分のデータに書き換えて使用してください。

また、シートの任意のセルを選択した状態で、Shift keyを押しながら、Do Meta-analysisをクリックするとその場所に二値変数アウトカム用のデータ入力フレームワークが作成されます。Altキーを押しながら同様の操作でハザード比用、Shift keyとAltキーの両方を押しながら同様の操作をすると連続変数アウトカム用のデータ入力フレームワークが作成されます。それらの位置にデータを入力して、それに対してメタアナリシスを実行する場合は、authorのセルを選択してから、Do Meta-analysisをクリックしてください。その範囲のデータでメタアナリシスを実行します。新規に追加したシートでも同じことができます。デフォルトの位置はセルB3です。新規に追加したシートではまずそこにフレームワークを作成して、使用しましょう。

メタアナリシスの方法は、分散逆数法Inverse-variance method、ランダム効果モデルRandom-effects model、研究間の分散の計算はRestricted Maximum Likelihood (REML)法またはDerSimonian -Laird法です。Rのパッケージのmetaforと同じ結果が得られることを確認してあります。

DerSimonian -Laird法は古典的な方法でRevManはこの方法を用いています。REMLとDerSimonian -Lairdはほぼ同じ結果になりますが、数値は若干異なり、REMLの方をデフォルトにしています。

このExcel bookを用いると、データをコピーしてウェブサイトに貼り付けて、解析するというステップがワンステップで済みます。

YouTubeチャンネルIZ statで解説動画をアップロードしました。Link

Meta-analysis IZ rというメタアナリシスのためのウェブツールでも同じJavaScriptのプログラムで解析しています。Meta-analysis IZ rはこちらのLinkです。

参照リンク:
Rのメタアナリシス用のパッケージ by Viechtbauer W Link

Viechtbauer W (2010). “Conducting meta-analyses in R with the metafor package.” Journal of Statistical Software36(3), 1–48.  Link

Cochrane RevManの統計学的手法 Deeks JJ and JPT Higgins: Statistical algorithms in Review Manager 2022. PDF

Standardized Mean Difference (SMD)を用いるMeta-analysis

連続変数アウトカムで研究によって測定スケールが異なる場合、そのままではメタアナリシスで統合値を求めることはできません。連続変数アウトカムの場合は、各研究から対照群の平均値と標準偏差(SD)と介入群の平均値と標準偏差の値を抽出して平均値差Mean Difference (MD)の統合値と95%信頼区間を計算しますが測定スケールが共通の場合しか適用できません。

これらの平均値を標準偏差で割り算した値を得ることを、標準化standardizationと言います。もし各群の値を標準化すると平均値は標準偏差を単位とした値になり、標準偏差は1.0になります。それぞれの標準偏差を単位とした値に変換するという意味になり、連続変数アウトカムで、測定スケールが異なる場合、各研究の平均値差=介入群の平均値-対照群の平均値と標準化した平均値差の標準誤差あるいは分散を計算して、メタアナリシスを行い、統合値と95%信頼区間を計算することができます。分散逆数法であれば、分散の逆数を重みとして用い、ランダム効果モデルであれば、研究間の分散の値を平均値差の分散に加算して、その逆数を重みに用います。

得られた標準化平均値差Standardized Mean Difference (SMD)と95%信頼区間の値を、分かりやすい元のスケールに戻して、効果の大きさを評価することが行われます。元のスケールに戻すには、標準偏差の値が必要です。また、SMDが0.2は小さな効果、0.5は中等度の効果、0.8は大きな効果という考え方を用いることも提案されています。

SMDを用いるメタアナリシスの演算は、Keeds JJ, Higgins JPT:Statistical algorithms in Review Manager 5. 2010. Link に記載されている方法に従って行われることが一般的です。計算に用いられる式を図1と図2に示します。

図1. Standardized Mean Differenceとその分散の計算式。
図2.DerSimonian-Laird法によるランダム効果モデルを用いる分散逆数法によるメタアナリシスの計算式。

これらの計算はExcelでもできますし、Rのパッケージmetaforでもできます。また、著者が作成したMeta-analysis IZ Linkあるいは Meta-analysis IZ r Linkでもできます。Meta-analysis IZ rではMindsの評価シートのデータをReformatして、メタアナリシスを実行できます。

metaforはViechtbauer W氏の作成した優れたメタアナリシスのパッケージです。Link 以下のスクリプトはSMDを用いたメタアナリシスのスクリプトの一例です。escalc(), rma(),forest()はmetaforの関数です。

est=escalc(measure=”SMD”, m1i=m1i,sd1i=sd1i,m2i=m2i,sd2i=sd2i,n1i=n1i,n2i=n2i, append=FALSE)
summary(est)
res=rma(yi, vi, data=est, method=”DL”)
summary(res)
forest(res, showweights=TRUE)

m1i 介入群の平均値
sd1i 介入群の標準偏差
m2i 対照群の平均値
sd2i 対照群の標準偏差
n1i 介入群の症例数
n2i 対照群の症例数

method=”DL”でDerSimonian-Laird法、method=”REML”でRestricted Maximum Likelihood (REML)法を指定できます。

なお、このスクリプトではForest plotの細かい設定はしていません。

SMDを用いたシステマティックレビューの論文の一例として、Sekhar P, Tee QX, Ashraf G, Trinh D, Shachar J, Jiang A, Hewitt J, Green S, Turner T: Mindfulness-based psychological interventions for improving mental well-being in medical students and junior doctors. Cochrane Database Syst Rev 2021;12:CD013740. doi: 10.1002/14651858.CD013740 PMID: 34890044 があります。この論文ではDerSimonian-Laird法が使われています。

Rのミラーサイトとパッケージのインストール

Rのプログラムをインストールする場合、The Comprehensive R Archive Network (CRAN)にアクセスし、左サイドバーのMirrorsを開いて、ミラーサイトを選択してからダウンロードします。日本のミラーサイトが現時点2024.07.28では山形大学の一か所だけになっています。(なお、アメリカは8か所、中国は10か所あります)。

以前は、統計数理研究所 https://www.ism.ac.jp/ もミラーサイトのひとつでしたが、それが無くなっています。

Rパッケージのインストールは、Rを起動し、パッケージメニューからCRANミラーサイトの設定を開き、ミラーサイトの一覧から、Japan (Yonezawa) [https:]を選択してOKをクリックし、同じくパッケージメニューからパッケージのインストールを選択して、パッケージの一覧から選択してOKをクリックしてインストールします。

スクリプトで同じ作業をするのであれば、以下のスクリプトを順次実行します。

chooseCRANmirror()
utils:::menuInstallPkgs()

ミラーサイトの一覧が表示されるまで少し時間がかかります。

また、chooseCRANmirror()を実行し、ミラーサイトを設定して、install.packages(“パッケージ名”)を実行することでも可能です。

さて、いくつかのパッケージをまとめてインストールしたい場合、以下のRのスクリプトを利用することもできます。この例では、metafor, forestplot, madaの3つのパッケージを続けてインストールします。packneed変数にインストールしたいパッケージ名をコンマで区切って格納します。この部分を目的に応じて書き換えてください。インストール済みのパッケージを参照して新しいパッケージだけをインストールします。url=””の部分が今までは、https://www.ism.ac.jp/ でもよかったのですが、現時点ではミラーサイトではなくなっているので、そのような設定ではパッケージのインストールができない状況です。以下のスクリプトのように、urlの設定を”https://ftp.yz.yamagata-u.ac.jp/pub/cran/”にしてください。

packneed=c(“metafor”,”forestplot”,”mada”);current=installed.packages();addpack=setdiff(packneed,rownames(current));url=”https://ftp.yz.yamagata-u.ac.jp/pub/cran/”;if(length(addpack)>0){install.packages(addpack,repos=url)};if(length(addpack)==0){print(“Already installed.”)}

このスクリプトは、Rのバージョンアップの後、今まで使っていたパッケージをすべてインストールしたい場合などに便利だと思います。