**************************************************************;
* TAB030331s3.sas *;
* proc tabulate を使おう *;
* section 3 : 分析変数と統計量 *;
* 2003.3.31, 翔 *;
* 2008.3.17, 改定1 *;
**************************************************************;
options nocenter;
libname mydata "c;\";
/*
前セッションと同じく
1年間にクレジットカードを利用したホテル利用者の特徴を学習させることを目的としたのデータ。1,450人分を使って,実行例を示します.
*/
data creditcard;
infile "c:\train_space.txt" firstobs=2 dlm='09'x; /*外部ファイルから入力*/
input id hotel xgender $ xage xincome xmarital $ xusage xretail xrest xenter xtrans xother; /*読み込むデータを指定*/
run;
proc print data=creditcard(obs=5);run;
/*
OBS id hotel xgender xage xincome xmarital xusage xretail xrest xenter xtrans xother
1 1 0 female 60 . single 300000 100000 1 0 0 30000
2 2 1 male 40 . single 30000 10000 0 0 0 30000
3 3 0 male 40 . single 100000 100000 1 0 10000 100000
4 4 0 male 30 . single 300000 300000 10000 100000 30000 10000
5 5 0 male 40 . single 10000 10000 1 0 0 1
*/
/*****************************************************
ここまでは,Freqと同じく,度数(件数)集計を扱ってきましたが,
このセクションでは,度数以外の統計量について扱います.
まず,小売の年間利用料X性別毎に,いままでのような件数ではなく,年間総利用料の平均額を
表示させてみましょう.
*/
proc tabulate data=creditcard formchar=" " noseps missing format=comma9.;
class xmarital xgender;
var xusage;
table xmarital*xusage*mean
,xgender;
run;
/*
xgender
female male
xmarital
married xusage Mean 134,589 115,402
single xusage Mean 136,282 112,137
*/
/*
いままでどおり class文で,地区と性別を分類変数に宣言するに加え,
var文で,年間総利用料xusageを分析変数として宣言します.
次に,table文では,xmaritalに分析変数xusageを"*"で交差させ,
さらに,平均を表示するための統計量キーワード mean を連結します.
要は,度数表指定に,分析変数と統計量を交差で追記すればいいわけです.
この場合,表側に追記しましたが,表頭でもかまいません.
どうちがうのかを答えるかわりに,平均と件数,最大値,最小値を同時に
表示させる表を作成します.
*/
proc tabulate data=creditcard formchar=" " noseps missing format=comma9.;
class xmarital xgender;
var xusage;
table xmarital*xusage*(n min mean max)
,xgender;
run;
/*
xgender
female male
xmarital
married xusage N 146 783
Min 1 0
Mean 134,589 115,402
Max 300,000 300,000
single xusage N 156 365
Min 1 0
Mean 136,282 112,137
Max 300,000 300,000
*/
/*
分析変数と統計量は,同じ次元で指定しなくてもかまいません.
分析変数を表側に,統計量を表頭に指定してもよく,
結局,表のセル上で,1つの分析変数と1つの統計量が決まっていれば
いいのです.もちろん,わざわざややこしく指定する必要はありませんが,
どのような表にしたいかで,そのような指定になってしまう場合があります.
例を示します.
*/
proc tabulate data=creditcard formchar=" " noseps missing format=comma9.;
class xmarital xgender;
var xusage xage;
table xmarital*(xusage xage)
,xgender*(mean p50);
run;
/*
xgender
female male
Mean P50 Mean P50
xmarital
married xusage 134,589 100,000 115,402 100,000
xage 52 60 54 60
single xusage 136,282 100,000 112,137 100,000
xage 46 40 42 40
*/
/******************************************************
表示できる統計量は,
COLPCTN
COLPCTSUM
CSS
CV
MAX
MEAN
MIN
N
NMISS
P1
P5
P10
P25
P50
P75
P90
P95
P99
PAGEPCTN
PAGEPCTSUM
PCTN
PCTSUM
PROBT
QRANGE
RANGE
REPPCTN
REPPCTSUM
ROWPCTN
ROWPCTSUM
STD
STDERR
SUM
SUMWGT
T
USS
VAR
とこれだけありますが,だいたい名前で想像つくものも多いと思います.
ここでは,よく使いそうなものを説明しておきます.
n : 度数,これは分析変数を必要としません.
分類変数のみの場合のデフォルト統計量で,セクション1,2では,
これが,省略されていたわけです.
mean : 平均値
p50 : 中央値,50%点
min,max : 最小,最大値
sum : 合計
nmiss : 欠損値数
これ以外でも,PCT系統計量は便利ですが,これらについては後のセクションで説明します.
言い忘れましたが,分析変数は,数値データでなくてはいけません.
数値であれば,2値だろうが順序尺度だろうが構いません.
それに対して平均値をとって意味があるかどうかは,分析者の判断です.
*/
/*******************************************************
件数以外の統計量を表示する場合,表示フォーマットは,小数点以下の桁まで
表示したいときがあります.
交差単位で,フォーマットを指定する場合,キーワードf=を使います.
*/
proc tabulate data=creditcard formchar=" " noseps missing format=comma9.;
class xmarital xgender;
var xusage xage;
table xmarital*(xusage xage*f=7.2)
,xgender*(mean p50);
run;
/*
xgender
female male
Mean P50 Mean P50
xmarital
married xusage 134,589 100,000 115,402 100,000
xage 52 60 54 60
single xusage 136,282 100,000 112,137 100,000
xage 46 40 42 40
*/
/****************************************************
最後に,このセクションのテーマとは,はずれる話ですが,
各変数や統計量にラベルをつけることができます.
その例を示します.
*/
proc format;
value $sex male="男" female="女";
value $area married="既婚" single="未婚";
run;
proc tabulate data=creditcard formchar=" " noseps missing format=comma9.;
class xmarital xgender;
var xusage xage;
table xmarital="配偶者有無"*(xusage="年間総利用料" xage="年齢"*f=7.2)
,xgender="性別"*(mean="平均" p50="中央値");
format xmarital $area. xgender $sex.;
run;
/*
性別
女 男
平均 中央値 平均 中央値
配偶者有無
既婚 年間総利用料 134,589 100,000 115,402 100,000
年齢 51.99 60.00 54.05 60.00
未婚 年間総利用料 136,282 100,000 112,137 100,000
年齢 45.96 40.00 42.30 40.00
*/
**********************************************************************;
************** E N D *************************************************;
**********************************************************************;
質問・意見
質問・意見一覧
一覧に表示する項目はありません.