カテゴリ変数に対してダミー変数を作成する方法
[OS] ALL
[リリース] ALL
[キーワード] STAT, CATEGORY, DUMMY VARIABLE
[質問]
たとえば比例ハザードモデルを扱っている場合、PHREGプロシジャではCLASSステートメントがないため、カテゴリ変数を何らかの方法でダミー変数に展開する必要があります。 [回答]カテゴリ変数が少なく、また水準数も少ない場合には、DATAステップを利用するのが一番簡単ですが、モデルが複雑なケースでは煩雑になってしまいます。そのようなときには、下記のSAS/STATのプロシジャを用いると、比較的容易にダミー変数を作成することが可能です。 ■ GLMMODプロシジャ
GLMプロシジャと同じ展開方法でダミー変数を作成します。展開されたカテゴリ変数をデータセットへ出力するためには、OUTDESIGN=オプションを指定する、またはODS OUTPUTステートメントを使用します。なお、MODELステートメントに存在するもののCLASSステートメントでは指定されていない変数は、そのままデータセットへ出力されます。
/*OUTDESIGN=オプションを用いて、データセットout1に出力*/ proc glmmod data=a outdesign=out1 noprint; class drug disease; model y=drug disease drug*disease; run; proc print data=out1; run; ods listing close; /*ODS OUTPUTステートメントを用いて、データセットout2へ出力*/ ods output DesignPoints=out2; proc glmmod data=a; class drug disease; model y=drug disease drug*disease; run; ods listing; proc print data=out2; run; ■ TRANSREGプロシジャ
変数に対してさまざまな変換を施してから回帰を行なうTRANSREGプロシジャでも、DESIGNオプションを指定してダミー変数を作成し、またOUTPUTステートメントを併せて用いてデータセットへ出力することができます。GLMMODプロシジャと比べると、やや難解なプログラムとなりますが、従属変数を必ずしも指定しなくても良いこと、また複数の展開方法がサポートされているなどのメリットもあります。
proc transreg data=a design; model class(drug|disease); output out=out3; run; proc print data=out3; run; proc transreg data=a design; model class(drug|disease / effect); /*EFFECTコーディング*/ output out=out4; run; proc print data=out4; run;■ GLMMODプロシジャとTRANSREGプロシジャの比較
なお、SAS/IMLにもダミー変数に展開する関数が用意されています。また、次期バージョンSAS System 9 以降では、LOGISTICプロシジャなどにも同様の機能が加わる予定です。 |