線形回帰分析における適合度検定

[OS] ALL
[リリース] ALL
[キーワード] LACK-OF-FIT, REG, RSREG, GLM

[質問]

線形回帰分析をしていますが、モデルの適合性を検証する Lack-of-Fit 検定は実行できますか。

[回答]

説明変数の組み合わせに対して値に重複がある場合、線形回帰分析において指定しているモデルが適切であるかを検証できます。
SAS 9.2 以降では、REG プロシジャで LACKFIT オプションを指定してこの検定を実行可能です。

DATA one;                                  /*サンプルデータ*/
  INPUT y x1 x2 @@;
DATALINES;
 64.0    4.0    2.0  73.0    4.0    4.0  61.0    4.0    2.0
 76.0    4.0    4.0  72.0    6.0    2.0  80.0    6.0    4.0
 71.0    6.0    2.0  83.0    6.0    4.0  83.0    8.0    2.0
 89.0    8.0    4.0  86.0    8.0    2.0  93.0    8.0    4.0
 88.0   10.0    2.0  95.0   10.0    4.0  94.0   10.0    2.0
100.0   10.0    4.0
;
RUN;

PROC REG DATA=one;
  MODEL y = x1 x2 / LACKFIT; 
RUN;QUIT;

アウトプットの分散分析表の中で、Lack of Fit の行に検定の結果が出力されています。

また、RSREG プロシジャの MODEL ステートメントで、LACKFIT オプションを指定して検定の結果を得ることもできます。ただし、説明変数の数を COVAR=オプションで指定してください。この機能は、SAS の全てのバージョンで利用できます。

PROC RSREG DATA=one;
  MODEL y = x1 x2 / LACKFIT COVAR=2; 
RUN;

この検定は、GLM プロシジャを用いて行うことも可能です。事前に DATA ステップを用いて、各説明変数と同じ数値をもつ変数を作成します。次に GLM プロシジャの CLASS ステートメントで、複製した変数を指定します。MODEL ステートメントでは、当初の説明変数の後に複製した変数全てからなる交互作用を与え、さらに SS1 オプションを指定します。

DATA two;
  SET one;
  x1_c=x1;
  x2_c=x2;
RUN;

PROC GLM DATA=two;
  CLASS x1_c x2_c;
  MODEL y=x1 x2 x1_c*x2_c / SS1;
RUN;QUIT;

GLM プロシジャのアウトプットでは、変数 x1_c*x2_c に対する行に適合度検定が出力され、回帰モデルがデータに対して適切であるかを判断できます。