Cochrane RoB 2を用いるウェブツール

ランダム化比較試験のバイアスリスク評価ツールであるCochrane risk of bias toolが2019年からversion 2.0となり、シグナリングクエスチョンに答えることで、研究ごとのバイアスリスクをLow, Some concerns, Highの3段階で評価する方法に変わりました。Link Excelマクロを用いて、自動判定するファイルも用意されています。

ドロップダウンメニューからシグナリングクエスチョンに対する回答を選択していくと、バイアスリスク評価ができるウェブツールを以前から公開していました。今回、ドメイン2の治療企図からの乖離によるバイアスリスクについて判定アルゴリズムを1つ追加しました。Link

今回の課題は、ドメイン2のPart 1の判定アルゴリズムです。今までは、図1に示すような回答の組み合わせの場合、Part 1の判定は未決で白丸のままでした。

図1. ドメイン2 Part 1のバイアスリスク判定。

このような場合、白丸部分をクリックすると、図2のように関連するアルゴリズムが表示されます。青の太字が選択した回答と一致している部分で、この組み合わせの中には、y y pn NANA y NAという組み合わせはありません。判定がLowになる回答の組み合わせは3つだけでした。

図2.青の太字が選択した回答と一致している部分で、この組み合わせの中には、y y pn NANA y NAという組み合わせはない。

これらの回答の組み合わせは、上記Cochrane risk of bias tool version 2.0に関する解説のページで、Link Full guidance documentにかかれているアルゴリズムに沿って作成したものです。該当する箇所は、Table 6またはFigure 2です。そこを見ると、シグナリングクエスチョン2.1と2.2は”Either Y/PY/NI“で、2.3がN/PNの場合Low riskの判定となることが記載されています。”Either Y/PY/NI”の解釈で、いずれかが”Y/PY/NI”であるという場合に、両方が”Y/PY/NI”であるも含めるか、いずれか片方だけが”Y/PY/NI”の場合だけに限定するかが問題となります。今までは、後者の解釈に基づいてアルゴリズムを設定していましたが、今回、両方が”Y/PY/NI”である場合も含めるアルゴリズムに変更することにしました。言い換えると、参加者も医療提供者も介入について知ることができる場合でも、すなわちいずれも盲検化が行われていない場合でも、治療企図からの乖離が臨床試験の文脈と関係ない場合は、Low riskと判定するということになります。また、医療提供者あるいは参加者だけが介入を知っている場合と、両者とも知っている場合は同じ評価になるという意味でもあります。盲検化の有無よりも、治療企図からの乖離が臨床試験の文脈と関係あるかどうかの判断がより重要になるということにもなります。

さて、今回お話ししているウェブツールはアルゴリズムを各自の望ましいと思うものに書き換えて利用することができるようになっています。今回その機能を用いてアルゴリズムを修正しました。図3で示すように、MenuからAlgorithmを選択すると、図4に示す、その時点のアルゴリズム一覧が示されます。

図3.Menuからアルゴリズムを表示させる。
図4.その時点のアルゴリズム一覧。2.1でLowになる回答の組み合わせは3種類だけ。

ここに、シグナリングクエスチョンの2.1の回答の組み合わせでLow判定になるものを追加します。タブ区切りで図5に示すように、1行を追加しました。

図5.2.1にLowになる回答の組み合わせを追加。

そして、図5に示す、Saveボタンをクリックすると、図6のように、確認のメッセージが出るので、OKをクリックします。

図6.書き換えたアルゴリズム一覧を保存する際の確認のメッセージ。

次に、このウェブページ全体をHTMLファイルとして保存します。図7のように、MenuからSaveを選択します。

図7.HTMLファイルとして保存する。MenuからSaveをクリック。
図8.名前を付けて保存する。

図8のように、ブラウザの右上の方にファイルをダウンロードしてPCに保存するメッセージが出るので、名前を付けて保存をクリックします。もし、Study IDとOutcomeが入力されている場合は、それらの文字列をアンダーバーで結合したファイル名が提示されます。

図9.ファイル保存のためのダイアログ。ファイル名を付け、あるいは修正して保存ボタンをクリック。

図9のようにファイル保存のためのダイアログが出るので、ファイル名を付けて保存します。

図10.ダウンロードの状況。

ブラウザの右上の方に、ダウンロードの状況が表示され、終了すると図10のように表示されるので、ここでファイルを開くをクリックすると保存したHTMLファイルがブラウザで開かれます。また、フォルダのアイコンをクリックするとそのファイルを含むフォルダが開かれます。このパネルが無くなった後であれば、・・・をクリックしてダウンロードを選択すると、直前までダウンロードしたファイルの一覧が表示されるので、そこから選択して開くこともできます。

図11.ダウンロードしたファイルでアルゴリズムを確認。

ダウンロードしたファイルをブラウザで開き、MenuからAlgorithmを選択して、2.1の所を確認すると修正した内容に変わっています。

図12.ドメイン2のテスト。

ドメイン2で2.1のシグナリングクエスチョンに最初と同じ組わせてで回答を選択すると、今度は、Lowの判定になります。

さて、ダウンロードしたファイルを右クリックしてコピーして貼り付け操作を行うとファイルを複製使用することができます。インターネットに接続された環境であれば、上記のURLを開いた場合と、同じように動きます。

バイアスリスク評価はひとつの研究-ひとつのアウトカムで1枚ずつ用いて行い、MenuからSaveして記録しておくことができます。その場合、保存されたHTMLファイルはローカルPCにあります。例えば、研究が5件で評価するアウトカムが5つであれば、25枚のHTMLファイルを保存することになります。

また、ひとつの研究-ひとつのアウトカムの評価が終わったら、上の方にあるCopy to Clipboard with Summaryのボタンをクリックし、Excelで開いたMindsのRoB 2用の評価シートに結果を貼り付けることもできます。

このウェブツールはバイアスリスクのドメインの行をクリックするとシグナリングクエスチョンが、各シグナリングクエスチョンをクリックすると解説が表示されます。

図13.シグナリングクエスチョンの表示と解説の表示。各行をクリックすると表示される。

Cochrane risk of bias tool version 2.0ではシグナリングクエスチョンの回答に基づく判定とレビュアの判定が異なる場合、後者を優先することになっています。このウェブツールではその変更はできないので、評価シートの方でレビュアの判定を設定してください。その旨をコメント欄に記入してSaveしておくといいと思います。

また、バイアス効果の向き、すなわち、過大評価(介入群に有利)・過小評価(対照群に有利)、差が無い方へ・差がある方へ、の判定はオプショナルになっていますが、ドメイン名の右のラジオボタンで記録することはできます。

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

RISmedを用いたPubMed検索

RISmedはPubMed検索のためのRのパッケージです。作者はStephanie Kovalchik氏です。ASReview https://asreview.nl/ を用いた文献選定の際には、Title, Abstractのデータを用います。書誌情報と合わせて、これらのデータを含むExcelファイル、またはCSVあるいはRISファイルを用意する必要があります。その際に、RISmedを使うのがひとつの方法です。

PubMedではGETメソッドで直接データベースにアクセスして、検索結果をダウンロードできるe-utilitiesというサービスがあります。MeSHへのAutomatic Term Mappingは適用されません。https://www.ncbi.nlm.nih.gov/books/NBK25501/

それを利用するRのパッケージです。pmSearchも同じサービスを利用しています。

RISmedとtcltk2のパッケージをThe Comprehensive R Archive Network (CRAN)(https://cran.r-project.org/)からRにインストールしておきます。tcltk2は検索結果をCSVファイルとして保存する際のインターフェースとして用います。
Stephanie Kovalchik: RISmed https://cran.r-project.org/web/packages/RISmed/index.html
Philippe Grosjean: tcltk2 https://cran.r-project.org/web/packages/tcltk2/index.html

パッケージがまだインストールされていない場合は、以下のスクリプトをRで実行してください。
#Install the packages.
packneed=c(“RISmed”,”tcltk2″);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でスクリプトを実行すると検索結果をCSVファイルとして保存できます。SearchWordsと言う変数に検索式search queryを格納しますので、””で囲んであるところを書き換えて使用してください。すべてを選択して、実行すると、ファイル保存のダイアログまで実行されます。ResultsData=EUtilsGet(Results, type=”efetch”, db=”pubmed”)の実行に時間がかかります。

保存したCSVファイルを直接開くのではなく、Excelを起動して、データメニューからテキストまたはCSVファイルからインポートします。元のファイルはUTF-8でエンコードされており、Shift JISがデフォルトのExcelでは文字化けするので、そのような手順を取ります。ファイル保存の際は.xlsxにすることもできます。

また、CSVファイルはテキストファイルなので、Notepad++ https://notepad-plus-plus.org/ などで一度開いて、エンコーディングをUTF-8-BOMに変換するとExcleで直接開いても文字化けしません。

図 Excleで取り込んで.x.sxファイルとして保存したPubMed検索結果。

以下にR用のスクリプトを示します。
library(“RISmed”)
library(“tcltk2”)

#Make a search query for PubMed. Write your query in ” “.

SearchWords=”(junior doctor OR young doctor OR resident physician OR intern) AND mindfulness AND humans[mh] AND (english[la] OR japanese[la]) AND hasabstract[tw] AND 2024[dp]”

#Connect and retrieve a list of PubMed IDs. You can change retmax and set years asmindate=2000, maxdate=2024, retmax=2000

Results=EUtilsSummary(SearchWords, type=”esearch”, db=”pubmed”, retmax=2000)

#Show the number of citations retrieved and get title, abstract and other data. This step takes time.

QueryCount(Results)
ResultsData=EUtilsGet(Results, type=”efetch”, db=”pubmed”)

#Make publication year list.

year=YearEntrez(ResultsData)

#Make a list of authors (Last name + initials) for each citation and a list of reference id (first author + year).

au=Author(ResultsData)
refn=length(au)
auv=rep(“”,refn)
refidv=rep(“”,refn)
for(i in 1:refn){
authors=cbind(au[[i]]$LastName,au[[i]]$Initials)
ma=nrow(authors)
authors[1,]
paste(authors[1,1],authors[1,2])

aul=””
for(j in 1:ma){
aut=paste(authors[j,1],authors[j,2])
aul=paste(aul,aut,sep=”, “)
}
aul=substr(aul,3,nchar(aul))
auv[i]=aul
refidv[i]=paste(authors[1,1],authors[1,2],year[i])
}

#Make citation list. No formatting. Including DOI information.
refer=Citations(ResultsData)

cite=rep(“”,refn)
for(i in 1:refn){
cite[i]=refer[[2]][[i]]
}

#Create a data frame of PMID, Reference_ID,Citation,Year, Title,Abstract. Citation format is not modified.

pubmed_data=data.frame(‘PMID’=PMID(ResultsData),’Reference_ID’=refidv,’Citation’=cite, ‘Year’=YearEntrez(ResultsData), ‘Title’=ArticleTitle(ResultsData), ‘Abstract’=AbstractText(ResultsData))

#Save the frame work as a CSV file with a save file dialogue. Add file extension “.csv”.

filnam=tclvalue(tkgetSaveFile(initialfile=”export.csv”,filetypes=”{{CSV Files} {.csv}} {{All files} *}”));if(filnam!=”.csv”){write.csv(pubmed_data,filnam,row.names=FALSE)}

#Do not open the file directly to avoid character encoding trouble. Launch Excel, then from Data menu use import text/csv file.
#The saved file is a text file with UTF-8. You can change encoding from UTF-8 to UTF-8-BOM using Notpad++, and you can directly open the file with Excel without garbles.