新しいデータの生成といくつかのテクニック

統計解析 01 クラス : 第14回(07/17/03)

サンプルの取捨選択方法といくつかの便利なコマンドを紹介する。
  1. データの条件による取捨選択と新しいデータセットの生成

    1. プログラム : Lesson 14-1 : les1401.sas
       /* Lesson 14-1 */
       /*    File Name = les1401.sas   07/17/03   */
      
      data gakusei;
        infile 'all03a.prn' firstobs=2;
        input sex $ height weight chest 
              jitaku $ kodukai carrier $ tsuuwa;
      
      title "*** Whole data ***";                  : 各頁にタイトルを表示させる
      proc print data=gakusei(obs=5);
      run;
      proc means data=gakusei;
        var height kodukai;                        : 変量を指定
      run;
      proc chart data=gakusei;
        hbar height kodukai;                       : 変量を指定
      run;
      proc univariate data=gakusei plot;
        var height kodukai;                        : 変量を指定
      run;
      
      proc sort data=gakusei;
        by sex;
      run;
      
      proc means data=gakusei;
        var height kodukai;                        : 変量を指定
        by sex;
      run;
      proc chart data=gakusei;
        hbar height kodukai/group=sex;             : 変量を指定
      run;
      proc chart data=gakusei;                     :
        hbar height kodukai/group=jitaku;          : 自宅生/下宿生での比較
      run;                                         :
      
      title "*** Truncated data ***";              : 各頁にタイトルを表示させる
      data truncate;                               : 新しいデータに名前を付ける
        set gakusei;                               : 元データを持ってくる
        if kodukai > 200000 then delete;           : 外れ値を含むサンプルを削除する
      
      proc print data=truncate(obs=5);             : 対象データ名を変更
      run;
      proc means data=truncate;                    : 対象データ名を変更
        var height kodukai;
      run;
      proc chart data=truncate;                    : 対象データ名を変更
        hbar height kodukai;
      run;
      proc univariate data=truncate plot;          : 対象データ名を変更
        var height kodukai;
      run;
      
      proc sort data=truncate;                     : 対象データ名を変更
        by sex;
      run;
      
      proc means data=truncate;                    : 対象データ名を変更
        var height kodukai;
        by sex;
      run;
      proc chart data=truncate;                    : 対象データ名を変更
        hbar height kodukai/group=sex;
      run;
      proc chart data=truncate;                    : 対象データ名を変更
        hbar height kodukai/group=jitaku;
      run;
      

    2. 出力結果 : les1401.lst :
      • Log ファイルを見ることでもサンプルサイズが減少したことが判る。
        NOTE: データセット WORK.GAKUSEI は 252 オブザベーション , 8変数です.
        NOTE: データセット WORK.TRUNCATE は 250 オブザベーション , 8変数です.

      • 各統計量のサンプルサイズが変化していることを確認せよ。
      • 代表値の変化を確認せよ : 平均値(mean)、中央値(median)、最頻値(mode)
      • 身長と小遣いで変化の違いを把握せよ。
      • 小遣いの分布の変化を把握せよ。
      • ヒストグラム : 区間幅が変化するだけで印象が異なる。
                                 *** Whole data ***                          2
                                                 09:52 Thursday, July 10, 2003
      
       Variable    N          Mean       Std Dev       Minimum       Maximum
       ---------------------------------------------------------------------
       HEIGHT    243   168.2094650     8.0126058   145.0000000   186.0000000
       KODUKAI   230      51380.43      52427.62             0     300000.00
       ---------------------------------------------------------------------
      
                                 *** Whole data ***                          4
                                                 09:52 Thursday, July 10, 2003
             KODUKAI                            Cum.              Cum.
             Midpoint                     Freq  Freq  Percent  Percent
                       |
                   0   |***********         53    53    23.04    23.04
               30000   |****************    81   134    35.22    58.26
               60000   |********            39   173    16.96    75.22
               90000   |*****               26   199    11.30    86.52
              120000   |**                  11   210     4.78    91.30
              150000   |***                 14   224     6.09    97.39
              180000   |                     2   226     0.87    98.26
              210000   |                     2   228     0.87    99.13
              240000   |                     0   228     0.00    99.13
              270000   |                     0   228     0.00    99.13
              300000   |                     2   230     0.87   100.00
                       ----+---+---+---+
                           20  40  60  80
      
                                 *** Whole data ***                         11
                                                 09:52 Thursday, July 10, 2003
                                Univariate Procedure
      Variable=KODUKAI
                                      Moments
      
                      N               230  Sum Wgts        230
                      Mean       51380.43  Sum        11817500
                      Std Dev    52427.62  Variance   2.7487E9
                      Skewness   1.661303  Kurtosis   3.710083
                      USS        1.237E12  CSS        6.294E11
                      CV         102.0381  Std Mean   3456.975
                      T:Mean=0   14.86283  Pr>|T|       0.0001
                      Num ^= 0        189  Num > 0         189
                      M(Sign)        94.5  Pr>=|M|      0.0001
                      Sgn Rank     8977.5  Pr>=|S|      0.0001
      
                                 *** Whole data ***                         12
                                                 09:52 Thursday, July 10, 2003
                                Univariate Procedure
      Variable=KODUKAI
                                  Quantiles(Def=5)
      
                       100% Max    300000       99%    200000
                        75% Q3      70000       95%    150000
                        50% Med     30000       90%    127500
                        25% Q1      20000       10%         0
                         0% Min         0        5%         0
                                                 1%         0
                       Range       300000                    
                       Q3-Q1        50000                    
                       Mode             0                    
      
                                 *** Whole data ***                         15
                                                 09:52 Thursday, July 10, 2003
                                Univariate Procedure
      Variable=KODUKAI
                               Histogram                        #      Boxplot
       325000+*                                                 2         *   
             .                                                                
             .*                                                 2         0   
       175000+******                                           16         0   
             .*********                                        27         |   
             .****************                                 48      +--+--+
        25000+*********************************************   135      *-----*
              ----+----+----+----+----+----+----+----+----+              
              * may represent up to 3 counts                             
      
                                 *** Whole data ***                         23
                                                 09:52 Thursday, July 10, 2003
        SEX   KODUKAI                                 Cum.              Cum.
              Midpoint                          Freq  Freq  Percent  Percent
                        |
        F           0   |****                     11    13     4.78     5.65
                30000   |***********              27    40    11.74    17.39
                60000   |*******                  18    58     7.83    25.22
                90000   |**                        5    63     2.17    27.39
               120000   |*                         3    66     1.30    28.70
               150000   |*                         2    68     0.87    29.57
               180000   |                          1    69     0.43    30.00
               210000   |                          1    70     0.43    30.43
               240000   |                          0    70     0.00    30.43
               270000   |                          0    70     0.00    30.43
               300000   |                          1    71     0.43    30.87
                        |
        M           0   |*****************        42   113    18.26    49.13
                30000   |*********************    53   166    23.04    72.17
                60000   |********                 21   187     9.13    81.30
                90000   |********                 20   207     8.70    90.00
               120000   |***                       8   215     3.48    93.48
               150000   |*****                    12   227     5.22    98.70
               180000   |                          1   228     0.43    99.13
               210000   |                          1   229     0.43    99.57
               240000   |                          0   229     0.00    99.57
               270000   |                          0   229     0.00    99.57
               300000   |                          1   230     0.43   100.00
                        ----+---+---+---+---+-
                            10  20  30  40  50
                               Frequency
      
                                 *** Whole data ***                         29
                                                 09:52 Thursday, July 10, 2003
          JITAKU   KODUKAI                          Cum.              Cum.
                   Midpoint                   Freq  Freq  Percent  Percent
                             |
          G              0   |**                10    26     4.35    11.30
                     30000   |*                  5    31     2.17    13.48
                     60000   |***               15    46     6.52    20.00
                     90000   |****              19    65     8.26    28.26
                    120000   |**                10    75     4.35    32.61
                    150000   |***               14    89     6.09    38.70
                    180000   |                   2    91     0.87    39.57
                    210000   |                   1    92     0.43    40.00
                    240000   |                   0    92     0.00    40.00
                    270000   |                   0    92     0.00    40.00
                    300000   |                   1    93     0.43    40.43
                             |
          J              0   |********          40   133    17.39    57.83
                     30000   |**************    70   203    30.43    88.26
                     60000   |****              20   223     8.70    96.96
                     90000   |*                  4   227     1.74    98.70
                    120000   |                   1   228     0.43    99.13
                    150000   |                   0   228     0.00    99.13
                    180000   |                   0   228     0.00    99.13
                    210000   |                   1   229     0.43    99.57
                    240000   |                   0   229     0.00    99.57
                    270000   |                   0   229     0.00    99.57
                    300000   |                   1   230     0.43   100.00
                             ----+---+---+--
                                 20  40  60
                                Frequency
      
                               *** Truncated data ***                       33
                                                 09:52 Thursday, July 10, 2003
      
       Variable    N          Mean       Std Dev       Minimum       Maximum
       ---------------------------------------------------------------------
       HEIGHT    241   168.1738589     8.0143687   145.0000000   186.0000000
       KODUKAI   228      49199.56      47153.99             0     200000.00
       ---------------------------------------------------------------------
      
                               *** Truncated data ***                       35
                                                 09:52 Thursday, July 10, 2003
       KODUKAI                                         Cum.              Cum.
       Midpoint                                  Freq  Freq  Percent  Percent
                 |
             0   |*********************            53    53    23.25    23.25
         25000   |*****************************    72   125    31.58    54.82
         50000   |***************                  38   163    16.67    71.49
         75000   |********                         20   183     8.77    80.26
        100000   |******                           16   199     7.02    87.28
        125000   |****                             11   210     4.82    92.11
        150000   |*****                            13   223     5.70    97.81
        175000   |*                                 3   226     1.32    99.12
        200000   |*                                 2   228     0.88   100.00
                 ----+---+---+---+---+---+---+-
                     10  20  30  40  50  60  70
                            Frequency
      
                               *** Truncated data ***                       42
                                                 09:52 Thursday, July 10, 2003
                                Univariate Procedure
      Variable=KODUKAI
                                      Moments
      
                      N               228  Sum Wgts        228
                      Mean       49199.56  Sum        11217500
                      Std Dev    47153.99  Variance   2.2235E9
                      Skewness   1.140921  Kurtosis    0.57838
                      USS        1.057E12  CSS        5.047E11
                      CV         95.84229  Std Mean   3122.849
                      T:Mean=0    15.7547  Pr>|T|       0.0001
                      Num ^= 0        187  Num > 0         187
                      M(Sign)        93.5  Pr>=|M|      0.0001
                      Sgn Rank       8789  Pr>=|S|      0.0001
      
                               *** Truncated data ***                       43
                                                 09:52 Thursday, July 10, 2003
                                Univariate Procedure
      Variable=KODUKAI
                                  Quantiles(Def=5)
      
                       100% Max    200000       99%    180000
                        75% Q3      70000       95%    150000
                        50% Med     30000       90%    120000
                        25% Q1      20000       10%         0
                         0% Min         0        5%         0
                                                 1%         0
                       Range       200000                    
                       Q3-Q1        50000                    
                       Mode             0                    
      
                               Histogram                        #      Boxplot
       225000+*                                                 2         0   
             .******                                           16         0   
       125000+*********                                        27         |   
             .****************                                 48      +-----+
        25000+*********************************************   135      *--+--*
              ----+----+----+----+----+----+----+----+----+              
              * may represent up to 3 counts                             
      
                               *** Truncated data ***                       48
                                                 09:52 Thursday, July 10, 2003
      --------------------------------- SEX=F --------------------------------
       Variable    N          Mean       Std Dev       Minimum       Maximum
       ---------------------------------------------------------------------
       HEIGHT     73   159.2178082     5.5952694   145.0000000   171.0000000
       KODUKAI    68      49389.71      43441.83             0     200000.00
       ---------------------------------------------------------------------
      
                               *** Truncated data ***                       49
                                                 09:52 Thursday, July 10, 2003
      --------------------------------- SEX=M --------------------------------
       Variable    N          Mean       Std Dev       Minimum       Maximum
       ---------------------------------------------------------------------
       HEIGHT    167   172.0898204     5.3463154   156.0000000   186.0000000
       KODUKAI   158      48962.03      48873.54             0     200000.00
       ---------------------------------------------------------------------
      
                               *** Truncated data ***                       53
                                                 09:52 Thursday, July 10, 2003
      SEX   KODUKAI                                    Cum.              Cum.
            Midpoint                             Freq  Freq  Percent  Percent
                      |
      F           0   |******                      11    13     4.82     5.70
              25000   |************                24    37    10.53    16.23
              50000   |********                    15    52     6.58    22.81
              75000   |****                         8    60     3.51    26.32
             100000   |**                           3    63     1.32    27.63
             125000   |**                           3    66     1.32    28.95
             150000   |*                            2    68     0.88    29.82
             175000   |*                            1    69     0.44    30.26
             200000   |*                            1    70     0.44    30.70
                      |
      M           0   |*********************       42   112    18.42    49.12
              25000   |************************    47   159    20.61    69.74
              50000   |************                23   182    10.09    79.82
              75000   |******                      12   194     5.26    85.09
             100000   |******                      12   206     5.26    90.35
             125000   |****                         8   214     3.51    93.86
             150000   |******                      11   225     4.82    98.68
             175000   |*                            2   227     0.88    99.56
             200000   |*                            1   228     0.44   100.00
                      -----+----+----+----+----
                           10   20   30   40
                              Frequency
      
                               *** Truncated data ***                       59
                                                 09:52 Thursday, July 10, 2003
          JITAKU   KODUKAI                         Cum.              Cum.
                   Midpoint                  Freq  Freq  Percent  Percent
                             |
          G              0   |**               10    26     4.39    11.40
                     25000   |*                 3    29     1.32    12.72
                     50000   |**               11    40     4.82    17.54
                     75000   |***              13    53     5.70    23.25
                    100000   |**               12    65     5.26    28.51
                    125000   |**               10    75     4.39    32.89
                    150000   |***              13    88     5.70    38.60
                    175000   |*                 3    91     1.32    39.91
                    200000   |                  1    92     0.44    40.35
                             |
          J              0   |********         40   132    17.54    57.89
                     25000   |*************    65   197    28.51    86.40
                     50000   |****             22   219     9.65    96.05
                     75000   |*                 4   223     1.75    97.81
                    100000   |*                 3   226     1.32    99.12
                    125000   |                  1   227     0.44    99.56
                    150000   |                  0   227     0.00    99.56
                    175000   |                  0   227     0.00    99.56
                    200000   |                  1   228     0.44   100.00
                             ----+---+---+-
                                 20  40  60
                                Frequency
      

  2. if 文 : ある条件に合致した場合に、特定の処理を実行する。
    [例1] 目的のサンプルだけを抽出する : 条件を書き並べる
    [例2] 変量の値を割り当てなおす : 新しい値を右辺に書く

    [例3] 複数の処理をさせたい場合 : do 〜 end で囲む

    [比較演算子]

    = : 等しい
    ^= : 等しくない
    > : より大きい
    < : より小さい
    >= : 以上
    <= : 以下

    [論理演算子]

    ^ : 否定(NOT)
    & : 論理和(AND)
    | : 論理積(OR)

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

  4. 行末がそろってないデータの読み込み : 一行の長さを指定し、揃ってないことを明示
      data math;
        infile 'foomath.dat' 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. データファイルの先頭を読み飛ばす : コメント等が挿入されているような場合。先頭 3行を読み飛ばす場合は
      data math;
        infile 'foo.dat' firstobs=4;
      

  7. データの生成 : 乱数で(正規乱数) : 種(seed)の指定
      data rei01;
       do i=1 to 200;
         x=rannor(12345);
         output;
       end;
      run;
      
    [参考] : 乱数を生成する関数
      rannor : 正規乱数を生威します。
      ranuni : (0,1)の間の一様乱数を生成します。
      ranbin : 二項分布に従う乱数を生成します。
      rancau : コーシー乱数を生成します。
      ranexp : 指数乱数を生成します。
      rangam : ガンマ分布に従う乱数を生成します。
      ranpoi : ポアソン分布に従う乱数を生成します。
      rantbl : 指定した確率重み関数から、乱数を生成します。
      rantri : 三角分布に従う乱数を生成します。

  8. [例4] 乱数で疑似データを生成し、発生順、および昇順に並べて、それぞれをファイルに保存する
    • 91番から 110番(中央あたり)のデータの表示
    • 91番から 110番(中央あたり)のデータについて平均を計算する
    • データのアスキー保存 : フォーマット形式の指定に注意
    • データの並べ替え

    1. プログラム : les1402.sas

       /* Lesson 14-2 */
       /*    File Name = les1402.sas   11/21/02   */
      
      options linesize=72; /* pagesize=20; */      : 出力サイズの指定
      
      data rei01;                                  : データセット名を rei01 とする
       do i=1 to 200;                              : 200回の繰り返し
         x=rannor(12345);                          : 正規乱数を発生させる
         output;                                   : データセットに追加する
       end;                                        : 繰り返しの終端
      run;                                         :
      
      proc print data=rei01(obs=10);               : 先頭 10ケースの表示
      run;                                         :
      
      proc means data=rei01;                       : 全データに対する平均の計算
      run;                                         :
      
      proc print data=rei01(firstobs=91 obs=110);  : 91番から 110番のデータの表示
      run;                                         :
      
      proc means data=rei01(firstobs=91 obs=110);  : 91番から 110番のデータについての平均
      run;                                         :
      
      data _null_;                                 : データセット名は付けない
        set rei01;                                 : 元となるデータセット名
        file "unsorted.dat";                       : 出力ファイル名
        put i 5. x 15.8;                           : 変量 i は小数点以上 5桁で
      run;                                         : 変量 x は小数点以上 15桁、以下 8桁で
      
      proc sort data=rei01;                        : 並べ替え
        by x;                                      : 変量 x について
      run;                                         :
      
      proc print data=rei01(obs=10);
      run;
      
      proc print data=rei01(firstobs=91 obs=110);
      run;
      
      proc means data=rei01(firstobs=91 obs=110);
      run;
      
      data _null_;
        set rei01;
        file "sorted.dat";
        put i 5. x 15.8;
      run;
      
    2. 出力結果 : les1402.lst unsorted.dat sorted.dat
      • 並べる前後での数値列を比較せよ
      • 乱数の種類を取り替えて計算させてみよ

  9. [例5] 軸ラベルの値を昇順、降順に並べたい
    • 昇順と降順のヒストグラム : 数値(軸ラベル)
    • 昇順と降順の度数分布表 : 数値(軸ラベル)
    • 頻度順の度数分布表 : 頻度

    1. プログラム : les1403.sas

       /* Lesson 14-3 */
       /*    File Name = les1403.sas   11/21/02   */
      
      options linesize=72; /* pagesize=20; */
      
      data rei02;                           : データセット名を rei02 とする
        do i=1 to 100;                      :
          x=rannor(23456);                  : 上記とは別の種で乱数を発生させる
          x10=int(x*10);                    : 10倍して正数部分だけ利用
          output;                           :
        end;                                :
      run;                                  :
      
      title "Default";                      : 見出し(タイトル)を付ける : 「無指定」
      proc chart data=rei02;                : オプションを指定しない場合のヒストグラム
        hbar x;                             : 変量 x について
      run;                                  :
      
      title "Ascending order";              : 「昇順」
      proc chart data=rei02;                : 
        hbar x / midpoints=-3 to 3 by .5;   : 変量 x について昇順で。0.5 刻み。
      run;                                  :
      
      title "Descending order";             : 「降順」
      proc chart data=rei02;                :
        hbar x / midpoints=3 to -3 by -.5;  : 変量 x について降順で。-0.5 刻み。
      run;                                  :
      
      title "Default";                      : 「無指定」: x10 を昇順に表示
      proc freq data=rei02;                 : オプションを指定しない場合の度数分布表
        tables x10;                         : 変量 x10 について
      run;                                  :
      
      title "Freqency order";               : 「頻度降順」: 頻度の大きいものから
      proc freq data=rei02 order=freq;      :
        tables x10;                         : 変量 x10 についての頻度順に表示
      run;                                  :
      
      proc sort data=rei02;                 : 並べ替え
        by decending x10;                   : x10 について降順に並べる
      run;                                  :
      
      title "Descending order";             : 「数値降順」: x10 を降順に表示
      proc freq data=rei02 order=data;      : データの出現順で表示させるというオプション
        tables x10;                         :
      run;                                  : 
      
    2. 出力結果 : les1403.lst
      • どこをキーとした順で表示されているかを把握せよ
      • 乱数の種類を取り替えて計算させてみよ

  10. その他の便利なコマンド : 過去の資料にも掲載してあるので参考にしてほしい
    • 第08回 の第6節 : 変数変換、算術演算子、数値関数

  11. [補足] 平成15年版 情報通信白書 が先日総務省より発表されました。参考まで。

  12. データやプログラムのバックアップ
    本年度を終えると(3月まで?)、stat システムにログインできなくなり、 それと同時に stat システム内に保存してあるデータやプログラムも 呼び出せなくなる(正確には消去されてしまう)。 この半年間の勉強成果を残しておきたい人は、Windows 側に転送して、 FD や MO に早めにバックアップを取るようにして下さい。

  13. 最後に
    この講義を通して、「統計」や「データ解析」と言う言葉に 多少なりとも親しみを持っていただけただろうか? 今後いろいろな場面で、種々の数値列に出会うことになると思うが、 提示された数値にはどの様な意味(と意図)があり、 どう理解して、個々人としてどうアクションを起すかの、 一つの判断手段として活用してもらえれば幸いである。

    なお、今まで紹介していた私のメールアドレスは実は講義用のものであった。 今後、もし統計に関して何か疑問に出会い、私に連絡・相談してみたいと思った時は、 以下のアドレスを使ってください。

    メールアドレス : hayashi@rd.dnc.ac.jp

    皆さんの期待に応えられたか心許無い部分もありますが、半年間ご苦労様でした。

  14. 次回は、... : 07月24日 14:45
    • 演習? 自習?
    • 発表会? 質問会?
    • クロス表の独立性の検定(カイ2乗検定)? 分散分析? 判別分析?
    • ...
[DIR]講義のホームページへ戻ります