TABULATE入門4

Last-modified: 2015-09-12 (土) 04:03:47

**************************************************************;
* TAB030401s4.sas                                            *;
* proc tabulate を使おう                                     *;
* section 4 : PCT系統計量                                    *;
* 2003.4.1, 翔                                              *;
* 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

*/

/*****************************************************
統計量のなかで,比率をあらわすPCT系統計量について,とりあげます.
前もっていっておくと,比率を扱うには,PCT系統計量を使う
以外にも方法があり,それは次のセクションで述べるつもりです.

PCT系統計量は,全部で10種類あり,いずれも
パーセンテージ,構成比を表示するのに使います.
大別すると,分類変数用のPCTN系と分析変数用のPCTSUM系があります.

          分類変数 分析変数
          件数比率 合計比率
-----------------   --------  --------
パーセント     PCTN      PCTSUM
横パーセント        ROWPCTN   ROWPCTSUM
縦パーセント        COLPCTN   COLPCTSUM
シートパーセント    PAGEPCTN  PAGEPCTSUM
レポートパーセント  REPPCTN   REPPCTSUM

まず,基本であるPCTNとPCTSUMの例を示します.
*/

proc tabulate data=creditcard  formchar="           " noseps missing format=comma9.;
  class xretail xgender xincome;
  var   xusage;
  table all xincome
       ,(all xgender)*(n pctn*f=7.1)
       /rts=10;
run;

/*
                                          xgender

                 All             female             male

              N      PctN       N      PctN       N      PctN

 All          1,450   100.0       302    20.8     1,148    79.2
 xincome
 .               34     2.3         2     0.1        32     2.2
 1              673    46.4       128     8.8       545    37.6
 100            114     7.9        59     4.1        55     3.8
 300            158    10.9        50     3.4       108     7.4
 500            154    10.6        25     1.7       129     8.9
 700            138     9.5        19     1.3       119     8.2
 1000           179    12.3        19     1.3       160    11.0
*/


proc tabulate data=creditcard  formchar="           " noseps missing format=comma11.;
  class xretail xgender xincome;
  var   xusage;
  table all xincome
       ,(all xgender)*xusage*(n sum pctsum*f=7.1)
       /rts=10;
run;

/*

                                                                      xgender

                        All                           female                           male

                      xusage                          xusage                          xusage

               N          Sum     PctSum       N          Sum     PctSum       N          Sum     PctSum

 All            1,450 172,200,103   100.0         302  40,910,012    23.8       1,148 131,290,091    76.2
 xincome
 .                 34   5,480,001     3.2           2     600,000     0.3          32   4,880,001     2.8
 1                673  78,730,045    45.7         128  17,790,003    10.3         545  60,940,042    35.4
 100              114  12,650,010     7.3          59   7,060,003     4.1          55   5,590,007     3.2
 300              158  17,530,014    10.2          50   6,910,004     4.0         108  10,620,010     6.2
 500              154  19,550,005    11.4          25   3,920,000     2.3         129  15,630,005     9.1
 700              138  15,210,007     8.8          19   2,010,000     1.2         119  13,200,007     7.7
 1000             179  23,050,021    13.4          19   2,620,002     1.5         160  20,430,019    11.9

*/


/*
上の例で明らかなように,PCTNは,件数Nの全体に対する構成比です.
もちろん件数Nをわざわざ並列しなくても,PCTNだけ表示できます.
同様にPCTSUMは,合計SUMの全体に対する構成比です.
*/


/********************************************************
PCTN,PCTSUMの前に,ROW,COL,PAGE,REPをつけることで,
全体に対する比率ではなく,横,縦,シート,レポート全体を100%
とした比率を表示できます.なお,REPPCTNとPCTN,
REPPCTSUMとPCTSUMは,結局同じことです.
*/



proc tabulate data=creditcard  formchar="           " noseps missing format=comma9.;
  class xretail xgender xincome;
  var   xusage;
  table all xincome
       ,(all xgender)*(n rowpctn*f=7.1)
       /rts=10;
run;

/*
                                          xgender

                 All             female             male

              N     RowPctN     N     RowPctN     N     RowPctN

 All          1,450   100.0       302    20.8     1,148    79.2
 xincome
 .               34   100.0         2     5.9        32    94.1
 1              673   100.0       128    19.0       545    81.0
 100            114   100.0        59    51.8        55    48.2
 300            158   100.0        50    31.6       108    68.4
 500            154   100.0        25    16.2       129    83.8
 700            138   100.0        19    13.8       119    86.2
 1000           179   100.0        19    10.6       160    89.4

*/




proc tabulate data=creditcard  formchar="           " noseps missing format=comma9.;
  class xretail xgender xincome;
  var   xusage;
  table all xincome
       ,(all xgender)*(n colpctn*f=7.1)
       /rts=10;
run;

/*
                                          xgender

                 All             female             male

              N     ColPctN     N     ColPctN     N     ColPctN

 All          1,450   100.0       302   100.0     1,148   100.0
 xincome
 .               34     2.3         2     0.7        32     2.8
 1              673    46.4       128    42.4       545    47.5
 100            114     7.9        59    19.5        55     4.8
 300            158    10.9        50    16.6       108     9.4
 500            154    10.6        25     8.3       129    11.2
 700            138     9.5        19     6.3       119    10.4
 1000           179    12.3        19     6.3       160    13.9


*/


/**************************************************************
PCTNとPCTSUMには,どこまでを範囲を100%とするか(分母)をコントロールすることも
できます.表の構成が複雑になると,それに合わせてこの分母指定も非常に複雑に
なりますから,ここでは簡単な例示にとどめます.
*/


proc tabulate data=creditcard  formchar="           " noseps missing format=comma9.;
  class xretail xgender xincome;
  var   xusage;
  table xincome
       ,all*(n pctn*f=7.1)   xgender*(n pctn<xgender>*f=7.1)
       /rts=10;
run;

/*
                                          xgender

                 All             female             male

              N      PctN       N      PctN       N      PctN

 xincome
 .               34     2.3         2     5.9        32    94.1
 1              673    46.4       128    19.0       545    81.0
 100            114     7.9        59    51.8        55    48.2
 300            158    10.9        50    31.6       108    68.4
 500            154    10.6        25    16.2       129    83.8
 700            138     9.5        19    13.8       119    86.2
 1000           179    12.3        19    10.6       160    89.4


*/

/*
PCTNの後ろに<>で分母の範囲を指定しています.
<xgender>というのは,xgenderで分類する前を100%とするという意味です.

PCTSUMの分母指定をつかえば,ローンの極度と平残から消化率を出すこともできます.
ここでは,説明のために,年間総利用料を極度,エンターテイメントの年間利用料を平残とみなして,消化率表示の例を
示します.
*/


proc tabulate data=creditcard  formchar="           " noseps missing format=comma11.;
  class xincome;
  var   xusage xenter;
  table xincome
       ,n
        xusage*mean="極度"
        xenter*mean="平残"
        xenter*pctsum<xusage>="消化率"*f=8.1
       /rts=10;
run;

/*
                        xusage      xenter     xenter

               N         極度        平残      消化率

 xincome
 .                 34     161,177      29,118     18.1
 1                673     116,984      10,951      9.4
 100              114     110,965       1,667      1.5
 300              158     110,949       2,975      2.7
 500              154     126,948      11,039      8.7
 700              138     110,217      13,043     11.8
 1000             179     128,771      17,821     13.8

*/

/*
PCT<>型指定は,便利な反面,それ以上に文法がややこしいことを覚えておいてください.
交差がもっと複雑な表になると,<>内に複数の変数交差を意味を考えて書き込まなければならないからです.
たとえば,つぎにような感じです.
pctn<all xusage xgender xusage*xgender>
でも,この規則は,私もちゃんと理解できていないので,うまく説明できません.
理解したければ,SASのマニュアルを読み解いてください.

比率を表示する場合のいくつかは,次のセクションで紹介する方法を応用することを
おすすめします.
*/

/*
極度 ・・・ 1ヶ月間で使っていい金額の上限。限度額。限度枠。ショッピング枠、キャッシング枠、ローン枠とか種類がある。
平残 ・・・ 1ヶ月間の平均残高。例えば、1月に使った額、2月に使った額、・・・、12月に使った額を1年(12ヶ月)で平均する。
消化率・・・ 平残÷極度。使える枠(限度額)のうち、どのくらい使ってもらえているかを示す数字。
*/

**********************************************************************;
************** E N D *************************************************;
**********************************************************************;

質問・意見

サマリ 質問の要旨を簡潔にお願いします。
お名前
状態
メッセージ

質問・意見一覧

一覧に表示する項目はありません.