STATAを使った傾向スコア分析 III
傾向スコアとは、ある人が治療を受ける確率で、0から1までの数値で表されます。
実際には、その人はすでに治療を受けた(あるいは受けなかった)あとですから、「治療を受ける確率」という表現には、ちょっと違和感があります。その人と全く同じ特性を持った人が次に現れたときに治療が選択される確率、といった方がイメージしやすいかもしれません。
傾向スコア分析では、結果的に治療を受けたか否かにかかわらず、対象となる全員にひとつの傾向スコアが割り振られます。
そして治療群と非治療群から、傾向スコアが近い人たちを探し出してきてペアをつくるのが、傾向スコアマッチングです。
ではSTATAが実際に何をしているのかを見てみましょう。
前回と同様、teffects psmatchコマンドを使って傾向スコアマッチングをやってみます。
*****
set more off
***データの読み込み***
use http://ssc.wisc.edu/sscc/pubs/files/psm, clear
***データに上から順番にIDを振る***
gen id=_n
***傾向スコアマッチング(1:1マッチング)。generate(matched_id)でmatched_id1という変数が作成される。ここには各症例とマッチングさせた相手の症例のIDが記録される。***
teffects psmatch (y) (t x1 x2, logit), nn(1) generate(matched_id) ate
***傾向スコア(変数ps1)を作成する***
predict ps0 ps1, ps
***傾向スコアが小さい方から順に並べ替える***
sort ps1
gen order=_n
browse order t id ps1 matched_id1
exit
*****
データを見ると、各症例(ID)に傾向スコア(ps1)が割り振られ、1例ずつマッチングされています(matched_id1)。マッチングされた相手は、治療群(t=1)なら非治療群(t=0)で一番近い傾向スコアを持っている症例です。
例えば、id 407の症例は治療群で傾向スコアが0.1980766ですが、これに対して非治療群で傾向スコア0.1982079のid 379の症例がマッチングされています。また、id 407は反対にid 379のマッチングの相手になっており、さらに非治療群のid 688の相手にもなっています(図1)。このように、ひとつの症例が、複数人の相手としてマッチングされることがあります。
上記は傾向スコアが小さい方から並べて300番台のあたりなので、傾向スコアが近いところに治療群、非治療群がある程度混じっています。
では、傾向スコアが小さい方を見てみましょう。
傾向スコアが小さい、ということは、治療される確率が低い、ということなので、必然的にこのあたりには非治療群の症例が固まっています。そのマッチング相手は、治療群で一番小さい傾向スコアを持つid 716です。id 716は、傾向スコアが小さいほうから1番目から48番目の非治療群の症例のマッチング相手であり、さらに、50番目のid 314の相手にもなっています。
実際には、その人はすでに治療を受けた(あるいは受けなかった)あとですから、「治療を受ける確率」という表現には、ちょっと違和感があります。その人と全く同じ特性を持った人が次に現れたときに治療が選択される確率、といった方がイメージしやすいかもしれません。
傾向スコア分析では、結果的に治療を受けたか否かにかかわらず、対象となる全員にひとつの傾向スコアが割り振られます。
そして治療群と非治療群から、傾向スコアが近い人たちを探し出してきてペアをつくるのが、傾向スコアマッチングです。
ではSTATAが実際に何をしているのかを見てみましょう。
前回と同様、teffects psmatchコマンドを使って傾向スコアマッチングをやってみます。
*****
set more off
***データの読み込み***
use http://ssc.wisc.edu/sscc/pubs/files/psm, clear
***データに上から順番にIDを振る***
gen id=_n
***傾向スコアマッチング(1:1マッチング)。generate(matched_id)でmatched_id1という変数が作成される。ここには各症例とマッチングさせた相手の症例のIDが記録される。***
teffects psmatch (y) (t x1 x2, logit), nn(1) generate(matched_id) ate
***傾向スコア(変数ps1)を作成する***
predict ps0 ps1, ps
***傾向スコアが小さい方から順に並べ替える***
sort ps1
gen order=_n
browse order t id ps1 matched_id1
exit
*****
データを見ると、各症例(ID)に傾向スコア(ps1)が割り振られ、1例ずつマッチングされています(matched_id1)。マッチングされた相手は、治療群(t=1)なら非治療群(t=0)で一番近い傾向スコアを持っている症例です。
例えば、id 407の症例は治療群で傾向スコアが0.1980766ですが、これに対して非治療群で傾向スコア0.1982079のid 379の症例がマッチングされています。また、id 407は反対にid 379のマッチングの相手になっており、さらに非治療群のid 688の相手にもなっています(図1)。このように、ひとつの症例が、複数人の相手としてマッチングされることがあります。
![]() |
図1 |
上記は傾向スコアが小さい方から並べて300番台のあたりなので、傾向スコアが近いところに治療群、非治療群がある程度混じっています。
では、傾向スコアが小さい方を見てみましょう。
![]() |
図2 |
傾向スコアが小さい、ということは、治療される確率が低い、ということなので、必然的にこのあたりには非治療群の症例が固まっています。そのマッチング相手は、治療群で一番小さい傾向スコアを持つid 716です。id 716は、傾向スコアが小さいほうから1番目から48番目の非治療群の症例のマッチング相手であり、さらに、50番目のid 314の相手にもなっています。
コメント
コメントを投稿