ファイルからの読み込み

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

 前回 は、SAS のプログラムについてその構成(構造)を解説した。 今回は、前回やり残した部分を説明した後に、 データをファイルから読み込んで実行する方法を、 プログラムの修正方法と共に紹介する。
  1. データ転送(送信) : WinSCPを使ったファイルの送受信 : 前回の第4節

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

    1. 新しいプログラムを作る時にはまず現在のプログラムを消去
      Program Editorエリアのコマンド行で : [入力] clear
    2. プログラム : les0401.sas
     /* Lesson 4-1 */                               :
     /*    File Name = les0401.sas   05/01/08   */  :
                                                    :
    data naikaku;                                   : データ名の定義
      infile 'naikaku0710.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
                                               15:09 Wednesday, April 23, 2008
                    OBS    NAME         POSIT      SEX    TOCHI
      
                      1    Fukuda      Kakuryou     M      6731
                      2    Masuda      Kakuryou     M      1416
                      3    Hatoyama    Kakuryou     M     52728
                      4    Komoto      Kakuryou     M      6163
                      5    Nukaga      Kakuryou     M      4695
                      6    Tokai       Kakuryou     M      2138
                      7    Masuzoe     Kakuryou     M         0
                      8    Wakabaya    Kakuryou     M      3254
                      9    Amari       Kakuryou     M      3358
                     10    Fuyushib    Kakuryou     M      1435
      <中略>
                       67    Namiki      Seimu     M     13848
                       68    Terada      Seimu     M     20935
                       69    Akimoto     Seimu     M         0
      
                                    SAS システム                             6
                                               15:09 Wednesday, April 23, 2008
             Analysis Variable : TOCHI
      
              N          Mean       Std Dev       Minimum       Maximum
             ----------------------------------------------------------
             69       6451.67      11945.19             0      60729.00
             ----------------------------------------------------------
      
    2. プログラムの保存 :
      Program Editorエリアのコマンド行でプログラムを recall 後 : [入力] file 'les0401.sas'

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

    1. 今までのプログラムを活用 : les0402.sas
     /* Lesson 4-2 */                                      
     /*    File Name = les0402.sas   05/01/08   */
                                                           
    data naikaku;                                          
      infile 'naikaku0710.prn'
        firstobs=2;
      input name $13. 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
                                               15:11 Wednesday, April 23, 2008
                                                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  Fukuda       Kakuryou  M   6731    480   7211   7031     0   3800
        2  Masuda       Kakuryou  M   1416   5380   6796   6047     0      0
        3  Hatoyama     Kakuryou  M  52728  20308  73036  72481     0  40000
        4  Komoto       Kakuryou  M   6163   1861   8024   6713     0      0
        5  Nukaga       Kakuryou  M   4695    200   4895   3682     0   7500
        6  Tokai        Kakuryou  M   2138      0   2138   1823     0      0
        7  Masuzoe      Kakuryou  M      0  36149  36149  33999  1646      0
        8  Wakabayashi  Kakuryou  M   3254   6445   9699   4854  2100      0
        9  Amari        Kakuryou  M   3358   4450   7808   5205     0    880 
       10  Fuyushiba    Kakuryou  M   1435   1000   2435   1435     0      0 
      <中略>
                                    SAS システム                             7
                                               15:11 Wednesday, April 23, 2008
      
        Variable   N          Mean       Std Dev       Minimum       Maximum
        --------------------------------------------------------------------
        TOCHI     69       6451.67      11945.19             0      60729.00
        YOTYOKIN  69       3277.99       6557.29             0      36149.00
        TOTAL     69       9729.64      16334.46             0      84817.00
        HONNIN    69       6642.59      11686.66             0      72481.00
        KASITUKE  69   460.7246377   970.1453330             0       4000.00
        KARIIRE   69       2383.14       5853.12             0      40000.00
        --------------------------------------------------------------------
      
                                    SAS システム                             8
                                               15:11 Wednesday, April 23, 2008
           TOTAL                                  Cum.              Cum.
          Midpoint                          Freq  Freq  Percent  Percent
                   |
               0   |**********************    44    44    63.77    63.77
           12000   |********                  16    60    23.19    86.96
           24000   |**                         3    63     4.35    91.30
           36000   |**                         3    66     4.35    95.65
           48000   |                           0    66     0.00    95.65
           60000   |                           0    66     0.00    95.65
           72000   |*                          2    68     2.90    98.55
           84000   |*                          1    69     1.45   100.00
                   |
                   -----+----+----+----+--
                        10   20   30   40
                          Frequency
      
                                    SAS システム                             9
                                               15:11 Wednesday, April 23, 2008
      Frequency
         |   *****                                                            
      40 +   *****                                                            
         |   *****                                                            
      30 +   *****                                                            
         |   *****                                                            
      20 +   *****                                                            
         |   *****   *****                                                    
      10 +   *****   *****                                                    
         |   *****   *****   *****   *****                                    
         --------------------------------------------------------------------
               0     12000   24000   36000   48000   60000   72000   84000
                                    TOTAL Midpoint
      
    3. 出力からの知見 :
      • 入力した全変量が正しく読み込まれているか?
      • 氏名は切れずに読み込まれているか?
      • 数値変量の全ての平均等が計算されている: 有効桁数に注意
      • ヒストグラム(度数分布)からデータの分布状況を判断する
        • 水平棒グラフと垂直棒グラフで表示される情報量が異なる
        • 累積頻度や累積割合が表示されるのは水平棒グラフだけ
      • 平均値はヒストグラムのどこに位置するか?
      • ...

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

  4. 再度改良

    1. 今までのプログラムに追加 : les0403.sas
     /* Lesson 4-3 */
     /*    File Name = les0403.sas   05/01/08   */
    
    data naikaku;
      infile 'naikaku0710.prn'
        firstobs=2;
      input name $13. 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
                                               15:12 Wednesday, April 23, 2008
       OBS   NAME    POSIT   SEX TOCHI YOTYOKIN TOTAL HONNIN KASITUKE KARIIRE
      
         1 Fukuda   Kakuryou  M   6731     480   7211   7031     0      3800 
         2 Masuda   Kakuryou  M   1416    5380   6796   6047     0         0 
         3 Hatoyama Kakuryou  M  52728   20308  73036  72481     0     40000 
         4 Komoto   Kakuryou  M   6163    1861   8024   6713     0         0 
         5 Nukaga   Kakuryou  M   4695     200   4895   3682     0      7500 
      
                                    SAS システム                             2
                                               15:12 Wednesday, April 23, 2008
      
        Variable   N          Mean       Std Dev       Minimum       Maximum
        --------------------------------------------------------------------
        TOCHI     69       6451.67      11945.19             0      60729.00
        TOTAL     69       9729.64      16334.46             0      84817.00
        --------------------------------------------------------------------
      <中略>
                                    SAS システム                             5
                                               15:12 Wednesday, April 23, 2008
          TOTAL                                     Cum.              Cum.
         Midpoint                             Freq  Freq  Percent  Percent
                  |
           5000   |*************************    49    49    71.01    71.01
          10000   |*****                        10    59    14.49    85.51
          15000   |*                             1    60     1.45    86.96
          20000   |*                             2    62     2.90    89.86
          25000   |*                             1    63     1.45    91.30
          30000   |                              0    63     0.00    91.30
          35000   |*                             2    65     2.90    94.20
          40000   |*                             1    66     1.45    95.65
          45000   |                              0    66     0.00    95.65
          50000   |**                            3    69     4.35   100.00
                  |
                  -----+----+----+----+----+
                       10   20   30   40   50
      
                                    SAS システム                             6
                                               15:12 Wednesday, April 23, 2008
      Frequency
      60 +       *****                                                        
         |       *****                                                        
      45 +       *****                                                        
         |       *****                                                        
      30 +       *****                                                        
         |       *****                                                        
      15 +       *****                                                        
         |       *****       *****                                            
         --------------------------------------------------------------------
                 10000       20000       30000       40000       50000
                                    TOTAL Midpoint
      
    3. 出力からの知見 :
      • 入力した全変量が正しく読み込まれているかを先頭 5ケースで確認
      • ヒストグラムの区切り幅を換えると分布のイメージが変化する
      • 平均値はヒストグラムのどこに位置するか?
      • 平均値が分布形状を想像するに足る情報であろうか?
        • 対称分布の場合だけ
        • それでも広がりは判らない
      • ...

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

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

  6. 漢字コード変換 : 計算結果には日本語が含まれている
    漢字の表現方法(漢字コード)には幾つかの体系があって、異なったコード体系間では 変換を行わないと正常には読み出せない。
    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コードに変換)がある。

  7. 次回は、... : 05月08日 14:45
    • 今回終えられなかった部分: プログラムの改良
    • 基礎統計量
    • 興味あるデータの特性を明らかにしていこう
      • 不断に興味のあるデータを電子化して持参せよ。
      • 皆さんのデータを使った解析 : 各自のデータを解析してみよう
      • ファイル名は各自で命名し、記録しておくように

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