Rのsource()関数の応用

統計解析プラットフォームとして広く使われており、プログラミング言語であるRにはsource(URL)という関数があります。Rのスクリプトをウェブサーバーにアップロードしておき、そのファイルのURLをsource()関数の引数として設定し、Rでそれを実行させると、ウェブサーバーからスクリプトが読み込まれて実行されます。

解析対象のデータはクリップボードにコピーしておいて、それをread.delim()関数で変数に読み込んで、その変数に対して処理を行うスクリプトを用意しておくことで、各自用意したデータを解析するシステムが作れます。解析したいデータはCSVファイルで用意して、それを読み込ませて解析する方法も可能です。

source()関数で読み込むRのスクリプトはウェブサーバーに置いてありますが、それを読み込んで実行させるスクリプトは各自のPCにインストールしたRで実行します。それを読み込んで実行させるスクリプトは、各自で保存しておくこともできますし、別のウェブページから提供することも可能です。useRsもそのようなウェブページのひとつですが、別の方法でも同じことが可能です。

例えば、メタアナリシスのさまざまなモデルに対応したスクリプトを用意して、ウェブページで選択して、実行させるというようなことができます。

システマティックレビューに必要なExcelシートを集め、メタアナリシスのためのRのスクリプトを含めたBookを作りました。2023_excel_book_for_sr_v.0.96.xlsxから自分の必要なシートをシートのタブを右クリックして、My SR Book.xlsxにコピーを追加し、目次のシートに各シートの名前を入力してそれらへのリンクを設定し、利用することができます。

リスク比、オッズ比、リスク差、ハザード比、平均値差、標準化平均値差 (RR, OR, RD, HR, MD, SMD)のメタアナリシスをRのmetaforパッケージで、診断精度研究のメタアナリシスをRのmadaパッケージを利用して実行します。Forest plotの作成にはRのforestplotパッケージを用いる場合もあります。Rをインストールし、必要なパッケージをRでインストールしてから使います。

正規分布に従う複数の変数に重みの値を掛け算した値の総和の分散

Linear combination of n variables with normal distributions with weights. 重みを係数coefficientsと言い換えてもいいです。

すぐにはピンとこないかもしれませんが、例えば、日本人の夫婦の身長の合計、つまり二人の身長の合計の平均値と分布を知りたいとします。それぞれ夫と妻の身長の分布が正規分布に従っているとします。日本人の夫の身長の平均値と分散、分散は標準偏差の二乗です(個々の値と平均値の差の二乗値の平均値が[標本]分散です)、が分かっていて、妻の身長の平均値と分散が分かっているとします。夫と妻のペアはランダムな組み合わせだとすると、(実際には背の高い妻は背の高い夫がいるというようなある程度の相関があるかもしれませんが、まずは妻と夫の身長の間にはそのような相関が無い、つまり共分散が0と仮定しておきます)、夫の身長と妻の身長の合計値の分布はどうなるでしょうか?平均値はそれぞれの平均値の和になり、分散はそれぞれの分散の和になります。

日本人の妻の集団からランダムに一人抜き出し、日本人の夫の集団からランダムに一人抜き出し、かれらの身長を測って、合計するということを繰り返した場合、その合計値の分布はどうなるかという風に考えてみて下さい。

このような計算がどいう時に使われているかというと、突然話が飛びますが、例えば分散逆数法Inverse-variance methodによるメタアナリシスの際に統合値の分散を求める際に使われています。計算法を図1に示します。今度は、妻と夫の身長という二つの変数ではなく、研究の数分の変数を扱います。

図1.分散逆数法のメタアナリシスにおける統合値の分散の計算。

一つの研究の効果推定値(リスク比、オッズ比、ハザード比の自然対数、連続変数であれば平均値)に対して、その分散の値の逆数を重みとして掛け算して、その総和を重みの総和で割り算すると統合値が得られます。

その統合値の分散を計算するにはどうするか?分散の逆数の総和の逆数をΣの内側に移動させることができるので、各研究の効果推定値に掛け算される値は、その総和で各研究の重みの値、つまり、各研究の効果推定値の分散の逆数を割り算した値になります。これが、係数として各研究の効果推定値に掛け算されているとみなせます。そして、統合値の値の分散はこの係数の二乗値を各研究の効果推定値の分散に掛け算した値の総和になります。

ただし、各研究の効果推定値は独立していて、相関が無いことが前提です。また、それぞれの効果推定値は正規分布に従うことが前提です。つまり、リスク比、オッズ比、ハザード比の自然対数、連続変数であればその値が、正規分布に従うことを前提としています。

さて、正規分布に従う複数の変数に重みの値を掛け算した値の総和の分散のより一般化した計算法を図2に示します。

図2.正規分布に従う複数の変数に重みの値(係数a)を掛け算した値の総和の分散の計算法。

各変数のペアで相関がない場合で、この図で示すCov、つまり、共分散の値が0の場合が、上で述べた計算です。図2の2つ目と3つ目の式でCov(Xi,Xj)=0となるので、各研究の効果推定値に係数の二乗を掛け算した値の総和が統合値の分散になります。また、係数aiが1で共分散が0の場合は、それぞれの変数の分散を合計すればXiの合計の分散になります。最初に述べた、妻と夫の身長の和の分布の分散の計算の場合はこれに相当します。

メタアナリシスの分散逆数法の統合値の分散は各研究の分散の逆数の総和の逆数になりますが、実は、ここで二つの図で示した計算式から証明することができます。図3、図4にそれを示します。

図3.分散逆数法メタアナリシスの統合値の分散の計算。係数に相当する部分の計算。
図4.分散逆数法メタアナリシスの統合値の分散の計算。各研究の効果推定値の分散の逆数の総和の逆数が統合値の分散になることを示す。

また、これらの計算には、分散共分散行列を計算に用いることもでき、変数間に相関がある場合にも対応できます。その際には、行列計算の知識が必要になります。

今回解説した、係数を掛け算した正規分布に従う変数の平均値の分散の計算は価値観で重みづけした効果推定値の総和、すなわち正味の益(net benefit, benefit-harm balance)の分散の計算でも、バイアス効果で調整した統合値の分散の計算でも用いられます。

一般化した言い方をすると、”正規分布に従う複数の変数に重みの値を掛け算した値の総和の分散”ということになります。重みづけ平均値とあわせて理解しておく必要があると思います。

そして得られた分散の値の平方根に1.96を掛け算してブラスマイナスすると95%信頼区間が得られます。さらに、例えば正味の益が0以上の確率やある閾値以上の確率を計算することもできます。

Cochrane risk of bias tool v.2.0のためのWeb tool

皆さんご存知の通り、Cochraneのシステマティックレビューのための、ランダム化比較試験のバイアスリスクの評価法が2019年8月からVersion 2.0になりました⇒RoB 2 tool

バイアスの評価ドメインが5つに減り、評価のグレーディングがLow, Some concerns, Highの3段階になり、シグナリングクエスチョンに答えることで自動的に評価を決定する仕組みが導入されました。

コクランのシステマティックレビューアのためにExcelの評価ツールが用意されています。シグナリングクエスチョンに答えていくことで、各ドメインの評価が決められますが、もし、評価者の評価と異なっていた場合は、評価者の評価を優先するルールになっています。また、各シグナリングクエスチョンの答えの組み合わせが、アルゴリズムに無い場合もあります。そのような場合、評価者の理解の違いによる場合もありますし、アルゴリズムと見解が異なる場合もあり得ます。

Cochrane risk of bias tool v.2.0のためのウェブツールやその他のツールを以前から公開していましたが、解説を充実させ、また評価結果をExcelの評価シートに取り込めるように改良しました⇒Link 今のところ日本語版だけです。

その評価シートを含むExcel bookはこちらです⇒2022_excel_book_cpg.xlsx

Network Meta-analysisとエビデンスの確実性評価

今までの投稿で、Network meta-analysis(NMA)について解説してきました。

Network Meta-analysisをOpenBUGSで
MacでR,JAGS,rjagsを使うNetwork meta-analysisをやってみる
SUCRA(Surface Under the Cumulative Ranking Curves)

NMAでは3つ以上の介入を比較し、最も効果が優れているのはどれかを知ることができます。通常のペア比較メタアナリシスが二つの介入の内どちらの方が効果が優れているのか、すなわちComparative effectivenessに答えるのに対し、NMAはExtended comparative effectivenessに答えるとも言えます。

ネットワークメタアナリシスの基礎とそのアウトプットおよびエビデンスの確実性(GRADEアプローチ)についての解説を作成しました。こちらです

一つのアウトカムに対する介入の効果をNMAで解析しただけでは、益と害の複数のアウトカムに対する効果にトレードオフがある場合、どれが最善の介入かを決めることはできません。メタアナリシスで得られる結果は直接益と害の大きさを示しているわけではありません。エビデンスの確実性の評価も複雑になります。NMAそのものはデータさえそろえれば、だれでもできるだけのツールがそろっていますが、NMAも万能ではないことを理解した上で使う必要があります。