LOGISTICプロシジャにおけるカテゴリカル変数のコード化について
[OS] ALL
[リリース] 8.1 8.2
[キーワード] LOGISTIC, CONTRAST, PARAM=, GLM, EFFECT
[質問]カテゴリカル変数(たとえばTREAT)を含むロジスティック回帰の分析をLOGISTICプロシジャにて実行しています。その際、GLMプロシジャ、GENMODプロシジャと同じように、CONTRASTステートメントを指定していますが、ログ画面に以下のメッセージが表示されます。 WARNING: More coefficients than levels specified for effect treat. Some coefficients will be ignored.このメッセージを回避する方法を教えてください。 [回答]LOGISTICプロシジャのCLASSステートメントでカテゴリカル変数を指定している場合、ダミー変数を作成するデフォルトの方法がEFFECTコーディングとなります。GLMプロシジャ、GENMODプロシジャでは異なる方法(GLMコーディング)でダミー変数を作成しているので、CONTRASTステートメントの係数の指定に注意する必要があります。 ここでは、メッセージを回避する方法として2つご紹介します。なお、簡単な例として、水準数が3であると仮定します。 例 1:LOGISTICプロシジャのCLASSステートメントでPARAM=オプションを指定することにより、ダミー変数の作成方法をGLMコーディングに変更する例PROC LOGISTIC DATA=one; CLASS treat / PARAM=glm; /* GLMコーディングを指定 */ MODEL RESP=treat; CONTRAST '1 vs 2' treat 1 -1 0; CONTRAST '1 vs 3' treat 1 0 -1; CONTRAST '2 vs 3' treat 0 1 -1; RUN; GLMコーディングを用いることにより、GLMプロシジャ、GENMODプロシジャと同じようにCONTRASTステートメントにおける係数の指定を行うことができます。 例 2:デフォルトであるEFFECTコーディングに従い、係数の指定を行なう例EFFECTコーディングの場合、以下のように水準数より1つ少ない数のダミー変数(X_1,X_2)が作成されます。TREAT X_1 X_2 1 1 0 2 0 1 3 -1 -1 この場合、変数TREATにおける最初の水準(1)と2番目の水準(2)を比較する場合には、2行目の係数を1行目の係数から差し引くことにより、CONTRASTステートメントにて指定すべき係数を求めることができます。他の比較に関しても同じようにして求められます。その結果、以下のようにCONTRASTステートメントの係数を指定することになります。 PROC LOGISTIC DATA=one; CLASS treat; MODEL RESP=treat; /* EFFECTコーディングにおける水準の比較 */ CONTRAST '1 vs 2' treat 1 -1; CONTRAST '1 vs 3' treat 2 1; CONTRAST '2 vs 3' treat 1 2; RUN; |