対応のある2標本の差の検定、頻度集計、グループごとの集計、Tips

統計モデル解析特論I/II : 第13回 (02/01/18)

  前回はグループごとの平均値に差があるかの比較方法(検定)を幾つか説明した。 今回は対応のある2標本の差の検定について紹介する。
 後半は、単純集計としてよく利用される頻度集計やクロス集計の方法について 説明すると共にデータをファイルから読み込む際に知っておくと便利なコマンドを紹介する。
  1. 対応のある 2群の検定

    1. プログラム : Lesson 13-01 : les1301.sas
       /* Lesson 13-01 */
       /*    File Name = les1301.sas  02/01/18   */
      
      options nocenter linesize=78 pagesize=30;
      proc printto print = 'Kougi/les1301_Results.txt' new;
      
      data pair;
        input x y @@;                                : 改行せずに続けて読むことの指定
        dif=y-x;                                     : 前後の差を計算
      cards;
        5.1 4.7  6.2 6.1  6.8 7.2  7.4 7.3  3.9 3.6  : 2つ1組みでデータを列挙
        3.5 3.7  5.3 4.8  4.5 4.4  5.9 5.5  4.8 4.6  : 
      ;
      
      proc print data=pair;
      run;
                                           : Stem and Leaf を表示させるには
      ods listing;                         : 以下の plot オプション用に指定。
      ods graphics off;                    : 以下の plot オプション用に指定。
      proc univariate data=pair plot;      : 基礎統計量の算出。plot オプションを指定。
        var dif;                           : 指定した変量について
      run;
      

    2. 出力
      • html 形式: les1301-results.html
      • pdf 形式: les1301-results.pdf
      • テキストファイル: les1301_Results.txt : 漢字コードがUTF-8で記述されているため、(ブラウザに依るが)そのままだと文字化けする

      • 処置の前後の変化が統計的に意味のあるものかを判断する。
      • 両者の差がゼロかどうかを観る。
      • 判断のロジックは前週と同じ。
                                     2018年 1月31日 水曜日 22時41分04秒  24
      
      Obs     x      y      dif
      
        1    5.1    4.7    -0.4
        2    6.2    6.1    -0.1
        3    6.8    7.2     0.4
        4    7.4    7.3    -0.1
        5    3.9    3.6    -0.3
        6    3.5    3.7     0.2
        7    5.3    4.8    -0.5
        8    4.5    4.4    -0.1
        9    5.9    5.5    -0.4
       10    4.8    4.6    -0.2
      
                                     2018年 1月31日 水曜日 22時41分04秒  25
      UNIVARIATE プロシジャ
      変数 :  dif
                                  モーメント
      
      N                             10    重み変数の合計            10
      平均                     -0.15    合計                         -1.5
      標準偏差          0.27988093    分散                   0.07833333
      歪度                0.83622187    尖度                    0.2797646
      無修正平方和          0.93    修正済平方和            0.705
      変動係数          -186.58728    平均の標準誤差    0.08850612
      
                         基本統計量
             位置                    ばらつき
      
      平均      -0.15000     標準偏差         0.27988
      中央値   -0.15000     分散               0.07833
      最頻値   -0.10000     範囲               0.90000
                               四分位範囲      0.30000
      
                                     2018年 1月31日 水曜日 22時41分04秒  26
      UNIVARIATE プロシジャ
      変数 :  dif
                      位置の検定 H0: Mu0=0
       
      検定                   -統計量-    ------p 値-------
      
      Student の t 検定    t   -1.6948    Pr > |t|    0.1244
      符号検定             M        -3    Pr >= |M|   0.1094
      符号付順位検定       S     -15.5    Pr >= |S|   0.1211
      
         分位点 (定義 5)
      水準            分位点
      
      100% 最大値         0.40
      99%                    0.40
      95%                    0.40
      90%                    0.30
      75% Q3                -0.10
      50% 中央値         -0.15
      25% Q1                -0.40
      10%                   -0.45
      5%                    -0.50
      1%                    -0.50
      0% 最小値          -0.50
      
                                     2018年 1月31日 水曜日 22時41分04秒  27
      UNIVARIATE プロシジャ
      変数 :  dif
                    極値
      --最小値--        --最大値--
       
       値      Obs         値      Obs
      
      -0.5        7        -0.1        2
      -0.4        9        -0.1        4
      -0.4        1        -0.1        8
      -0.3        5         0.2        6
      -0.2       10         0.4        3
      
          幹 葉                      #  Boxplot
            4 0                        1     0
            2 0                        1     |
            0                                |
           -0 000                      3  +--+--+
           -2 00                       2  |     |
           -4 000                      3  +-----+
              ----+----+----+----+
             幹.葉の単位 : 10**-1
      
                                     2018年 1月31日 水曜日 22時41分04秒  28
      UNIVARIATE プロシジャ
      変数 :  dif
                            正規確率プロット
           0.5+                                        *    ++++++
              |                                   *  +++++++
              |                               +++++++
              |                        *+*++*+ *
              |               * +*++*++
          -0.5+         +*++++++
               +----+----+----+----+----+----+----+----+----+----+
                   -2        -1         0        +1        +2
      

    3. 結果の見方 : Prob>|t|
      • 「Studentのt検定」の「両側 Pr > |t|」の項を見る。
      • 今回の2群の差が無い(ゼロ)と言える確率は12.4% で、5%(or 1%) よりも大きいので前後に差があるとは言えない。つまり、処理に効果があったとは言えない。

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

    1. プログラム : Lesson 13-2 : les1302.sas
       /* Lesson 13-02 */
       /*    File Name = les1302.sas  02/01/18   */
      
      options nocenter linesize=78 pagesize=30;
      proc printto print = 'Kougi/les1302_Results.txt' new;
      
      data gakusei;
        infile 'Kougi/all08c_sjis.csv'
          firstobs=2 dlm=',';
        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. 出力
      • html 形式: les1302-results.html
      • pdf 形式: les1302-results.pdf
      • テキストファイル: les1302_Results.txt : 漢字コードがUTF-8で記述されているため、(ブラウザに依るが)そのままだと文字化けする

      • 自宅生/下宿生の人数、自宅生/下宿生の人数。これらの組合わせの人数。
      • 頻度、割合(%)、累積頻度、累積割合(%)
      • 頻度、全体割合、縦割合、横割合
                                       2018年 1月31日 水曜日 23時07分50秒  50
        FREQ プロシジャ
                                               累積         累積
        sex     度数     パーセント     度数     パーセント
        -----------------------------------------------------------------
        F           134         33.58              134         33.58     
        M           265         66.42              399        100.00     
        
                              Frequency Missing = 5
        
                                                  累積         累積
        jitaku     度数     パーセント     度数     パーセント
        --------------------------------------------------------------------
        G              130         37.46              130         37.46     
        J              217         62.54              347        100.00     
        
                               Frequency Missing = 57
        
                                       2018年 1月31日 水曜日 23時07分50秒  51
        FREQ プロシジャ
                                                    累積         累積
        carryer      度数     パーセント     度数     パーセント
        ----------------------------------------------------------------------
        DDIp               2          1.14                2          1.14     
        DoCoMo            71         40.57               73         41.71     
        J-PHONE           10          5.71               83         47.43     
        KDDI               1          0.57               84         48.00     
        No                 5          2.86               89         50.86     
        Vodafone          20         11.43              109         62.29     
        Willcom            1          0.57              110         62.86     
        au                46         26.29              156         89.14     
        au+willc           1          0.57              157         89.71     
        au/willc           1          0.57              158         90.29     
        docomo             8          4.57              166         94.86     
        docomo+w           1          0.57              167         95.43     
        docomo/a           1          0.57              168         96.00     
        docomo/w           1          0.57              169         96.57     
        softbank           5          2.86              174         99.43     
        vodafone           1          0.57              175        100.00     
        
                               Frequency Missing = 229
        
                                       2018年 1月31日 水曜日 23時07分50秒  52
        FREQ プロシジャ
        表 : sex * jitaku
        sex             jitaku
        
        度数           |
        パーセント     |
        行のパーセ     |
        列のパーセ     |G       |J       | 合計
        ---------------+--------+--------+
        F              |     40 |     75 |    115
                       |  11.59 |  21.74 |  33.33
                       |  34.78 |  65.22 |
                       |  31.01 |  34.72 |
        ---------------+--------+--------+
        M              |     89 |    141 |    230
                       |  25.80 |  40.87 |  66.67
                       |  38.70 |  61.30 |
                       |  68.99 |  65.28 |
        ---------------+--------+--------+
        合計              129      216      345
                          37.39    62.61   100.00
        
        Frequency Missing = 59
        
                                       2018年 1月31日 水曜日 23時07分50秒  53
        FREQ プロシジャ
        表 : sex * carryer
        sex             carryer
        
        度数           |
        パーセント     |
        行のパーセ     |
        列のパーセ     |DDIp    |DoCoMo  |J-PHONE |KDDI    |No      |Vodafone| 合計
        ---------------+--------+--------+--------+--------+--------+--------+
        F              |      1 |     30 |      4 |      0 |      1 |      9 |     66
                       |   0.57 |  17.24 |   2.30 |   0.00 |   0.57 |   5.17 |  37.93
                       |   1.52 |  45.45 |   6.06 |   0.00 |   1.52 |  13.64 |
                       |  50.00 |  42.25 |  44.44 |   0.00 |  20.00 |  45.00 |
        ---------------+--------+--------+--------+--------+--------+--------+
        M              |      1 |     41 |      5 |      1 |      4 |     11 |    108
                       |   0.57 |  23.56 |   2.87 |   0.57 |   2.30 |   6.32 |  62.07
                       |   0.93 |  37.96 |   4.63 |   0.93 |   3.70 |  10.19 |
                       |  50.00 |  57.75 |  55.56 | 100.00 |  80.00 |  55.00 |
        ---------------+--------+--------+--------+--------+--------+--------+
        合計                2       71        9        1        5       20      174
                           1.15    40.80     5.17     0.57     2.87    11.49   100.00
        (続く)
        
                                       2018年 1月31日 水曜日 23時07分50秒  54
        FREQ プロシジャ
        表 : sex * carryer
        sex             carryer
        
        度数           |
        パーセント     |
        行のパーセ     |
        列のパーセ     |Willcom |au      |au+willc|au/willc|docomo  |docomo+w| 合計
        ---------------+--------+--------+--------+--------+--------+--------+
        F              |      1 |     15 |      1 |      0 |      1 |      0 |     66
                       |   0.57 |   8.62 |   0.57 |   0.00 |   0.57 |   0.00 |  37.93
                       |   1.52 |  22.73 |   1.52 |   0.00 |   1.52 |   0.00 |
                       | 100.00 |  32.61 | 100.00 |   0.00 |  12.50 |   0.00 |
        ---------------+--------+--------+--------+--------+--------+--------+
        M              |      0 |     31 |      0 |      1 |      7 |      1 |    108
                       |   0.00 |  17.82 |   0.00 |   0.57 |   4.02 |   0.57 |  62.07
                       |   0.00 |  28.70 |   0.00 |   0.93 |   6.48 |   0.93 |
                       |   0.00 |  67.39 |   0.00 | 100.00 |  87.50 | 100.00 |
        ---------------+--------+--------+--------+--------+--------+--------+
        合計                1       46        1        1        8        1      174
                           0.57    26.44     0.57     0.57     4.60     0.57   100.00
        (続く)
        
                                       2018年 1月31日 水曜日 23時07分50秒  55
        FREQ プロシジャ
        表 : sex * carryer
        sex             carryer
        
        度数           |
        パーセント     |
        行のパーセ     |
        列のパーセ     |docomo/a|docomo/w|softbank|vodafone| 合計
        ---------------+--------+--------+--------+--------+
        F              |      0 |      0 |      3 |      0 |     66
                       |   0.00 |   0.00 |   1.72 |   0.00 |  37.93
                       |   0.00 |   0.00 |   4.55 |   0.00 |
                       |   0.00 |   0.00 |  60.00 |   0.00 |
        ---------------+--------+--------+--------+--------+
        M              |      1 |      1 |      2 |      1 |    108
                       |   0.57 |   0.57 |   1.15 |   0.57 |  62.07
                       |   0.93 |   0.93 |   1.85 |   0.93 |
                       | 100.00 | 100.00 |  40.00 | 100.00 |
        ---------------+--------+--------+--------+--------+
        合計                1        1        5        1      174
                           0.57     0.57     2.87     0.57   100.00
        
        Frequency Missing = 230
        
                                       2018年 1月31日 水曜日 23時07分50秒  56
        FREQ プロシジャ
        表 : jitaku * carryer
        jitaku          carryer
        
        度数           |
        パーセント     |
        行のパーセ     |
        列のパーセ     |DDIp    |DoCoMo  |J-PHONE |KDDI    |No      |Vodafone| 合計
        ---------------+--------+--------+--------+--------+--------+--------+
        G              |      1 |     27 |      4 |      1 |      0 |      4 |     56
                       |   0.66 |  17.88 |   2.65 |   0.66 |   0.00 |   2.65 |  37.09
                       |   1.79 |  48.21 |   7.14 |   1.79 |   0.00 |   7.14 |
                       | 100.00 |  44.26 |  44.44 | 100.00 |   0.00 |  23.53 |
        ---------------+--------+--------+--------+--------+--------+--------+
        J              |      0 |     34 |      5 |      0 |      4 |     13 |     95
                       |   0.00 |  22.52 |   3.31 |   0.00 |   2.65 |   8.61 |  62.91
                       |   0.00 |  35.79 |   5.26 |   0.00 |   4.21 |  13.68 |
                       |   0.00 |  55.74 |  55.56 |   0.00 | 100.00 |  76.47 |
        ---------------+--------+--------+--------+--------+--------+--------+
        合計                1       61        9        1        4       17      151
                           0.66    40.40     5.96     0.66     2.65    11.26   100.00
        (続く)
        ≪以下略≫
    3. [補足1] SAS の出力の内、「proc printto print = 'Kougi/les1301_Results.txt' new;」で 指定したファイルには「options nocenter linesize=78 pagesize=30;」 で表示エリアサイズに収まるように出力される (今回の場合で言えば一行78文字、一ページ30行)。 上記の出力でも、「SEX x JITAKU」のクロス表は、縦に分断されたように表示される。 これは、縦方向の行数が少ないので、クロス表が「小出し」に表示されるためである。 間にある 15行程の不要部分を削除すると、視覚的にも理解しやすい クロス表を得ることができ、配布資料はそのような編集作業後のものである。 皆さんもレポート作成時にはこの様な編集作業を行うと見易くなる。

    4. [補足2] 上の出力例を見ると、携帯電話会社の名前が大文字のものと小文字のものが 混在していることが判る。本来であれば同じ会社を指すと考えられるので、 そのような場合は、再定義すれば良い。データパートに以下の再定義文を挿入する。 なお、社名や経営母体を変更した会社について、 どのように対応するかは別に考える必要がある。
      ≪前略≫
      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% までのパターンを知りたい」と言うような時に使うことができる。 デフォルトではアルファベット順。
      ≪前略≫
      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] 上記の例では二変量の組合わせまでを行ったが、 三変量以上の組合わせを行うことも可能である。 その際の出力はどのようになるかを予想し、その後実際に実行してみよ。 出力結果は何を表現し、また、予想は正しかったか?
      ≪前略≫
      proc freq data=gakusei;
        tables sex*jitaku;             : 2重クロス集計
        tables sex*carryer;            : 2重クロス集計
        tables jitaku*carryer;         : 2重クロス集計
        tables sex*jitaku*carryer;     : 3重クロス集計
      run;
      ≪後略≫
      

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

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

    1. プログラム : Lesson 13-7 : les1307.sas
       /* Lesson 13-07 */
       /*    File Name = les1307.sas  02/01/18   */
      
      options nocenter linesize=78 pagesize=30;
      proc printto print = 'Kougi/les1307_Results.txt' new;
      
      data gakusei;
        infile 'Kougi/all08c_sjis.csv'
          firstobs=2 dlm=',';
        input sex $ shintyou taijyuu kyoui 
              jitaku $ kodukai carryer $ tsuuwa;
      
      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";
      
      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. 出力
      • html 形式: les1307-results.html
      • pdf 形式: les1307-results.pdf
      • テキストファイル: les1307_Results.txt : 漢字コードがUTF-8で記述されているため、(ブラウザに依るが)そのままだと文字化けする

      • 各階級ごとの頻度、割合(%)、累積頻度、累積割合(%)
                                     2018年 1月31日 水曜日 23時13分56秒 114
      FREQ プロシジャ
                                                  累積         累積
      shintyou     度数     パーセント     度数     パーセント
      ----------------------------------------------------------------------
          -149           6          1.54                6          1.54     
       150-159          61         15.68               67         17.22     
       160-169         131         33.68              198         50.90     
       170-179         163         41.90              361         92.80     
       180-             28          7.20              389        100.00     
      
                              Frequency Missing = 15
      
                                     2018年 1月31日 水曜日 23時13分56秒 115
      FREQ プロシジャ
      表 : sex * shintyou
      sex             shintyou
      
      度数           |
      パーセント     |
      行のパーセ     |
      列のパーセ     |   -149 |150-159 |160-169 |170-179 |180-    | 合計
      ---------------+--------+--------+--------+--------+--------+
      F              |      6 |     58 |     61 |      2 |      0 |    127
                     |   1.55 |  14.95 |  15.72 |   0.52 |   0.00 |  32.73
                     |   4.72 |  45.67 |  48.03 |   1.57 |   0.00 |
                     | 100.00 |  95.08 |  46.92 |   1.23 |   0.00 |
      ---------------+--------+--------+--------+--------+--------+
      M              |      0 |      3 |     69 |    161 |     28 |    261
                     |   0.00 |   0.77 |  17.78 |  41.49 |   7.22 |  67.27
                     |   0.00 |   1.15 |  26.44 |  61.69 |  10.73 |
                     |   0.00 |   4.92 |  53.08 |  98.77 | 100.00 |
      ---------------+--------+--------+--------+--------+--------+
      合計                6       61      130      163       28      388
                         1.55    15.72    33.51    42.01     7.22   100.00
      
      Frequency Missing = 16
      
                                     2018年 1月31日 水曜日 23時13分56秒 116
      
      sex=' '
      FREQ プロシジャ
                                                  累積         累積
      shintyou     度数     パーセント     度数     パーセント
      ----------------------------------------------------------------------
       160-169           1        100.00                1        100.00     
      
                               Frequency Missing = 4
      
                                     2018年 1月31日 水曜日 23時13分56秒 117
      sex=F
      FREQ プロシジャ
                                                  累積         累積
      shintyou     度数     パーセント     度数     パーセント
      ----------------------------------------------------------------------
          -149           6          4.72                6          4.72     
       150-159          58         45.67               64         50.39     
       160-169          61         48.03              125         98.43     
       170-179           2          1.57              127        100.00     
      
                               Frequency Missing = 7
      
                                     2018年 1月31日 水曜日 23時13分56秒 118
      sex=M
      FREQ プロシジャ
                                                  累積         累積
      shintyou     度数     パーセント     度数     パーセント
      ----------------------------------------------------------------------
       150-159           3          1.15                3          1.15     
       160-169          69         26.44               72         27.59     
       170-179         161         61.69              233         89.27     
       180-             28         10.73              261        100.00     
      
                               Frequency Missing = 4
      

  4. 各グループごとでの集計、基礎統計量

    1. プログラム : Lesson 13-8 : les1308.sas
       /* Lesson 13-08 */
       /*    File Name = les1308.sas  02/01/18   */
      
      options nocenter linesize=78 pagesize=30;
      proc printto print = 'Kougi/les1308_Results.txt' new;
      
      data gakusei;
        infile 'Kougi/all08c_sjis.csv'
          firstobs=2 dlm=',';
        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. 出力
      • html 形式: les1308-results.html
      • pdf 形式: les1308-results.pdf
      • テキストファイル: les1308_Results.txt : 漢字コードがUTF-8で記述されているため、(ブラウザに依るが)そのままだと文字化けする

      • 各階級ごとの頻度、割合(%)、累積頻度、累積割合(%)
                                     2018年 2月 1日 木曜日 11時42分20秒   2
      -----------------------------------------------------------------------
      |                 |                        sex                        |
      |                 |---------------------------------------------------|
      |                 |            F            |            M            |
      |                 |-------------------------+-------------------------|
      |                 |         jitaku          |         jitaku          |
      |                 |-------------------------+-------------------------|
      |                 |     G      |     J      |     G      |     J      |
      |-----------------+------------+------------+------------+------------|
      |kodukai |N       |       38.00|       73.00|       88.00|      136.00|
      |        |--------+------------+------------+------------+------------|
      |        |Mean    |    75710.53|    34897.26|    87988.64|    26970.59|
      |        |--------+------------+------------+------------+------------|
      |        |Std     |    57382.03|    30640.72|    73705.14|    33083.05|
      -----------------------------------------------------------------------
      
                                     2018年 2月 1日 木曜日 11時42分20秒   3
      -----------------------------------------------------------------------
      |                 |                     shintyou                      |
      |                 |---------------------------------------------------|
      |                 |    -149    |         150-159         |  160-169   |
      |                 |------------+-------------------------+------------|
      |                 |    sex     |           sex           |    sex     |
      |                 |------------+-------------------------+------------|
      |                 |     F      |     F      |     M      |     F      |
      |-----------------+------------+------------+------------+------------|
      |taijyuu |N       |        5.00|       42.00|        3.00|       41.00|
      |        |--------+------------+------------+------------+------------|
      |        |Mean    |       41.80|       47.42|       53.40|       51.16|
      |        |--------+------------+------------+------------+------------|
      |        |Std     |        2.59|        4.52|        6.77|        3.68|
      -----------------------------------------------------------------------
      (Continued)
      
                                     2018年 2月 1日 木曜日 11時42分20秒   4
      -----------------------------------------------------------------------
      |                 |                     shintyou                      |
      |                 |---------------------------------------------------|
      |                 |  160-169   |         170-179         |    180-    |
      |                 |------------+-------------------------+------------|
      |                 |    sex     |           sex           |    sex     |
      |                 |------------+-------------------------+------------|
      |                 |     M      |     F      |     M      |     M      |
      |-----------------+------------+------------+------------+------------|
      |taijyuu |N       |       69.00|        0.00|      161.00|       28.00|
      |        |--------+------------+------------+------------+------------|
      |        |Mean    |       58.72|           .|       63.13|       67.88|
      |        |--------+------------+------------+------------+------------|
      |        |Std     |        7.31|           .|        7.60|        7.87|
      -----------------------------------------------------------------------
      

  5. [おまけ: Tips] データをファイルから読み込む際に便利なコマンド: デリミタの指定等
     Excel 等で入力したデータを SAS に読み込ませる方法として、 csv 形式で保存してからSASで読み込む方法を紹介した。 これ以外にタブ区切り(*.txt)の形式のファイルも読み込むことができ、 その場合を含めて、幾つかの便利なコマンドをまとめて紹介しておく。

    1. カンマ区切り(csv 形式)のファイルを読む場合 : *.csv
        CSV 形式のファイルを読み込む場合、文字列の長さを指定しないと、 8文字(8バイト)しか読み込んでくれない。しかし、かと言って、input 文に 単に文字数を指定すると、カンマを超えて読み込もうとする。 また、欠損値が続くとそれ等を一つの欠損値として読み込んでしまう。 それらの欠点を一挙に解決するには以下の様式のプログラムを用いる。 続く欠損値を個々にバラして読ませ(infile 中の dsd)、 デリミタが出現するところまでの任意の長さの文字列を読み込む(input 中の : )ように指定する。
      data example2018;
        infile 'Kougi/foo1.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 example2018;
        infile 'Kougi/foo2.txt'
          dlm='09'x 
          firstobs=2
          truncover 
          missover;
      

    3. 1レコード(1行)のレコード長が長い場合 : 一行の長さの指定、例えば 230バイトだと
      data math;
        infile 'foo3.csv' lrecl=230;
      

    4. 行末がそろってないデータの読み込み : 一行の長さを指定し、揃ってないことを明示
      data math;
        infile 'foo4.csv' lrecl=230 truncover;
      

    5. 固定長データの読み込み : カラム位置の指定
      input
            kamoku   $   2
            kesseki  $   3
            k_code   $  10-11
            t_score     12-14
            s_scor01   103-104
            s_scor02   105-106
            s_scor03   107-108
            s_scor04   109-110
      ;
      

  6. 次回は、... : 02月08日 14:40 (講義としての最終回)
[DIR]講義のホームページへ戻ります