ファイルからの読み込み

統計解析 02 クラス : 第04回 (05/10/07)

 前回 は、SAS のプログラムについてその構成(構造)を解説した。 今回は、データをファイルから読み込んで実行する方法を、 プログラムの修正方法と共に紹介する。
  1. データをファイルから読み込む : プログラムとデータの分離
    データが追加されたり、別クラスのデータを解析したくなったら??
    : データをファイルから読み込んで処理しよう
    : 大量データや定型的な処理に有効
    [Lesson 4-1] 前項で作成したデータをファイルから読み込んで変量の平均値を求めてみよう。 なお、ファイル名は各自で命名したものを指定せよ。 ここでは「naikaku0611.prn」という名前で説明する。

    1. 新しいプログラムを作る時にはまず現在のプログラムを消去
      Program Editorエリアのコマンド行で : [入力] clear
    2. プログラム : les0401.sas
     /* Lesson 4-1 */                               :
     /*    File Name = les0401.sas   05/10/07   */  :
                                                    :
    data naikaku;                                   : データ名の定義
      infile 'naikaku0611.prn'                      : ファイル名の指定
        firstobs=2;                                 : 数値は 2行目から入っている
      input name $ posit $ sex $ tochi              : 読み込む変量名
    ;                                               : 終りを示すセミコロン
    proc print data=naikaku;                        : データの表示
    run;                                            :
    proc means data=naikaku;                        : 平均、標準偏差、最大最小値の算出
    run;                                            :
    
    1. 出力結果、計算結果 : les0401.lst
      • 画面の移動には BACKward, FORWard, TOP, BOTtom コマンドを使う。
      • 意図通りにファイルからデータが読み込まれていることを確認せよ。
                                    SAS システム                             1
                                                  00:14 Wednesday, May 9, 2007
      
                    OBS    NAME         POSIT      SEX    TOCHI
      
                      1    Abe         Kakuryou     M      9760
                      2    Kan         Kakuryou     M      4767
                      3    Nagase      Kakuryou     M      2175
                      4    Aso         Kakuryou     M     41205
                      5    Omi         Kakuryou     M      2788
                      6    Ibuki       Kakuryou     M     12960
                      7    Yanagisa    Kakuryou     M      1921
                      8    Matsuoka    Kakuryou     M      2584
                      9    Amari       Kakuryou     M      3154
                     10    Fuyushib    Kakuryou     M      1435
                     11    Wakabaya    Kakuryou     M      3254
      <中略>
                       65    Matsuyam    Seimu     M      2832
                       66    Kajiyama    Seimu     M      2530
                       67    Yoshida     Seimu     M      1184
                       68    Fujino      Seimu     M       941
                       69    Kitagawa    Seimu     M      1374
      
                                    SAS システム                             6
                                                  00:14 Wednesday, May 9, 2007
             Analysis Variable : TOCHI
      
              N          Mean       Std Dev       Minimum       Maximum
             ----------------------------------------------------------
             69       4751.35       9352.40             0      61046.00
             ----------------------------------------------------------
      
    2. プログラムの保存 :
      Program Editorエリアのコマンド行でプログラムを recall 後 : [入力] file 'les0401.sas'

  2. プログラムの改良 : 入力済みのものを有効利用 : コピー、挿入、削除、...

    1. 今までのプログラムを活用 : les0402.sas
     /* Lesson 4-2 */                                      
     /*    File Name = les0402.sas   05/10/07   */
                                                           
    data naikaku;                                          
      infile 'naikaku0611.prn'
        firstobs=2;
      input name $11. posit $ sex $ tochi            : 文字列長の指定方法
            yotyokin total honnin kasituke kariire   : 長い場合は 2行に
    ;
    proc print data=naikaku;
    run;
    proc means data=naikaku;
    run;
    
    proc chart data=naikaku;                         : ヒストグラムを描く
      hbar total;                                    : 水平棒グラフで。変量を指定
      vbar total;                                    : 垂直棒グラフで。変量を指定
    run;
    
    1. 編集コマンド : 行コマンド (MNCセミナー用テキスト)、 前々回の配布資料参照
      • [Ctrl]+[X] : インサートモード
      • i : 行挿入

      • cc : 領域コピー(コピーしたいところを囲む)
      • b : 当該行の前(before)に挿入
      • c : 一行コピー

      • a : 当該行の後ろ(after)に挿入
      • d : 一行削除
      • dd : 領域削除

    2. 出力結果 : les0402.lst : 以下掲載分には一部省略あり
                                    SAS システム                             1
                                                  00:26 Wednesday, May 9, 2007
                                                Y                    K
                                                O                    A     K
                                                T           H        S     A
                            P           T       Y    T      O        I     R
            N               O           O       O    O      N        T     I
         O  A               S      S    C       K    T      N        U     I
         B  M               I      E    H       I    A      I        K     R
         S  E               T      X    I       N    L      N        E     E
      
         1  Abe          Kakuryou  M   9760  5030  14790  13990      0     0
         2  Kan          Kakuryou  M   4767     0   4767   4767      0  2556
         3  Nagase       Kakuryou  M   2175  6750   8925   5649      0  2950
         4  Aso          Kakuryou  M  41205  7850  49055  42666  18800  1100
         5  Omi          Kakuryou  M   2788     0   2788   2144    500     0
         6  Ibuki        Kakuryou  M  12960  2580  15540   4462      0     0
         7  Yanagisawa   Kakuryou  M   1921  3065   4986   3215      0  1125
         8  Matsuoka     Kakuryou  M   2584  2065   4649   3528      0  1447
         9  Amari        Kakuryou  M  3154   4450   7604   5039      0   968
        10  Fuyushiba    Kakuryou  M  1435   1000   2435   1435      0     0
        11  Wakabayashi  Kakuryou  M  3254   6445   9699   4854   2100     0
      <中略>
                                    SAS システム                             7
                                                  13:28 Wednesday, May 9, 2007
      
        Variable   N          Mean       Std Dev       Minimum       Maximum
        --------------------------------------------------------------------
        TOCHI     69       4751.35       9352.40             0      61046.00
        YOTYOKIN  69       2541.28       5094.07             0      35400.00
        TOTAL     69       7292.65      12135.92             0      67121.00
        HONNIN    69       4804.23       7940.48             0      42666.00
        KASITUKE  69   738.4057971       2517.94             0      18800.00
        KARIIRE   69       1876.81       2862.83             0      16000.00
        --------------------------------------------------------------------
      
                                    SAS システム                             8
                                                  00:26 Wednesday, May 9, 2007
        TOTAL                                         Cum.              Cum.
       Midpoint                                 Freq  Freq  Percent  Percent
                |
         5000   |*****************************    58    58    84.06    84.06
        15000   |***                               6    64     8.70    92.75
        25000   |*                                 2    66     2.90    95.65
        35000   |                                  0    66     0.00    95.65
        45000   |*                                 1    67     1.45    97.10
        55000   |*                                 1    68     1.45    98.55
        65000   |*                                 1    69     1.45   100.00
                |
                -----+----+----+----+----+----
                     10   20   30   40   50
                           Frequency
      
                                    SAS システム                             9
                                                  00:26 Wednesday, May 9, 2007
      Frequency
      60 +    *****                                                           
         |    *****                                                           
      45 +    *****                                                           
         |    *****                                                           
      30 +    *****                                                           
         |    *****                                                           
      15 +    *****                                                           
         |    *****    *****                                                  
         --------------------------------------------------------------------
               5000    15000    25000    35000    45000    55000    65000
                                    TOTAL Midpoint
      
    3. 出力からの知見 :
      • 入力した全変量が正しく読み込まれているか?
      • 氏名は切れずに読み込まれているか?
      • 数値変量の全ての平均等が計算されている: 有効桁数に注意
      • ヒストグラム(度数分布)からデータの分布状況を判断する
        • 水平棒グラフと垂直棒グラフで表示される情報量が異なる
        • 累積頻度や累積割合が表示されるのは水平棒グラフだけ
      • 平均値はヒストグラムのどこに位置するか?
      • ...

    4. プログラムの保存 :
      Program Editorエリアのコマンド行でプログラムを recall 後 : [入力] file 'les0402.sas'

  3. 再度改良

    1. 今までのプログラムに追加 : les0403.sas
     /* Lesson 4-3 */
     /*    File Name = les0403.sas   05/10/07   */
    
    data naikaku;
      infile 'naikaku0611.prn'
        firstobs=2;
      input name $11. posit $ sex $ tochi 
            yotyokin total honnin kasituke kariire
    ;
    proc print data=naikaku(obs=5);              : 先頭の 5ケースだけを表示。確認用
    run;
    proc means data=naikaku;
      var tochi total;                           : 平均等を求めたい変量を指定
    run;
    
    proc chart data=naikaku;
      hbar total;
      vbar total;
    run;
    
    proc chart data=naikaku;
      hbar total / midpoints= 5000 to 50000 by  5000;        : 軸の値を指定
      vbar total / midpoints=10000 to 50000 by 10000;        : 軸の値を指定
    run;
    
    1. 編集コマンドを駆使せよ

    2. 出力結果 : les0403.lst : 以下掲載分には一部省略あり
                                    SAS システム                             1
                                                  00:26 Wednesday, May 9, 2007
      
        OBS NAME    POSIT   SEX TOCHI YOTYOKIN TOTAL HONNIN KASITUKE KARIIRE
      
          1 Abe    Kakuryou  M   9760   5030   14790  13990       0       0 
          2 Kan    Kakuryou  M   4767      0    4767   4767       0    2556 
          3 Nagase Kakuryou  M   2175   6750    8925   5649       0    2950 
          4 Aso    Kakuryou  M  41205   7850   49055  42666   18800    1100 
          5 Omi    Kakuryou  M   2788      0    2788   2144     500       0 
      
                                    SAS システム                             2
                                                  13:29 Wednesday, May 9, 2007
      
        Variable   N          Mean       Std Dev       Minimum       Maximum
        --------------------------------------------------------------------
        TOCHI     69       4751.35       9352.40             0      61046.00
        TOTAL     69       7292.65      12135.92             0      67121.00
        --------------------------------------------------------------------
      <中略>
                                    SAS システム                             5
                                                  00:26 Wednesday, May 9, 2007
         TOTAL                                       Cum.              Cum.
        Midpoint                               Freq  Freq  Percent  Percent
                 |
          5000   |***************************    53    53    76.81    76.81
         10000   |****                            7    60    10.14    86.96
         15000   |**                              3    63     4.35    91.30
         20000   |*                               2    65     2.90    94.20
         25000   |                                0    65     0.00    94.20
         30000   |*                               1    66     1.45    95.65
         35000   |                                0    66     0.00    95.65
         40000   |                                0    66     0.00    95.65
         45000   |                                0    66     0.00    95.65
         50000   |**                              3    69     4.35   100.00
                 |
                 -----+----+----+----+----+--
                      10   20   30   40   50
      
                                    SAS システム                             6
                                                  00:26 Wednesday, May 9, 2007
      Frequency
      60 +       *****                                                        
         |       *****                                                        
      45 +       *****                                                        
         |       *****                                                        
      30 +       *****                                                        
         |       *****                                                        
      15 +       *****                                                        
         |       *****                                                        
         --------------------------------------------------------------------
                 10000       20000       30000       40000       50000
                                    TOTAL Midpoint
      
    3. 出力からの知見 :
      • 入力した全変量が正しく読み込まれているかを先頭 5ケースで確認
      • ヒストグラムの区切り幅を換えると分布のイメージが変化する
      • 平均値はヒストグラムのどこに位置するか?
      • 平均値が分布形状を想像するに足る情報であろうか?
        • 対称分布の場合だけ
        • それでも広がりは判らない
      • ...

    4. プログラムの保存 :
      Program Editorエリアのコマンド行でプログラムを recall 後 : [入力] file 'les0403.sas'

  4. 出力結果の保存 : Outputエリアの内容をファイルに保存
    解析結果を活用するため : 印刷、レポート、...
    1. プログラムを実行(SUBmit)する前に、
      Outputエリアの過去の記録を消去しておく: [入力] clear
      こ の処理をしておかないと、過去の全ての(不要な、多大な)記録が全部保存される
    2. 出力結果の保存 :
      Outputエリアのコマンド行で : [入力] file 'les0403.lst'
      プログラムの保存と同じコマンドだが、保存対象が異なる
    3. 各種エリアの保存や呼び出しについては、以後、いちいち指示しない。 各自で判断してほしい。

  5. 漢字コード変換 : 計算結果には日本語が含まれている
    漢字の表現方法(漢字コード)には幾つかの体系があって、異なったコード体系間では 変換を行わないと正常には読み出せない。
    Windows マシンで利用される漢字コードは、 「Shift-JISコード」に固定されているため、この様な混乱は少ない。 しかし、stat システムを含む UNIX マシンの場合は、 「EUC コード」や「JIS コード」が使われることが多く、 Windows マシンとデータを共有しようとすると、 漢字コードの変換を頭に入れて、適宜変換しながら利用する必要がある。
    • Windows マシン : Shift-JIS コード
    • UNIX マシン : EUC コード, JIS コード

    stat システム上の SAS に関して言えば、SAS の出力中の日本語は 「EUC コード」を使って表現されているので、 SAS の「計算結果」を Windows マシンに転送する前に 「EUC コード」を「Shift-JIS コード」に変換する必要が生じる。 また、漢字を含む元データを stat システム上で解析したいのなら、 転送後、stat システム上で EUC コードに変換してから利用する必要がある。
    同様の理由で、ファイル名に漢字を使うのも避けるべきである。

    1. SAS の計算結果には日本語が含まれているので、Windows 側に転送する前に 「EUC コード」を「Shift-JIS コード」に変換する必要がある。
    2. UNIX システム(stat システム)上の漢字コード変換ツール「nkf」の利用 : 「-s」オプションは Shift-JIS コードに変換することの指定。 変換後のファイル名を大なり記号( > )の右側に書く。
      [実行例]
      nkf -s les0403.lst > les0403s.lst

    3. WinSCP を使って Windows 側に変換後のファイル(les0403s.lst)を転送して、レポート作成に利用。

    [Lesson 4-4] Windows 側で読み出せるか、実際に転送してみよ。

    • UNIX システム上の漢字コード変換ツール nkf を使って転送前に漢字コードを変換しておく。
    • WinSCP を使って、変換後のファイルを Windows に転送。
    • 印刷するだけなら、「H:」ドライブ辺りに転送して メモ帳や MS-Word (や秀丸等のエディタ等)に読みこんで印刷。 ファイル名の拡張子(.sas、.lst等)に注意しないと見つけられないかもしれない。
    • 印刷の仕方等については、「PC・ネットワーク利用ガイド」を参照のこと。
    • 手元に保存しておきたいのなら、FD や MO、USB メモリー等にバックアップを取る。
    • 転送した計算結果の必要部分を電子的に切り貼りして、報告書(レポート等)を作成する。

    [補足] nkf には他に、「-e」オプション(EUCコードに変換)、 「-j」オプション(JISコードに変換)がある。

  6. 次回は、... : 05月17日 14:45
    • 基礎統計量
    • 興味あるデータの特性を明らかにしていこう
      • 不断に興味のあるデータを電子化して持参せよ。
      • 皆さんのデータを使った解析 : 各自のデータを解析してみよう
      • ファイル名は各自で命名し、記録しておくように

      • 興味のあるデータを見つけて、電子化
      • 電子化したデータを stat システムに転送しておくこと
[DIR]講義のホームページへ戻ります