データをざっと見る話

プログラムをつくる際、ステップのたびにデータセットの中を確認するのはさすがに大変だけど、ちょいちょい覗いてチェックしながら書いた方が、結果的にミスなく速く終わるっていうのはよくある話です。

で、そういう話からデータをざっと見るのに、どんなことされてますか?って聞かれました。

はい、残念ながら特にこれといった凄技は使ってないです。

例えば僕の場合、補助的なお手軽チェック法としては
上位10カテゴリをmaxlevels=10ですくって全変数見る以下のようなコード

proc freq data=sashelp.cars order=freq;
 tables _all_ / maxlevels=10;
run;



























gsubmit "proc freq data=%8b.'%32b'N  order=freq;tables _all_ / missing maxlevels=10;run;"

と改造して、SASの右クリックカスタムメニューに入れているので、気になるデータセットを右クリックすればすぐにfreqの結果を見れるようにしてます。
(やり方は以下の記事参照)

gsubmitでSASメニューをカスタマイズしたおす話
http://sas-tumesas.blogspot.jp/2015/12/gsubmitsas.html

_all_で指定してるから、いちいち変数指定する必要や漏れもなく手軽。ID番号や登録日もどざっとでちゃうけど、10個なんで、スクロールですぐすっ飛ばせる。

最後はもちろんmaxlevelつけずに見た方がいいけど、途中確認は簡易で高速な方が、小まめにやる気が起きやすいかも。

あとはクロス表でチェックしたい際に
listオプションつけた方が目視チェックしやすいっていう話は、よく見ますよね
9.4からはcrosslistオプションが追加されました。listの場合は合計行の情報が落ちるわけですがcrosslistだと合計に関してもlist化されます。全体集計に意味がある場合はこっちの方がいいかなぁ

何もつけない場合も含めて3種の出力を比べてみる

title"通常";
proc freq data=sashelp.class;
tables sex*age;
run;

title"list";
proc freq data=sashelp.class;
tables sex*age/list;
run;

title"crosslist";
proc freq data=sashelp.class;
tables sex*age/crosslist;
run;






























あと個人的に好きなのが、クロスでチェックしたい際に、リストと合わせて
ods graphics on;
proc freq data=sashelp.cars order=freq;
 tables ORIGIN*TYPE/ plot=mosaic;
run;
ods graphics off;



とfreqのついでにモザイクプロットがplot=mosaicとするだけで出て来るのでつけてます。見た目が素敵で和むっていうのが主な使用理由ですが、リストでは気づきにくいけどプロットすると意外に気づくこともあるものです。

数値変数についてはやっぱり

ods graphics on;
ods select BasicMeasures plots;
proc univariate data=sashelp.class plot;
var _numeric_; 
run;
ods graphics off;






























って感じかなぁ。
要約統計量だけ見て、すぐに状況把握できるといいんでしょうけど、僕はグラフ欲しい派です。
ヒストグラムと箱髭は、考えた人偉いなぁって思います。
やっぱり、ID番号とか、見なくていいものもでちゃうし、グラフ書くと時間かかっちゃうのがネックですけどね

ああ、あと、実際見たことあるのは、変数をビン化するhpbinプロシジャ(9.4)をデータチェックに使っている人がいましたね。ヒストグラム描けばって思うけど、データ量が凄くてできるだけ高速に省エネでっていう状況ならありですかもね。デフォルトだと
データ範囲(最大値-最小値)をビン数で割った数の区切りでビン化されます

proc hpbin data=sashelp.class numbin=10;
 input _numeric_;
run;



0 件のコメント:

コメントを投稿