投稿

2017の投稿を表示しています

STATAを使った傾向スコア分析 IV

イメージ
(前回の続き)傾向スコアを使って、各症例に対して、反対の群に属する最も近い傾向スコアを持つ症例がマッチングされました。ここから治療効果を計算するのですが、STATAが何をやっているのかを見てみましょう。 ***** set more off use http://ssc.wisc.edu/sscc/pubs/files/psm, clear gen id=_n teffects psmatch (y) (t x1 x2, logit), nn(1) generate(matched_id) ate predict ps0 ps1, ps ***潜在的アウトカム(p_outcome)の変数をつくる*** predict p_outcome, po ***治療効果(t_effect)の変数をつくる*** predict t_effect, te *** sort ps1 gen order=_n browse order t id y matched_id1 p_outcome t_effect exit ***** 上記コマンドを走らせると、以下のようになります。 前回同様に、非治療群のid 379には、治療群のid 407がマッチングされています。ここで傾向スコアマッチング法は、独特な考え方をとります。id 379は現実には治療を受けていないが、もし治療を受けていたらどうなっただろうか、非常に似通った特性をもつid 407と同じ結果になったであろう、と考えるのです。 この実際には発生してない結果(アウトカム)のことを、潜在的アウトカムといいます。この考えをさらに進めて、現実はともかく、もしid 379が治療を受けなかったときの結果(実際に受けなかったのですが)、もし治療を受けたときの結果、を等しく潜在的アウトカムと呼びます。 こう考えると、傾向スコアマッチングの結果、各症例について、治療を受けた時の潜在的アウトカムと、治療を受けなかった時の潜在的アウトカムが、数値として与えられることになります。 具体的には、id 379が治療を受けた時の潜在的アウトカムは-0.79309、治療を受けなかったときの潜在的アウトカムは-0.14929です。そして、この差、つまり(-0.79309)...

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.1...

STATAを使った傾向スコア分析 II

おおまかにいえば、傾向スコア解析の流れは以下のようになります。 ①傾向スコアを作成する ②治療群と非治療群をマッチングする(マッチング以外の方法もありますが、それはおいおいみていきます) ③両群の変数の値が均等になっているかバランスをチェックする ④治療群と非治療群のアウトカムを比較する 実際のところ、STATAのコマンドは一気にステップ④の治療効果推定までやってしまいます。 傾向スコア解析のためのSTATAコマンドには、従来使われてきたpsmatch2と、STATA13以降に搭載されているteffectsがあります。同じデータを使って、psmatch2とteffectsそれぞれの使い方を見ていきましょう。 今回、teffectsを使った後に、ステップ③のバランスチェックにtebalanceを使いますが、これにはSTATA14以降が必要です(熱研内科関係者で持っていない方は連絡をください)。 *****このままdo fileにコピペすれば動くはずです***** set more off ***データ読み込み*** use http://ssc.wisc.edu/sscc/pubs/files/psm, clear ***psmatch2を使ったマッチングと治療効果推定*** psmatch2 t x1 x2, out(y) logit ties ***傾向スコアは_pscoreという変数として作成されている*** psgraph, treated(t) pscore(_pscore) ***治療群と非治療群のバランスチェック*** pstest x1 x2, treated(t) both ***** ***teffects を使ったマッチングと治療効果推定。ただし、これだけでは傾向スコアは変数として作成されない。次のステップで作成するためにgenerateオプションを使う。*** teffects psmatch (y) (t x1 x2, logit), generate(n) atet ***ここで傾向スコアを作成する。ここではps1という変数名で作成する。このps1は、psmatch2で作成した_pscoreと完全に一致しているはずである。*** predict ps0 ps1,...

STATAを使った傾向スコア分析 I

STATAを使った傾向スコア分析のやり方です。ひとまず手を動かしてみるのも、理解の手助けになります。 データは以下のサイトのダミーデータを使います。tが治療、yがアウトカム、x1とx2が治療選択に影響を及ぼしうる変数です。 https://www.ssc.wisc.edu/sscc/pubs/stata_psmatch.htm STATA13以上なら、do fileにコピーすればそのまま動くはずです(psmatch2をインストールする必要があるかもしれません)。 *********** *********** set more off use http://ssc.wisc.edu/sscc/pubs/files/psm, clear ***まずは一般的なコマンドを使ってみる*** ***傾向スコアの作成法:その1*** logit t x1 x2 predict ps1 ***治療群と非治療群で傾向スコアの分布を比べる:その1*** hist ps1, by(t) ***全く同じことが、以下のコマンドでできる*** ***傾向スコアの作成法:その2*** pscore t x1 x2, logit pscore(ps2) ***治療群と非治療群で傾向スコアの分布を比べる:その2*** psgraph, treated(t) pscore(ps2) ***ここまでと同じ方法で傾向スコアを作成し、マッチングして治療効果を算出する*** psmatch2 t x1 x2, out(y) logit ties neighbor(1) ***STATA13以降であれば、新しいコマンドteffectsで、上記と全く同じ結果が得られる。*** teffects psmatch (y) (t x1 x2, logit), atet exit STATAを取り扱っているライトストーン社の資料 https://www.lightstone.co.jp/stata/files/psa01.pdf https://www.lightstone.co.jp/stata/files/psa02.pdf https://www.lightstone.co.jp/stata/files/psa0...

日本における臨床疫学・薬剤疫学に応用可能なデータベース:日本薬剤疫学会

因果ダイアグラムも疑似実験デザインも、決して医療ビッグデータ研究のためにあるものではありませんが、現状では同じ文脈で取り上げられることが多いようです。 日本は欧米に比べると医療ビッグデータの活用はまだこれからという状況なのだと思いますが、今年、個人情報保護法が改正され、今後、データベースの整備・活用が促進されていくでしょう。 日本薬剤疫学会が、国内で応用可能な医療データベースの一覧を公開しています。 http://www.jspe.jp/mt-static/FileUpload/files/JSPE_DB_TF_J.pdf

疑似実験デザイン

先日、参加した日本臨床疫学会、IDWeekでも話題になっていた疑似実験デザイン。 無作為比較試験(RCT)至上主義からの脱却、という文脈で注目されているようですね。 この中ではプロペンシティ・スコア・マッチングは、NEJMに載っている論文でも使われているので、一番なじみがあると思います。 観察研究でもRCT同等のエビデンスを出せる、という触れ込みですが、実際にはいろいろ注意しないと正しい結論は導けません。従来の多変量解析に加えて、一通りやり方を覚えておきたいところです。 操作変数法(Instrumental variable methods) プロペンシティ・スコア・マッチング(Propensity score matching) 回帰分断デザイン(Regression discontinuity method)・分割時系列デザイン(Interrupted time-series analysis) 差分の差分分析(Difference-in-difference analysis) だいたいどういうものなのかは、以下の津川友介先生の解説がわかりやすいです。 https://healthpolicyhealthecon.com/2015/02/23/experiment-and-quasi-experiment-1/

Causal Diagrams: Draw Your Assumptions Before Your Conclusions

因果ダイアグラム(causal diagrams)についてのオンラインコースです。無料で受講できます。講師は Miguel Hernán というHSPHの教授です。まだ1週目しか見ていませんが、初級者にも分かりやすい内容になっているようです。 因果ダイアグラムとは、原因と結果、交絡因子などを矢印で結んで因果関係を図示するもので(C→Eとか)、いってみればそれだけなのですが、頭を整理するのに役立つだけでなく、データを解析するときにどの変数を使うべきか、使うべきでないかを明らかにできたり、新しい統計手法を理解する際にも用いられたりします。 Causal Diagrams: Draw Your Assumptions Before Your Conclusions https://courses.edx.org/courses/course-v1:HarvardX+PH559x+3T2017/course/#_=_