データとの対話
目次
ダミー変数を含む回帰分析。
回帰診断
因果関係についての考え方。
/* 診断つきの回帰分析 */
OPTIONS ls=80 ps=45;
LIBNAME ens "a:\ENSYU\";
/*回帰分析 広告への好意と相関が高い順に6変数を投入してみる。*/
proc reg data=ens.ensdat1;
model ALIKECM7=AAMUSE7 CGDCHAR7 APLESUR7 ADULL7 CGDSCEN7 CGDMUSC7
/p r stb cli collin ;
/* p 予測値を出力。
r 残差を出力
stb 標準化された偏回帰係数を出力。
cli 予測値の信頼区間を出力。
collin 多重共線性チェックのためのcondition indexを出力。 */
output out=reg_out1 p=prd r=res rstudent=sres;
/* out=reg_out1 出力されるデータセット名
p=prd 予測値をprdという変数名で出力
r=res 残差をresという変数名で出力
rstudent=sres 標準化残差をsresという変数名で出力 */
/*サンプル番号と従属変数、予測値、残差、標準化残差を印刷
残差の大きいオブザベーションの番号をチェックするため*/
proc print data=reg_out1;
var smpno alikecm7 prd res sres;
run;
/* 予測値prdと観測値をプロット*/
proc plot; plot prd *ALIKECM7;
plot prd *res;
/* 残差のヒストグラムを出力*/
proc chart;
hbar res;
run;
残差の大きいオブザベーションをはずして回帰分析を行うためのプログラム。
/*残差の大きいオブザベーションをはずして同様に*/
proc reg data=ens.ensdat1;
model ALIKECM7=AAMUSE7 CGDCHAR7 APLESUR7 ADULL7 CGDSCEN7 CGDMUSC7
/p r stb cli collin ;
output out=reg_out1 p=prd r=res rstudent=sres;
where (smpno ^=15 and smpno^=48);
/*where 条件文で処理を行うオブザベーションを指定する。
=,>,<,<=,>=などの条件文が使える。
proc reg 以外のすべてのプロシジャでも使える。
ここではproc printで残差の大きいのはsmpno:サンプル番号が15と48なのでそれを除く。*/
run;
proc print data=reg_out1;
var smpno alikecm7 prd res sres;
proc plot;
plot prd *ALIKECM7;
plot prd *res;
proc chart;
hbar res;
run;
参考)procregを続けてする場合(editorウインドウのタイトルバーにproc reg実行中と表示されているとき)にはreweihtを使うこともできる。
/* はずれ値を除く 一度、proc regを実行してからでないとreweightコマンドは使えない。*/
LIBNAME ens "a:\ENSYU\";
proc reg data=ens.ensdat1;
model ALIKECM7=AAMUSE7 CGDCHAR7 APLESUR7 ADULL7 CGDSCEN7 CGDMUSC7
/p r stb cli collin;
output out=reg_out1 p=prd r=res rstudent=sres;;
run;
/*ここにproc printやchartコマンドがないことに注意:あるとproc regから出てしまうので
以下はエラーになってしまう。*/
reweight obs.= 15 / weight=0; /* 除きたいオブザベーションの番号を指定する*/
reweight obs.=48 / weight=0;
/*ここにproc reg コマンドがないことに注意:あると除かれない。*/
model ALIKECM7=AAMUSE7 CGDCHAR7 APLESUR7 ADULL7 CGDSCEN7 CGDMUSC7
/p r stb cli collin;
output out=reg_out1 p=prd r=res rstudent=sres;
run;
Condition Index の値が30〜100の時には中程度から強い共線性があると診 断される。
その際には説明変数間の相関をみて、相関が高い説明変数のどちらかを落として いく。
回帰診断も行う。