頻度集計とグループ内統計量

統計解析 02 クラス : 第09回 (06/14/07)

 前回までに分布特性を把握するためのいくつかの指標を説明し、 その使い方や注意点を喚起した。またグループ分けが有用なことも説明した。 今回は、単純集計としてよく利用される頻度集計やクロス集計の方法を紹介する。

  1. 頻度集計(名義尺度、離散変量の場合) : 度数の把握、クロス表

    1. プログラム : Lesson 09-1 : les0901.sas
       /* Lesson 09-1 */
       /*    File Name = les0901.sas   06/14/07   */
      
      data gakusei;
        infile 'all07ae.prn'
          firstobs=2;
        input sex $ shintyou taijyuu kyoui
              jitaku $ kodukai carryer $ tsuuwa;
       
      proc print data=gakusei(obs=5);
      run;
                                                    :
      proc freq data=gakusei;                       : 頻度を算出
        tables sex jitaku carryer;                  : 一変量ごとに
      run;                                          :
      proc freq data=gakusei;                       : 頻度を算出
        tables sex*jitaku;                          : 二変量の組み合わせで
        tables sex*carryer;                         :
        tables jitaku*carryer;                      :
      run;                                          :
      
    2. 出力結果 : les0901.lst :
      • 自宅生/下宿生の人数、自宅生/下宿生の人数。これらの組合わせの人数。
      • 頻度、割合(%)、累積頻度、累積割合(%)
      • 頻度、全体割合、縦割合、横割合
                                    SAS システム                             1
                                                12:44 Wednesday, June 13, 2007
      
       OBS  SEX  SHINTYOU  TAIJYUU  KYOUI  JITAKU  KODUKAI  CARRYER   TSUUWA
      
         1   F     145.0      38       .     J      10000                 . 
         2   F     146.7      41      85     J      10000   Vodafone   6000 
         3   F     148.0      42       .     J      50000                 . 
         4   F     148.0      43      80     J      50000   DoCoMo     4000 
         5   F     148.9       .       .     J      60000                 .
      
                                    SAS システム                             2
                                                12:44 Wednesday, June 13, 2007
      
                                            Cumulative  Cumulative
                 SEX   Frequency   Percent   Frequency    Percent 
                 -------------------------------------------------
                 F          124      33.5         124       33.5  
                 M          246      66.5         370      100.0  
      
                               Frequency Missing = 5
      
                                              Cumulative  Cumulative
                JITAKU   Frequency   Percent   Frequency    Percent 
                ----------------------------------------------------
                G             120      37.4         120       37.4  
                J             201      62.6         321      100.0  
      
                               Frequency Missing = 54
      
                                               Cumulative  Cumulative
               CARRYER    Frequency   Percent   Frequency    Percent 
               ------------------------------------------------------
               DDIp              2       1.4           2        1.4  
               DoCoMo           60      40.8          62       42.2  
               J-PHONE          10       6.8          72       49.0  
               KDDI              1       0.7          73       49.7  
               No                5       3.4          78       53.1  
               Vodafone         20      13.6          98       66.7  
               Willcom           1       0.7          99       67.3  
               au               39      26.5         138       93.9  
               au+willc          1       0.7         139       94.6  
               docomo            5       3.4         144       98.0  
               docomo+w          1       0.7         145       98.6  
               softbank          1       0.7         146       99.3  
               vodafone          1       0.7         147      100.0  
      
                              Frequency Missing = 228
      
                                    SAS システム                             6
                                                12:44 Wednesday, June 13, 2007
                               TABLE OF SEX BY JITAKU
      
                        SEX       JITAKU
                        Frequency|
                        Percent  |
                        Row Pct  |
                        Col Pct  |G       |J       |  Total
                        ---------+--------+--------+
                        F        |     36 |     70 |    106
                                 |  11.29 |  21.94 |  33.23
                                 |  33.96 |  66.04 |
                                 |  30.25 |  35.00 |
                        ---------+--------+--------+
                        M        |     83 |    130 |    213
                                 |  26.02 |  40.75 |  66.77
                                 |  38.97 |  61.03 |
                                 |  69.75 |  65.00 |
                        ---------+--------+--------+
                        Total         119      200      319
                                    37.30    62.70   100.00
      
                        Frequency Missing = 56
      
                                    SAS システム                             9
                                                12:44 Wednesday, June 13, 2007
                              TABLE OF SEX BY CARRYER
      
           SEX       CARRYER
           Frequency|
           Percent  |
           Row Pct  |
           Col Pct  |DDIp    |DoCoMo  |J-PHONE |KDDI    |No      |  Total
           ---------+--------+--------+--------+--------+--------+
           F        |      1 |     25 |      4 |      0 |      1 |     56
                    |   0.68 |  17.12 |   2.74 |   0.00 |   0.68 |  38.36
                    |   1.79 |  44.64 |   7.14 |   0.00 |   1.79 |
                    |  50.00 |  41.67 |  44.44 |   0.00 |  20.00 |
           ---------+--------+--------+--------+--------+--------+
           M        |      1 |     35 |      5 |      1 |      4 |     90
                    |   0.68 |  23.97 |   3.42 |   0.68 |   2.74 |  61.64
                    |   1.11 |  38.89 |   5.56 |   1.11 |   4.44 |
                    |  50.00 |  58.33 |  55.56 | 100.00 |  80.00 |
           ---------+--------+--------+--------+--------+--------+
           Total           2       60        9        1        5      146
                        1.37    41.10     6.16     0.68     3.42   100.00
           (Continued)
      
                                    SAS システム                            11
                                                12:44 Wednesday, June 13, 2007
                              TABLE OF SEX BY CARRYER
      
           SEX       CARRYER
           Frequency|
           Percent  |
           Row Pct  |
           Col Pct  |Vodafone|Willcom |au      |au+willc|docomo  |  Total
           ---------+--------+--------+--------+--------+--------+
           F        |      9 |      1 |     12 |      1 |      1 |     56
                    |   6.16 |   0.68 |   8.22 |   0.68 |   0.68 |  38.36
                    |  16.07 |   1.79 |  21.43 |   1.79 |   1.79 |
                    |  45.00 | 100.00 |  30.77 | 100.00 |  20.00 |
           ---------+--------+--------+--------+--------+--------+
           M        |     11 |      0 |     27 |      0 |      4 |     90
                    |   7.53 |   0.00 |  18.49 |   0.00 |   2.74 |  61.64
                    |  12.22 |   0.00 |  30.00 |   0.00 |   4.44 |
                    |  55.00 |   0.00 |  69.23 |   0.00 |  80.00 |
           ---------+--------+--------+--------+--------+--------+
           Total          20        1       39        1        5      146
                       13.70     0.68    26.71     0.68     3.42   100.00
           (Continued)
      
                                    SAS システム                            13
                                                12:44 Wednesday, June 13, 2007
                              TABLE OF SEX BY CARRYER
      
           SEX       CARRYER
           Frequency|
           Percent  |
           Row Pct  |
           Col Pct  |docomo+w|softbank|vodafone|  Total
           ---------+--------+--------+--------+
           F        |      0 |      1 |      0 |     56
                    |   0.00 |   0.68 |   0.00 |  38.36
                    |   0.00 |   1.79 |   0.00 |
                    |   0.00 | 100.00 |   0.00 |
           ---------+--------+--------+--------+
           M        |      1 |      0 |      1 |     90
                    |   0.68 |   0.00 |   0.68 |  61.64
                    |   1.11 |   0.00 |   1.11 |
                    | 100.00 |   0.00 | 100.00 |
           ---------+--------+--------+--------+
           Total           1        1        1      146
                        0.68     0.68     0.68   100.00
      
           Frequency Missing = 229
      
                                    SAS システム                            16
                                                12:44 Wednesday, June 13, 2007
                             TABLE OF JITAKU BY CARRYER
      
           JITAKU     CARRYER
           Frequency|
           Percent  |
           Row Pct  |
           Col Pct  |DDIp    |DoCoMo  |J-PHONE |KDDI    |No      |  Total
           ---------+--------+--------+--------+--------+--------+
           G        |      1 |     21 |      4 |      1 |      0 |     47
                    |   0.79 |  16.67 |   3.17 |   0.79 |   0.00 |  37.30
                    |   2.13 |  44.68 |   8.51 |   2.13 |   0.00 |
                    | 100.00 |  41.18 |  44.44 | 100.00 |   0.00 |
           ---------+--------+--------+--------+--------+--------+
           J        |      0 |     30 |      5 |      0 |      4 |     79
                    |   0.00 |  23.81 |   3.97 |   0.00 |   3.17 |  62.70
                    |   0.00 |  37.97 |   6.33 |   0.00 |   5.06 |
                    |   0.00 |  58.82 |  55.56 |   0.00 | 100.00 |
           ---------+--------+--------+--------+--------+--------+
           Total           1       51        9        1        4      126
                        0.79    40.48     7.14     0.79     3.17   100.00
           (Continued)
      
                                    SAS システム                            18
                                                12:44 Wednesday, June 13, 2007
                             TABLE OF JITAKU BY CARRYER
      
           JITAKU     CARRYER
           Frequency|
           Percent  |
           Row Pct  |
           Col Pct  |Vodafone|Willcom |au      |au+willc|docomo  |  Total
           ---------+--------+--------+--------+--------+--------+
           G        |      4 |      0 |     12 |      0 |      2 |     47
                    |   3.17 |   0.00 |   9.52 |   0.00 |   1.59 |  37.30
                    |   8.51 |   0.00 |  25.53 |   0.00 |   4.26 |
                    |  23.53 |      . |  35.29 |   0.00 |  40.00 |
           ---------+--------+--------+--------+--------+--------+
           J        |     13 |      0 |     22 |      1 |      3 |     79
                    |  10.32 |   0.00 |  17.46 |   0.79 |   2.38 |  62.70
                    |  16.46 |   0.00 |  27.85 |   1.27 |   3.80 |
                    |  76.47 |      . |  64.71 | 100.00 |  60.00 |
           ---------+--------+--------+--------+--------+--------+
           Total          17        0       34        1        5      126
                       13.49     0.00    26.98     0.79     3.97   100.00
           (Continued)
      
                                    SAS システム                            20
                                                12:44 Wednesday, June 13, 2007
                             TABLE OF JITAKU BY CARRYER
      
           JITAKU     CARRYER
           Frequency|
           Percent  |
           Row Pct  |
           Col Pct  |docomo+w|softbank|vodafone|  Total
           ---------+--------+--------+--------+
           G        |      1 |      1 |      0 |     47
                    |   0.79 |   0.79 |   0.00 |  37.30
                    |   2.13 |   2.13 |   0.00 |
                    | 100.00 | 100.00 |   0.00 |
           ---------+--------+--------+--------+
           J        |      0 |      0 |      1 |     79
                    |   0.00 |   0.00 |   0.79 |  62.70
                    |   0.00 |   0.00 |   1.27 |
                    |   0.00 |   0.00 | 100.00 |
           ---------+--------+--------+--------+
           Total           1        1        1      126
                        0.79     0.79     0.79   100.00
      
           Frequency Missing = 249
      
    3. [補足1] SAS は、パソコン画面のサイズ(正確には Output エリアのサイズ)によっては、 出力の縦横幅が変るように設計されている。 上記の出力中、「SEX x JITAKU」のクロス表は、 デフォルトの画面サイズ(何も指定しない場合)では、 縦に分断されたように表示される。 これは、教室のパソコンの画面では縦方向の行数が少ないので、 クロス表が「小出し」に表示されるためである。 間にある 15行程の不要部分を削除すると、視覚的にも理解しやすい クロス表を得ることができ、配布資料はそのような編集作業後のものである。 皆さんもレポート作成時にはこの様な編集作業を行って 親切なレポート作成を心掛けてください。

    4. [補足2] 上の出力例を見ると、携帯電話会社の名前が大文字のものと小文字のものが 混在していることが判る。本来であれば同じ会社を指すと考えられるので、 そのような場合は、再定義すれば良い。データパートに以下の再定義文を挿入する。 なお、社名や経営母体を変更した会社について、 どのように対応するかは別に考える必要がある。
      プログラム例 : les0901Rename.sas、 出力結果 : les0901Rename.lst
      ≪前略≫
      if carryer="au+willc" then carryer="au+Willc";
      if carryer="docomo"   then carryer="DoCoMo";
      if carryer="docomo+w" then carryer="DoCoMo+W";
      if carryer="vodafone" then carryer="Vodafone";
      ≪後略≫
      

    5. [補足3] 累積頻度の使い方の一つとして、頻度の高いもの順(降順)と言う指定もでき、 「上位 50% までのパターンを知りたい」と言うような時に使うことができる。
      プログラム例 : les0901Order.sas、 出力結果 : les0901Order.lst
      ≪前略≫
      proc freq data=gakusei order=freq;      : 頻度の高いもの順
        tables sex jitaku carryer;            :
      run;                                    :
                                              :
      proc freq data=gakusei order=freq;      : 頻度の高いもの順
        tables sex*jitaku;                    :
        tables sex*carryer;                   :
        tables jitaku*carryer;                :
      run;                                    :
      ≪後略≫
      

    6. [演習1] 上記の例では二変量の組合わせまでを行ったが、 三変量以上の組合わせを行うことも可能である。 その際の出力はどのようになるかを予想し、その後実際に実行してみよ。 出力結果は何を表現し、また、予想は正しかったか?
      プログラム : les0902.sas、 出力結果 : les0902.lst

    7. [演習2] 上記の例では名義尺度変量(離散変量)を使って 集計を行ったが、shintyou 等の連続変量(数値変量)を使っても実行できる。 その際の出力はどのようになるかを予想し、その後実際に実行してみよ。 出力結果は何を表現し、また、予想は正しかったか?
      プログラム : les0903.sas、 出力結果 : les0903.lst

  2. 頻度集計(連続変量の場合) : 度数の把握、クロス表

    1. プログラム : Lesson 09-4 : les0904.sas
       /* Lesson 09-4 */
       /*    File Name = les0904.sas   06/14/07   */
      
      data gakusei;
        infile 'all07ae.prn'
          firstobs=2;
        input sex $ shintyou taijyuu kyoui 
              jitaku $ kodukai carryer $ tsuuwa;
      
      proc format;                           : 階級を作る。class shintyou の意
        value clshint  low-<150='   -149'    : 階級の定義 1
                       150-<160='150-159'    :            2
                       160-<170='160-169'    :            3
                       170-<180='170-179'    :            4
                       180-high='180-   '    :            5
                       other   ='missing';   :            6
      run;                                   :
      
      proc print data=gakusei(obs=5);
      run;
      
      proc freq data=gakusei;                : 頻度を算出
        tables shintyou;                     : 一変量ごとに
        format shintyou clshint.;            : 連続変量をグループ化することの指定
      run;                                   :
                                             :
      proc freq data=gakusei;                : 頻度を算出
        tables sex*shintyou;                 : 二変量の組合わせで
        format shintyou clshint.;            : 連続変量をグループ化することの指定
      run;                                   :
                                             :
      proc sort data=gakusei;                : 今までの方法で実現しようとすると
        by sex;                              :
      run;                                   :
      proc freq data=gakusei;                :
        tables shintyou;                     :
        format shintyou clshint.;            : 連続変量をグループ化することの指定
        by sex;                              : 性別ごとに
      run;                                   :
      
    2. 出力結果 : les0904.lst : 階級ごとの頻度
      • 各階級ごとの頻度、割合(%)、累積頻度、累積割合(%)
                                    SAS システム                             2
                                                12:44 Wednesday, June 13, 2007
      
                                               Cumulative  Cumulative
               SHINTYOU   Frequency   Percent   Frequency    Percent 
               ------------------------------------------------------
                  -149           6       1.7           6        1.7  
               150-159          54      15.0          60       16.7  
               160-169         123      34.2         183       50.8  
               170-179         153      42.5         336       93.3  
               180-             24       6.7         360      100.0  
      
                               Frequency Missing = 15
      
                                    SAS システム                             3
                                                12:44 Wednesday, June 13, 2007
                              TABLE OF SEX BY SHINTYOU
      
           SEX       SHINTYOU
           Frequency|
           Percent  |
           Row Pct  |
           Col Pct  |   -149 |150-159 |160-169 |170-179 |180-    |  Total
           ---------+--------+--------+--------+--------+--------+
           F        |      6 |     52 |     57 |      2 |      0 |    117
                    |   1.67 |  14.48 |  15.88 |   0.56 |   0.00 |  32.59
                    |   5.13 |  44.44 |  48.72 |   1.71 |   0.00 |
                    | 100.00 |  96.30 |  46.72 |   1.31 |   0.00 |
           ---------+--------+--------+--------+--------+--------+
           M        |      0 |      2 |     65 |    151 |     24 |    242
                    |   0.00 |   0.56 |  18.11 |  42.06 |   6.69 |  67.41
                    |   0.00 |   0.83 |  26.86 |  62.40 |   9.92 |
                    |   0.00 |   3.70 |  53.28 |  98.69 | 100.00 |
           ---------+--------+--------+--------+--------+--------+
           Total           6       54      122      153       24      359
                        1.67    15.04    33.98    42.62     6.69   100.00
      
           Frequency Missing = 16
      
                                    SAS システム                             6
                                                12:44 Wednesday, June 13, 2007
      ------------------------------- SEX=' ' --------------------------------
                                               Cumulative  Cumulative
               SHINTYOU   Frequency   Percent   Frequency    Percent 
               ------------------------------------------------------
               160-169           1     100.0           1      100.0  
      
                               Frequency Missing = 4
      
                                    SAS システム                             7
                                                12:44 Wednesday, June 13, 2007
      -------------------------------- SEX=F ---------------------------------
                                               Cumulative  Cumulative
               SHINTYOU   Frequency   Percent   Frequency    Percent 
               ------------------------------------------------------
                  -149           6       5.1           6        5.1  
               150-159          52      44.4          58       49.6  
               160-169          57      48.7         115       98.3  
               170-179           2       1.7         117      100.0  
      
                               Frequency Missing = 7
      
                                    SAS システム                             8
                                                12:44 Wednesday, June 13, 2007
      -------------------------------- SEX=M ---------------------------------
                                               Cumulative  Cumulative
               SHINTYOU   Frequency   Percent   Frequency    Percent 
               ------------------------------------------------------
               150-159           2       0.8           2        0.8  
               160-169          65      26.9          67       27.7  
               170-179         151      62.4         218       90.1  
               180-             24       9.9         242      100.0  
      
                               Frequency Missing = 4
      
  3. 各グループごとでの集計、基礎統計量

    1. プログラム : les0905.sas
       /* Lesson 09-5 */
       /*    File Name = les0905.sas   06/14/07   */
      
      data gakusei;
        infile 'all07ae.prn'
          firstobs=2;
        input sex $ shintyou taijyuu kyoui 
              jitaku $ kodukai carryer $ tsuuwa;
      
      proc format;
        value clshint  low-<150='   -149'
                       150-<160='150-159'
                       160-<170='160-169'
                       170-<180='170-179'
                       180-high='180-   '
                       other   ='missing';
      run;
      
      proc print data=gakusei(obs=5);
      run;
      
      proc tabulate data=gakusei;                  : 要約統計量の表の作成
        class sex jitaku;                          : 特性変数であることの宣言
        var kodukai;                               : 集計する変量名
        tables kodukai*(n mean std),sex*jitaku;    : 表示内容、分類変量名
      run;                                         :
      
      proc tabulate data=gakusei;                  :
        class shintyou sex;                        :
        var taijyuu;                               :
        tables taijyuu*(n mean std),shintyou*sex;  :
        format shintyou clshint.;                  : 連続変量をグループ化することの指定
      run;                                         :
      
    2. 出力結果 : les0905.lst
      • 身長と性別によって区分される各グループごとの体重の傾向をつかむ
      • 各グループの体重に関するサンプルサイズ、平均値と標準偏差
                                    SAS システム                             2
                                                12:44 Wednesday, June 13, 2007
       ----------------------------------------------------------------------
       |                |                        SEX                        |
       |                |---------------------------------------------------|
       |                |            F            |            M            |
       |                |-------------------------+-------------------------|
       |                |         JITAKU          |         JITAKU          |
       |                |-------------------------+-------------------------|
       |                |     G      |     J      |     G      |     J      |
       |----------------+------------+------------+------------+------------|
       |KODUKAI|N       |       34.00|       68.00|       82.00|      126.00|
       |       |--------+------------+------------+------------+------------|
       |       |MEAN    |    77647.06|    35110.29|    86256.10|    25777.78|
       |       |--------+------------+------------+------------+------------|
       |       |STD     |    58390.47|    31307.91|    59470.88|    32858.21|
       ----------------------------------------------------------------------
      
                                    SAS システム                             3
                                                12:44 Wednesday, June 13, 2007
       ----------------------------------------------------------------------
       |                |                     SHINTYOU                      |
       |                |---------------------------------------------------|
       |                |    -149    |         150-159         |  160-169   |
       |                |------------+-------------------------+------------|
       |                |    SEX     |           SEX           |    SEX     |
       |                |------------+-------------------------+------------|
       |                |     F      |     F      |     M      |     F      |
       |----------------+------------+------------+------------+------------|
       |TAIJYUU|N       |        5.00|       40.00|        2.00|       38.00|
       |       |--------+------------+------------+------------+------------|
       |       |MEAN    |       41.80|       47.31|       54.50|       51.07|
       |       |--------+------------+------------+------------+------------|
       |       |STD     |        2.59|        4.61|        9.19|        3.47|
       ----------------------------------------------------------------------
       (CONTINUED)
      
                                    SAS システム                             4
                                                12:44 Wednesday, June 13, 2007
       ----------------------------------------------------------------------
       |                |                     SHINTYOU                      |
       |                |---------------------------------------------------|
       |                |  160-169   |         170-179         |    180-    |
       |                |------------+-------------------------+------------|
       |                |    SEX     |           SEX           |    SEX     |
       |                |------------+-------------------------+------------|
       |                |     M      |     F      |     M      |     M      |
       |----------------+------------+------------+------------+------------|
       |TAIJYUU|N       |       65.00|        0.00|      151.00|       24.00|
       |       |--------+------------+------------+------------+------------|
       |       |MEAN    |       58.50|           .|       63.10|       67.56|
       |       |--------+------------+------------+------------+------------|
       |       |STD     |        7.35|           .|        7.54|        7.38|
       ----------------------------------------------------------------------
      

  4. 次回は、... : 06月21日 14:45

  5. [おまけ1] いくつかのファイル形式 : デリミタの指定
    Excel 等で入力したデータを SAS に読み込ませる場合、 講義の中では「スペース区切り(*.prn)」を紹介した。 これ以外の形式のファイルも読み込めるものがあり、 その場合には以下のような SAS のプログラムを用いる。
    「スペース区切り」の場合、セル幅を上手く調節しないと意図通りに読み込ませる ことができないことを経験したかもしれないが、以下の区切り記号の場合は、 そのような心配は生じないので便利だと思われる。

    1. カンマ区切り(csv 形式)のファイルを読む場合 : *.csv
      [コメント] CSV 形式のファイルを読み込む場合、文字列の長さを指定しないと、 8文字(8バイト)しか読み込んでくれない。しかし、かと言って、input 文に 単に文字数を指定すると、カンマを超えて読み込もうとする。 また、欠損値が続くとそれ等を一つの欠損値として読み込んでしまう。 それらの欠点を一挙に解決するには以下の様式のプログラムを用いる。 続く欠損値を個々にバラして読ませ(infile 中の dsd)、 デリミタが出現するところまでの任意の長さの文字列を読み込む(input 中の : )ように指定する。
      data mon2007;
        infile 'd:\home\mon05d.csv' dlm=',' 
               firstobs=2
               truncover; 
               missover
               dsd
      ;
        input No $ Univ : $30. SName : $40. Faculty : $50. Dept : $50.
              Center1 : $8. Center2 : $8. Sel1 : $8. Sel2 : $8.
              Book1 : $10. Book2 : $10.
              Vol0  VolS  VolT
              ZenKou $ ScoreS  ScoreT  KoKouSi
      ;
      

    2. タブ区切りのファイルを読む場合 : *.txt
      data mon2007;
        infile 'd:\home\mon05e.txt' dlm='09'x 
               firstobs=2
               truncover; 
      

  6. [おまけ2] 1レコード(1行)のレコード長が長い場合 : 一行の長さの指定、例えば 230バイトだと

  7. [おまけ3] 行末がそろってないデータの読み込み : 一行の長さを指定し、揃ってないことを明示

  8. [おまけ4] 固定長データの読み込み : カラム位置の指定

  9. [おまけ5] データファイルの先頭を読み飛ばす : コメント等が挿入されているような場合。先頭 3行を読み飛ばす場合は
[DIR]講義のホームページへ戻ります