Shingoの数学ノート

プログラミングと機械学習のメモ

SASのproc hpregで線形回帰

日付:    カテゴリ: SAS


前回の続きです。

今回は、hpregで線形回帰を実施する方法を紹介します。

proc hpregで回帰分析

前回と同じように、学習するためのデータと予測を適用するためのデータを用意しておきます。

data BASEBALL;
  set sashelp.BASEBALL;
run;

data BASEBALL_test;
  set sashelp.BASEBALL;
  if _n_ < 30 then output;
  drop logSalary;
run;

hpregで線形回帰をするには、以下のようにします。

%LET PREDICT_DIR = <予測モデル出力ディレクトリ>;
proc hpreg data=BASEBALL;
  class league division;
  model logSalary = natbat
                    nhits
                    nhome
                    nruns
                    yrmajor
                    nouts
                    nassts
                    nerror
                    league
                    division
                    natbat * league /STB VIF;
/* selection method=stepwise; */
  code file="&PREDICT_DIR./hpreg_predict.sas";
run;

proc hpregでもmodelステートメントは使用することができます。

proc regで違う点を以下に書いておきます。

  • hpregではclassステートメントが使用でき、カテゴリ値をモデルに追加することができます。
  • 交差項を追加することができます。(ここではnatbat * league)
  • 予測するためにcodeステートメントを書く必要があります。
    codeステートメントはプログラムとしてモデルを保存するため、パスを指定する必要があります。
  • selectionステートメントで変数選択することができます。methodはforward、backward、stepwise、lassoなどがあります。(今回は出力結果を見やすくするため、コメントアウトしています。)
  • ※追記:proc regでもmodelステートメントでselectionを指定できました。

ここでは、proc regと異なる部分を解説していきます。

  1. classステートメントで指定した変数の値でダミー変数を作成する際、どの変数を作成するかの情報です。League Divisionそれぞれ2値なので、2つの変数を作成します。
  2. 評価指標一覧が出てきます。proc regと異なる点は、AIC、SBCなどが算出できる点です。
  3. カテゴリ変数に関しては、全てのダミー変数を入れると完全相関を起こしてしまうため、どれか1つの推定値は0になります。今回では、LeagueのNationalとDivisionのWestは推定値が0になっています。
  4. 交差項も入れることができます。

proc hpregで予測

hpregで出力したコードを使用して、予測します。

data BASEBALL_test_predict;
  set BASEBALL_test;
  %include "&PREDICT_DIR./hpreg_predict.sas";
run;

%includeを使用することで、出力したコードをそのまま使用することができます。

以上で、「BASEBALL_test_predict」に予測値がつきます。

proc regとproc hpreg

結局proc regとproc hpregどっちを使えば良いのか。

以下が大きな違いになります。

proc reg

  • 残差分析の種類が豊富です。
  • 予測結果に関するグラフをたくさん出してくれます。

proc hpreg

  • AIC、SBCなどの統計的な評価指標を算出してくれます。
  • カテゴリ変数、交差項を容易に入力できます。

自分は予測結果がどうなっているかを重視したいのでproc regを使いますが、そこはお好みで。。。

まとめ

今回もSASで回帰分析を実行する方法を記載しました。

需要があれば、他のSASによる分析手法も書いていきたいです。


Comment Box is loading comments...