EZRで傾向スコアマッチングを行う方法

シロート統計学講座

シロート統計学講座 其の29

前回はEZRでCox比例ハザード回帰分析を行う方法を紹介しました。

EZRでCox比例ハザード回帰分析を行う方法
シロート統計学講座「其の28」

 

今回は傾向スコアマッチングという手法をご紹介します。傾向スコアマッチングはどんな時に使用するのか、EZRで行うにはどうすれば良いのかをなるべくシンプルに説明しようと思います。

 

それでは、始めましょう。

スポンサーリンク

傾向スコアマッチングとは

まず、傾向スコアマッチングについて簡単に説明しておきます。

 

これまで、シロート統計学講座では重回帰・ロジスティック回帰・Cox比例ハザード回帰などの多変量解析によって、群間の背景因子を補正する方法を説明してきました。

 

多変量解析による補正の他に、最近よく使われるようになった解析手法が「傾向スコアによるマッチング」という方法です。

 

この方法がよく使われるようになった背景として、多変量解析を行う際に有意差の出やすいもののみをモデルに入れたり、作為的に変数を入れ替えたりすることが問題になり、多変量解析の結果に疑問がもたれるようになったことがあるようです。

 

傾向スコアマッチングによって、多変量解析モデルを用いずに簡単に背景因子のずれを解消することが可能です(後述しますが、欠点もあるのでそこは要注意)。

 

デモデータを用意していますので、実際にEZRを使って傾向スコアマッチングを体験してみましょう。

デモデータの取り込み

 

さて、今回のデモデータで示された状況について説明しておきます。

 

今回は「ある新しい治療法によって在院日数が短縮するのか」を検証する仮想データとなっています。従来通りの治療を受けたコントロール群を「treatment=0」、新しい治療法を受けた群を「treatment=1」と定義づけました。

 

EZRで両群の背景データのサマリーを見ることもできるので、まずはデモデータをEZRに取り込みますね。

 

デモデータを開き、データ全体を囲った状態でコピーします(CtrlCでも可能)。

 

そしてEZRの画面で「ファイル」➡「データのインポート」➡「ファイルまたはクリップボード, URLからテキストデータを読み込む

 

今回は在院日数が主なアウトカムなのでデータセット名は「days」としておきましょう(なんでもよいです)。クリップボードタブにチェックを入れてOKを押します。

 

データセットが「days」になったことを確認し、「表示」を押してデータが正しく表示されれば取り込み完了です。

背景データのサマリーをみる

さて、データを取り込んだら、さっそくデモデータの内容をみてみましょう。

 

EZRには、背景データのサマリーをみる機能があります。

 

グラフと表」➡「サンプルの背景データのサマリー表の出力

 

群別する変数は「treatment」、カテゴリー変数は「sex」、連続変数(正規分布)に「age, BMI, Cr, days, EF, gait, Hgb, X.VC」を選択します。とりあえずサマリーを見たいだけなので正規分布の確認とかはしなくて良いですよ。

 

OKを押すと出力ウインドウにサマリーが表示されます。

 

Groupは0が「コントロール群」、1が「新治療を受けた群」ですね。

残りの指標は以下の通りですね。

sex:性別(0=男、1=女)
age:年齢

Cr:クレアチニン値(腎機能の指標)
days:在院日数
EF:左室駆出率(心機能の指標)
gait:6分間歩行距離
Hgb:ヘモグロビン値
X.VC:%肺活量

 

今回は「新治療によって在院日数が短縮するか」が論点ですので、メインのアウトカムは在院日数(days)ということになります。

 

在院日数は16.9日 vs 15.8日で、新治療を受けた群の方が短くはなっていますが、p=0.46ですので、統計学的な有意差はありませんね。

 

でも、この結果だけをみて「あーあ、新治療を行っても有意な効果はなかったか…」と思うのはまだ早いですね。

 

他の背景データも見てみましょう。

 

有意差のある所をみると、年齢は 62.6 vs 75.2、心機能を表すEFは 74.8 vs 67.8、Hgbも 12.4 vs 11.4 でした。

 

つまり、新治療を受けた群はコントロール群と比べて高齢で状態が悪い人が多い可能性があることが分かりました。背景が異なる人同士で在院日数を比べても、そもそもの状態が違うのであまり当てになりませんよね。

 

このような場合に傾向スコアマッチングを行うことで、メインのアウトカムである在院日数以外のデータを両群で揃えることができます。

傾向スコアマッチングを行う

傾向スコアの算出

傾向スコアマッチングは、各サンプルにおいて傾向スコアと呼ばれる値を算出して、似たような傾向スコア同士の人をマッチングさせる手法です。

 

よって、まずは傾向スコアを算出し、それをデータセットに追加する作業を行います。手順はいくつかありますが、難しくはないので安心してください。

 

傾向スコアを算出するには、まずロジスティック回帰分析を行います。

統計解析」➡「名義変数の解析」➡「二値変数に対する多変量解析(ロジスティック回帰)

 

目的変数には群分けを行う因子を投入するので、今回は「treatment」です。そして説明変数に「age, BMI, Cr, EF, gait, Hgb, sex, X.VC」を全て投入します。そして下にある「モデル解析用に解析結果をアクティブモデルとして残す」にチェックを入れます。

 

多変量解析の場合は説明変数を投入できる数にルールがありましたが、傾向スコアマッチングの場合は特に気にする必要はありません。交絡因子となりそうなものをなるべく多く投入します。

 

そしてOKを押すとロジスティック回帰分析が実行されますが、結果については見る必要はありません(ロジスティック回帰分析を行ったのは傾向スコアを算出するためなので)。

 

次に算出した傾向スコアをデータセットに追加する作業です。

標準メニュー」➡「モデル」➡「計算結果をデータとして保存…

 

次に「予測値」だけにチェックをつけてOKを押します(初めは全てにチェックが入っていますので、予測値以外は外してください)。

 

これで傾向スコアがデータセットに追加されました。確認のため「表示」を押してデータを見てみましょう。データの一番右側にある「fitted.GLM.2」というのが傾向スコアです。

 

傾向スコアは簡単に言うと「新治療を受ける確率」のことです(ロジスティック回帰で目的変数にした因子に対する確率が計算されます)。例えば↑のデータで一番上の人で言うと「年齢 45才、男性、BMI 18、%VC 112%、Cr 0.9、Hgb 14.1、6分間歩行距離 630mの人が新治療を受ける確率は6%」という感じです。

傾向スコアによるマッチング

次に、算出した傾向スコアを用いて2群をマッチングさせる作業です。

 

コントロール群と新治療を受けた群の両群で、似たような傾向スコアを持つ人同士をマッチングさせて背景データを揃えます。

 

統計解析」➡「マッチドペア解析」➡「マッチさせたコントロールの抽出

 

比較する群の変数は「treatment」、マッチさせる変数に「fitted.GLM.2」を選択します。そして下にある「マッチしないケースを削除するか」は「削除する」にチェックを入れます。

 

そしてOKを押すと傾向スコアマッチングが実行されます。

 

データセット名は「days_MP」に変わります。「表示」を押してデータを見ると「コントロール群(treatment=0)」のサンプル数が減っているのが分かります。また一番右をみると「pairmatch」という番号が追加されています。

 

これはつまり新治療を受けた群(20人)に対して、コントロール群も20人に調整されたということです。コントロール群は元々40人いました(pair matchの番号はそれぞれ対になるサンプル同士がマッチングされたということ)。

 

実際にうまくマッチングされたかどうかを確認してみましょう。最初と同様に背景データのサマリーを見てみます。

 

グラフと表」➡「サンプルの背景データのサマリー表の出力

 

群別する変数は「treatment」、カテゴリー変数は「sex」、連続変数(正規分布)に「age, BMI, Cr, days, EF, gait, Hgb, X.VC」を選択します。

 

OKを押すとサマリーが出力ウインドウに表示されます。

 

どうでしょうか。在院日数(days)以外のデータは全て有意差がなくなっています。つまり在院日数以外の背景データを両群で揃えることができました。

 

この状態で在院日数を比較すれば、同じような背景の人同士で「新治療を受けたか受けていないか」だけの違いをみることができるわけです。

 

ちなみに在院日数は 19.7日 vs 15.8日 で p=0.003と統計学的にも有意差が認められました。つまり「新治療を受けた人は、受けていない人と比較して有意に在院日数が短縮した」と結論づけることができます。

傾向スコアマッチングの利点と欠点

傾向スコアマッチングの利点

今回紹介したように、傾向スコアマッチングを行うことによって2群間で背景データを揃えた上で、メインのアウトカムを比較することができます。

 

それゆえに傾向スコアマッチングは疑似RCTなどとも言われます。

 

多変量解析のように説明変数の数の制限がなく、多くの説明変数を投入することができます。なかなか症例数が集まらない場合でも、傾向スコアで一括して交絡因子を補正することが可能です。

 

また個人的な印象ですが、傾向スコアマッチング後はメインのアウトカム以外のデータがきれいに揃うので見た目がシンプルになり、研究内容を聴衆に理解してもらいやすくなる気がしてます。

傾向スコアマッチングの欠点

傾向スコアマッチングの欠点もきちんと理解しておく必要があります。

 

①非観察データは補正できない

当然ながら、観察していないデータは説明変数に加えることができないので、補正することができません。RCTの場合ですと、非観測データも含めて完全にランダムになりますが、傾向スコアマッチングではそこは対応できません。

交絡因子となりそうなものを研究計画段階でしっかりと調べてデータ

を取っておく必要があります。

 

②見た目に騙される可能性がある

傾向スコアマッチングを行うと背景データがきれいに揃うので、さも完全に背景データが揃った状態でメインのアウトカムを比較しているように見えます。ですが①で述べたように非観測データは補正できないので、重要な交絡因子が抜けてしまっている場合には信憑性が乏しくなってしまいます。

自分が研究を行うときにはもちろんですが、人の発表を見る場合でも「本当に全ての交絡因子を補正できているのか」を吟味しましょう。

 

③サンプル数が減り、偏る可能性がある

傾向スコアで2群をマッチングする場合、サンプル数が少ない方に合わせて、もう一方の群のサンプルが除外されます。サンプル数が少ない方の群に選択バイアス(特定の人だけが受ける治療など)がかかっている場合、背景データが偏る可能性があります。

 

また傾向スコアがすごく高い人(低い人)は除外される可能性が高いので、マッチング後はふり幅の小さいデータとなりやすいです。

傾向スコアマッチング後のデータが必ずしも現実を反映するものではないということを理解しておく必要があります。

まとめ

以上、EZRで傾向スコアマッチングを行う方法を説明しました。

 

いくつかの欠点は押さえておく必要がありますが、傾向スコアマッチングの手法は臨床研究を行う人にとって非常に有意義であることは間違いないと思います。なぜなら、普通の病院でRCTを行うことはかなり難しいですし、RCTでなければほぼ必ず背景因子にズレが生じてしまうからです。

 

多変量解析でも交絡因子を補正することができますが、沢山の説明変数を投入しようと思うと、かなりのサンプル数を必要とします。なかなか症例数の集まらない場合でも、傾向スコアで一括して交絡因子を補正することができるのはかなりの強みです。

 

今回の記事を作成するにあたって参考にした書籍は↓です。

 

新谷歩先生の書籍にはいつも助けられています。初心者にも分かりやすいよう平易な言葉で説明がされていますので、とても分かりやすいです。興味のある方はぜひ読んでみてくださいね。

 

さて、其の1から其の29まで書いてきましたシロート統計学講座は今回で終了となります。まとめ・感想(?)を下の記事に書いておりますのでお時間のある方はどうぞ。

▼おわりに▼

シロート統計学講座を終えた皆さまへ
どうも、管理人のハル(@haru_reha)です。 シロート統計学講座は其の1~其の29までのシリーズでお送り致しました。 シロート統計学講座、いかがでしたか? 全て読んでくださった方、一部を読んで...

>>>シロート統計学講座のTOPへ戻る

コメント