プログラミングと機械学習のメモ
日付: カテゴリ: SAS
データ分析を行うなら、基本統計量の算出とグラフの出力は必須!ということで、SASで簡単なグラフを描いていこうと思います。今回は散布図を紹介します。
今回はIrisデータセットを使用します。Irisデータセットの変数説明と中身は以下の通りです。
Irisデータはsashelpライブラリにあるので、そこからworkライブラリに持ってきます。
また、散布図を書くために、ods graphicsを設定します。
data iris;
set sashelp.iris;
run;
ods graphics on;
ods graphics /width=16cm height=12cm;
まずは、最も簡単な散布図を描きましょう。
title "SepalLength-SepalWidthの散布図";
proc sgplot data=iris;
scatter x=SepalLength y=SepalWidth;
run;
sgplotプロシジャを使用すれば簡単にそれなりの散布図を描くことができます。
上図を詳しく見ると、実はX座標とY座標が共に同一の点が存在します。しかし、それがどの程度重なっているかを判別するのは難しいです。Jitter Plotを使用すれば、重なっている部分を少しずらして見ることができます。
title "SepalLength-SepalWidthの散布図 (Jitter Plot)";
proc sgplot data=iris;
scatter x=SepalLength y=SepalWidth/Jitter;
run;
重なっている部分がちょっと見やすくなりましたね。
マーカーはデフォルトでは青い○ですが、もちろん変更することができます。
title "SepalLength-SepalWidthの散布図 (散布図の点の種類を変える)";
proc sgplot data=iris;
scatter x=SepalLength y=SepalWidth/
MARKERATTRS=(color=red symbol=diamond size=8);
run;
赤いダイヤモンドで散布図が作成されました。マーカーの種類はここを参考にしてください。
グループごとに散布図の色を変えたいときもよくありますよね。sgplotでは、「group=」で指定してあげるだけでOKです。
title "SpeciesごとのSepalLength-SepalWidthの散布図";
proc sgplot data=iris;
scatter x=SepalLength y=SepalWidth/group=Species
MARKERATTRS=(symbol=CircleFilled size=10);
run;
花の種類によって花弁の長さや幅が異なることがわかりますね。
連続値の値によって散布図の色分けを行いたいこともよくあります。これをヒートマップと呼んだりします。これも簡単に行うことができます。
title "PetalLengthで色付けしたSepalLength-SepalWidthの散布図";
proc sgplot data=iris;
scatter x=SepalLength y=SepalWidth/
COLORMODEL=(blue gray red) COLORRESPONSE=PetalLength
MARKERATTRS=(symbol=CircleFilled size=10);
run;
花弁が短く、幅が広いところではがくの長さが短いことがわかりますね。
変数が多くなると、いちいち散布図を作成するのは面倒です。そこで、散布図を一気にかける散布図行列を紹介します。
ods graphics/width=19cm height=19cm;
title "散布図行列";
proc sgscatter data=iris;
matrix _numeric_;
run;
散布図行列は変数が多すぎると処理が終わらなかったり、すごく小さくなってしまって見にくくなってしまったりします。変数の数には注意しましょう。