*------------------------------------------------------------------; * 昭和大学 第14回実践臨床統計学セミナー・ハンズオン2 ; * 多重代入法による欠測データの統計解析 ; * 2021年2月8日    ; *------------------------------------------------------------------; *------------------------------------------------------------------; * 1. CSVデータファイルの読み込み               ; *------------------------------------------------------------------; proc import out=work.cattaneo2 datafile = "C:\SAS2\cattaneo2.csv" dbms = csv replace; getnames = yes; datarow = 2; run; *-- datafile=... のフォルダ・ファイルのパスは適当に変更してください。; *-- Cドライブ直下に "SAS2" というフォルダを作っていただくと、以後の実習でも、プログラムの改変なしに、配布したコードでデモを実行することができます。; *------------------------------------------------------------------; * 2. PSMATCH プロシジャ: 傾向スコアマッチング           ; *------------------------------------------------------------------; proc psmatch data=cattaneo2; class mismoke mmarried fbaby; psmodel mismoke(treated='1') = mage medu mmarried mrace mhisp foreign alcohol fbaby fage fedu; match method = greedy(k=2 order=descending) stat=lps caliper(mult=stddev)=0.20; assess lps var = (mage medu mmarried mrace mhisp foreign alcohol fbaby fage fedu) / weight=none varinfo; output out(obs=match) = psmatch0 ps=ps lps=lps matchwgt=match matchid=matchsort; run; *-- PSMATCHプロシジャで、傾向スコアによるマッチングを行ってくれます。; *-- PSMODELステートメントで、傾向スコアを推定するためのロジスティック回帰モデルの結果変数・説明変数の組を指定します。; *-- MATCHステートメントで、マッチングの方法を指定します。こちらの事例コマンドの方法が、一番標準的な方法になります。; *-- Greedyアルゴリズムを用いて、1:kマッチング(今回は、k=2)でのマッチングを行います。; *-- マッチングの際のCaliperは、ロジット変換した傾向スコアの分布の標準偏差に0.2をかけたものとなっています。; *-- ASSESSステートメントで、マッチング前後の共変量の要約統計量(+Standardized Difference)を出力することができます。; proc sort data=psmatch0 out=pssort0; by matchsort; run; proc print data=pssort0 (firstobs=999 obs=1018); run; *-- どのようなマッチングが行われているかを確認するためのコマンドです。; *-- マッチングの組ごとに順番を並び替えて、PROC PRINTでデータを出力します。; *------------------------------------------------------------------; * 3. LOGISTIC プロシジャ: 条件付きロジスティック回帰        ; *------------------------------------------------------------------; proc logistic data = pssort0; class Y mismoke/ ref=first param=glm; model Y = mismoke; strata matchsort; run; *-- 条件付きロジスティック回帰で、マッチング後のオッズ比を計算します。; *------------------------------------------------------------------; * 4. FREQプロシジャ: Cochrane-Mantel-Haenszel推定量の計算を行います ; *------------------------------------------------------------------; proc freq data=pssort0; table matchsort*Y*mismoke / cmh noprint; run; *-- マッチングをとったケースコントロール研究では、単純な分割表のオッズ比やカイ二乗検定は使ってはいけない。; *-- マッチングを考慮した方法として、Mantel-Haenszel法を使う必要がある。; *-- cmhオプションをつけることで、オッズ比とリスク比のCochrane-Mantel-Haenszel推定量を計算することができます。; proc freq data=pssort0; table matchsort*Y*mismoke / riskdiff(common column=1) nocol nopercent; run; *-- マッチングをとった研究でのリスク差の推定値・信頼区間は、この方法で計算することができます。;