Home>
SASのproc hpregで線形回帰
前回の続きです。
今回は、hpregで線形回帰を実施する方法を紹介します。
proc hpregで回帰分析
前回と同じように、学習するためのデータと予測を適用するためのデータを用意しておきます。
sas
data BASEBALL;
set sashelp.BASEBALL;
run;
data BASEBALL_test;
set sashelp.BASEBALL;
if _n_ < 30 then output;
drop logSalary;
run;
hpregで線形回帰をするには、以下のようにします。
sas
%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と異なる部分を解説していきます。
- classステートメントで指定した変数の値でダミー変数を作成する際、どの変数を作成するかの情報です。League Divisionそれぞれ2値なので、2つの変数を作成します。
- 評価指標一覧が出てきます。proc regと異なる点は、AIC、SBCなどが算出できる点です。
- カテゴリ変数に関しては、全てのダミー変数を入れると完全相関を起こしてしまうため、どれか1つの推定値は0になります。今回では、LeagueのNationalとDivisionのWestは推定値が0になっています。
- 交差項も入れることができます。
proc hpregで予測
hpregで出力したコードを使用して、予測します。
sas
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による分析手法も書いていきたいです。
Comments
Loading comments...