SAS を使ってみよう、データの電子化

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

 電子メールをメーリングリストに送った。 同じ文は「連絡事項のページ (10/02/08)」にも掲載しておいたが、各々のアドレスに届いたであろうか? 今後は何か連絡したいことがあれば活用されたい。質問などもここに投稿してほしい。
 さて、今週は、何はともあれ SAS を使ってみよう。 特に知っておくべきコマンドを中心に解説する。
  1. アンケートの回答

  2. SAS を使うには? 終るには? : stat システムにログインする
     以下では各システム/プログラムの入れ子構造を段下げを用いて明確に示す (この節のみ)。
    1. SAS は stat システム上に存在
      「スタート」→「プログラム(P)」→「telnet & ftp」→「PuTTY」→「stat11」とクリックする。
      (stat11 と 12 はどちらでも対等。混み具合いによって選択してよい。 ただ、講義中は一つのマシンに集中する可能性があるので、座席位置で指定する)。
      [重要な注意] stat システム内ではマウスは使えない。 以後の入力はキーボードからのみ行う。
      [補足1] PuTTY では画面サイズの変更も可能なようだが、当面は変更させずに実習を行なう。
      [補足2] デフォルトのログイン画面は「黒地に白文字」のようである。見難いと感じる場合は、 「白地に黒文字」にする方法があるようだ。その一つの方法として以下を挙げておく。
      「PuTTY のウインドウの上の枠で右クリック」→ 現われたメニュー中の「設定の変更」を選択→ 「ウインドウ」-「色」の「システムカラーを使う」にチェックを入れる→ 「適用」ボタンをクリック。

      1. 「login as:」、「password:」と表示されるので、 それぞれ stat システム用の IDとパスワードを入力する。 なお、パスワードはセキュリティの都合上、画面には表示されない (盗み見られることを防止するため)。

        1. SAS を起動するには「vtsas」と入力してリターンキーを押す。
          画面が区切られたような領域に分割されて表示される。
        2. SAS を終了するには「コマンド =>」 の右側にカーソルをカーソル移動キー(矢印キー)で移動させ「bye」と入力して リターンキーを押す。大なり記号の直後に空白() が一つ必要なので注意せよ。

      1. stat システムを終了するには「logout」と入力してリターンキーを押す。

  3. SAS を操作してみよう : Lesson 2-1 :
    1. まずは stat システムにログインする。 : 前節を参照

    2. 「vtsas」と入力してリターンキーを押す。
      [注意] 次回以降、この状態から講義をスタートする。 今後 stat システムのログイン方法等はいちいち説明しないので、習得しておくこと。

    3. 領域が三種類ある : Program Editor, Output, Log : 役割はおいおい説明する。
      各ウインドウを行き来しよう。コマンド行に以下のコマンドを入力する。
      • Program Editor エリアへ移動 : PGM
      • Log エリアへ移動 : LOG
      • Output エリアへ移動 : OUTput

    4. 何はともあれプログラムを入力してみよう : les0201.sas
      • Program Editor エリアに入力していく : PGM
        [注意] リスト中、コロン(:)以降は解説用なので入力しないように。
      • 当該領域を大きくしたい : Zoom
      • テンキーは使えない。数字はキーボード上部の数値キーで入力。
      • 講義内では日本語入力は取り扱わない。入力は全て半角英数字のみ。
      • ブランクはいくつあっても一つと見なされる。読み易さのために段下げを
      • カーソルの移動には「←」「→」「↑」「↓」キーを利用。
      • プログラムはセミコロン(;)で終わる。
      • コロン(:)とセミコロン(;)を間違えないように。
     /* Lesson 2-1 */                             : コメント、実行に無関係
     /*    File Name = les0201.sas  10/08/08   */ : 後々の記録のためのメモ
                                                  : 見易さのための空行
    data kenshin;                                 : データ名の定義
      input name $ shintyou taijyuu;              : 読み込む変量名、型($は文字型を示す)
    cards;                                        : データの始まりを示す
      Hara        181  86                         : Case 1
      Okada       175  77                         : Case 2
      Ochiai      178  80                         : Case 3
      Brown       183  95                         : Case 4
      Takada      170  68                         : Case 5
      Ohya        172  84                         : Case 6
    ;                                             : データの終りを示す
    proc print data=kenshin;                      : 読み込んだデータの表示
    run;                                          : 上記の実行
    proc means data=kenshin;                      : 平均値等の算出
    run;                                          : 上記の実行
    
    1. 実行してみよう
      Program Editor エリアの「コマンド =>」の右にカーソルを移動させて「SUBmit」

    2. 出力結果 : Output エリア : les0201.lst
      1. 読み込んだデータの表示
        • 縦方向にケース、横方向に変量
        • 左端にケース番号
        • 入力が期待通りかを確認 : 数値のずれ、入力ミス、異常値、...

      2. 平均値等の算出
        • 各変量ごとのサンプル数、平均、標準偏差、最小値、最大値
        • [注意] 有効桁数 : 統計ソフトは単なる道具。使いこなすのは各自。
                                  SAS システム                             1
                                              17:01 Tuesday, October 7, 2008
    
                      OBS     NAME     SHINTYOU    TAIJYUU
    
                       1     Hara         181         86  
                       2     Okada        175         77  
                       3     Ochiai       178         80  
                       4     Brown        183         95  
                       5     Takada       170         68  
                       6     Ohya         172         84  
    
                                  SAS システム                             2
                                              17:01 Tuesday, October 7, 2008
    
      Variable  N          Mean       Std Dev       Minimum       Maximum
      -------------------------------------------------------------------
      SHINTYOU  6   176.5000000     5.0892043   170.0000000   183.0000000
      TAIJYUU   6    81.6666667     9.0921211    68.0000000    95.0000000
      -------------------------------------------------------------------
    

    1. 特に知っておくべきコマンド :
      • 実行 : SUBmit : プログラムの実行。
      • 前進 : FORWard : 複数画面にまたがっている場合。
      • 後退 : BACKward : 複数画面にまたがっている場合。

    2. 期待通りの出力が得られなかったら... : Log エリア : les0201.log
      • プログラムのミスが一番に考えられる: スペルやスペースの場所等
      • マウスを使ってスクロールさせようとはしないこと
      • データはきちんと読み込まれているか?
      • エラーメッセージは Log エリアに表示される。 各行ごとにメッセージが表示されるので、エラー個所が特定し易い。
      • エラーを除去する作業 : Debug と言う
      • Debug も経験を積むことによって、要領よく作業できるようになる

    3. 一旦実行したプログラムの呼び戻し :
      • 実行したら Program Editor エリアから消える : そう言うものと理解しよう
      • RECall : プログラムの呼び戻し : Program Editor エリアで

  4. プログラムを有効活用しよう
    1. 保存 : 自分のホームディレクトリに判りやすいファイル名で保存。
      • Program Editor エリアのコマンド行で : FILE 'filename.sas'
      • Output エリアのコマンド行で : FILE 'filename.lst'
      • Log エリアのコマンド行で : FILE 'filename.log'
    2. 読み込み : 自分のホームディレクトリから
      • Program Editor エリアのコマンド行で : INClude 'filename.sas'

    3. [Lesson 2-2] : プログラムを保存しておこう。 Program Editor エリアのコマンド行で。
      [例] file 'les0201.sas'

  5. 知っておくと便利なコマンド一覧 : 講義期間中を通して使うコマンド

  6. [補足] UNIX の初歩のコマンド : 詳しくは書籍等を参考に

  7. データの電子化 : SASで使用するデータの生成
    取り扱うデータが長方形(表形式)をしているので、表計算ソフトと呼ばれるアプリケーションを利用するのが便利である。 ここでは、Microsoft Excel を例に実際に電子化の手順を説明する。 なお、Excel のより詳しい使い方については、 「PC・ネットワーク利用ガイド」や市販の書籍を参考にしてほしい。
    また、データは縦方向にケース(サンプル)が、横方向に変量が、 並んでいるとして、説明を進める。
    1. Excel の起動
      「スタート」→「プログラム(P)」→「Microsoft Office」→「Microsoft Excel」とクリックする。

    2. データの入力
      表示された枠に「表形式」と呼ばれる並び(縦:ケース、横:変量) で順にデータをキー入力していく。なお、実習では半角英数字のみを取り扱うことにする。
      • カーソルの移動には、「Tab」キーが便利である(右方向へ移動)。 縦方向の移動には「Enter」キー。矢印キーやマウスで移動させることもできるが、 次変量の入力のための移動にこれらのキーを使うと入力スピードが遅くなるので得策ではない。
      • データの電子化のためには、コード化も必要になることがある。
        • 「男/女」を「M/F」等と置き換える等。
        • 欠測値(欠損値、不明)データには「.(ピりオド)」を入力。 : データ採取は難しい!!

      [Lesson 2-3] : データの電子化 : 以下の例示を参考に、内閣の閣僚資産データを電子化せよ。 入力の手間を軽減するために、今回は氏名については姓だけでよい。: [PDF File]

      • [注意1] 各項目内に空白は入れないこと : SAS は空白を区切り記号と判断するため
          (今回の例ではあまり起らないと思うが)
      • [注意2] データの電子化時に、「コード化」を平行して行う必要があるかも。
        • 欠測値(欠損値、不明)データには「.(ピりオド)」を入力。 : データ採取は難しい!! (今回の例にはない)
        • 氏名はローマ字(アルファベット)に書き換える。姓だけでよい。
        • 「男/女」を「M/F」等と記号化して入力する。配布資料では既に変換してある。
      • [注意3] 担当省庁は入力しなくてもよい。

      [補足1] SAS は漢字を含むデータを読み込むことができる。 しかし、日本語入力のための作業時間がかかる点や、 ファイル転送時の指定を厳密に行う必要がある点等を考慮して、 講義の中では取り扱わず、半角英数字のみを用いる。

      [データ] 第1次福田内閣の閣僚資産データ(2007年10月27日発表) [部分]
      Name  Position  Sex  Tochi  Yotyokin  Total  Honnin  Kasituke  Kariire 
      Fukuda Kakuryou  M 6731 480 7211 7031 0 3800
      Masuda Kakuryou  M 1416 5380 6796 6047 0 0
      Hatoyama Kakuryou  M 52728 20308 73036 72481 0 40000
      Kōmura Kakuryou  M 6163 1861 8024 6713 0 0
      Nukaga Kakuryou  M 4695 200 4895 3682 0 7500
      Tokai Kakuryou  M 2138 0 2138 1823 0 0
      Masuzoe Kakuryou  M 0 36149 36149 33999 1646 0
      Wakabayashi Kakuryou  M 3254 6445 9699 4854 2100 0
      Amari Kakuryou  M 3358 4450 7808 5205 0 880
      Fuyushiba Kakuryou  M 1435 1000 2435 1435 0 0
      Kamoshita Kakuryou  M 21409 0 21409 20840 1500 22650
      Ishiba Kakuryou  M 1848 787 2635 1848 0 0
      Machimura Kakuryou  M 9705 1916 11621 10582 0 3331
      Izumi Kakuryou  M 2805 391 3196 2340 0 179
      Kishida Kakuryou  M 1156 1451 2607 2292 0 0
      Watanabe Kakuryou  M 0 403 403 203 2149 0
      Ōta Kakuryou  F 374 4959 5331 5331 0 0
      Kamikawa Kakuryou  F 2078 3039 5117 1935 1198 0
      Ono Fuku  M 60729 6075 66804 42132 0 0
      Iwaki Fuku  M 1688 2378 4066 3376 3000 2820
      Futahashi Fuku  M 2338 1560 3898 2362 0 0

      [入力画面]
      入力画面(拡大)

    3. データの保存(その1: Excel の標準形式で) :
      Excel にはいくつかの保存形式があるが、 今回は Excel の標準形式(*.xls)で保存する。 「ファイル(F)」→「名前を付けて保存(A)」で保存できる。 ドライブ名やファイル名を指定し、「保存」をクリックする。 なお、「ファイルの種類」の項は「Microsoft Excel ブック(*.xls)」と なっていることを確認しておく。

      [Lesson 2-4] : データの保存 : 演習で入力したデータを保存せよ。
      今後の説明を簡単にするために、ここでは、ドライブ名に「H:」、 ファイル名に「naikaku0710」を指定したとして説明を進める。 この例の指定を行なえば、H ドライブに「naikaku0710.xls」と言うファイルが 作成されているはずである。確認せよ。

    4. 項目の右揃え
      SAS は空白(スペース)を区切り文字として、 テキストファイル(文字で記録されたファイル)からデータを読み込むことができる。 つまり各項目間には空白を入れておく必要がある。 しかし、氏名や性別、また欠損値を示す「.」 は Excel 内では 「文字型」と判断されてデフォルトでは「左寄せ」で出力されてしまい 左隣の項目(数値)と引っ付いてしまう。 そこでこの現象を回避するために全ての項目を「右揃え」してから 保存するようにしておく。
      表の左上の何も書いていないボタンをクリックすると「表全体」 が選択されて反転表示されるので、この状態で「右揃え」ボタンを押す。
      また、今回の例では発生しないかもしれないが、 項目一つあたりの入力文字数の多い(つまり長い)項目の場合、 隣のセルの項目とくっついて表示されてしまうことがある。 そのような場合は、列の幅を余裕を持って大きくして隙間を空けておく。

    5. データの保存(その2: テキスト形式で) :
      Excel の標準形式(*.xls)で保存すると、SAS では利用できないので、 テキスト形式で保存する。 「ファイル(F)」→「名前を付けて保存(A)」で保存ができる。 ドライブ名やファイル名を指定後、 「ファイルの種類」の項に対して「テキスト(スペース区切り)(*.prn)」を指定する。
      保存を指定後に、「選択したファイルの種類は複数のシートを含むブックを サポートしていません」等のメッセーが出る場合があるが、無視してよい。

      [補足2] stat システム(UNIX)では、 漢字のファイル名や空白を含むファイル名は取り扱いが面倒なので、 「スペースを含まない英数字で」ファイル名を付けることを勧める。

      [Lesson 2-5] : データの保存 : 演習で入力したデータを SAS で使うことを考慮して テキスト形式で保存せよ。
      この後の説明を簡単にするために、ここでは、ドライブ名に「H:」、 ファイル名に「naikaku0710」を指定したとして説明を進める (naikaku0710.prn)。

    6. Excel の終了
      • 終了する際に警告が出るが、無視して良い。
      • この警告は、最後に保存した形式が Excel 標準形式でなかった場合に 「データ全部を保存していない」と認識され表示されるものである。 上記のような手順で保存した場合は、警告を無視しても実害はない。

    7. データのバックアップ
      H: ドライブは電源を切ると内容が消されてしまう。 保存用に FD や MO, USBメモリーを利用すること。
      [参考1(裏技?)] メールに添付したり、stat システムに転送してしまうという手もある。
      [参考2] データの電子化。私の場合。
      1. Excel on Windows : データ入力とスクリーニング(点検・修正)
      2. エディタ(emacs) on UNIX : 微修正。手慣れた文字入力環境。

    [補足3] 上記ではExcel の標準形式(*.xls)と テキスト形式(*.prn)の 2通りの保存方法を紹介したが、 今後とも両方の形式で保存しておくことを勧める。
    上記で指摘したように、列幅が足らない状態でテキスト形式の保存を行なうと、 ファイル上で隣同士のセルがくっついてしまい、 以後手作業を行わないと分離できなくなってしまうからである。 Excel の標準形式で保存してあれば、 このファイルを使って幅を再修正し、テキスト形式で再保存することが可能となる。 逆に、テキスト形式だけだと、このような再修正は不可能である。
    [補足4] テキスト形式(*.prn)で保存後に、 これを直接編集したい場合は、Excel を使わずともテキストエディタ(秀丸、 NotePad 等)を使えば加工できる。
    [補足5] SAS に読み込ませるデータの形式として、 「スペース区切り」以外に「タブ区切り」、「カンマ区切り(CSV 形式)」等も 利用可能であるが、これらについては後日紹介する。

    [演習: データの電子化] 本節を参考に、各自が収集したデータも電子化しておくこと。 ファイル名や入力した変量を忘れないように。

  8. 次回は... : 10月15日 13:10

  9. [おまけ1] stat システムのパスワード変更方法 : 割り当てられたパスワードは覚えにくい
     [参照] パスワードを変更する : WASEDA UNIVERSITY statシステム
     [変更方法]
    1. stat システムにログインし、「passwd」と入力する。
    2. 「Enter existing login password:」とプロンプトが表示されるので、 現在のパスワードを入力する。
    3. 「New Password:」に対して、 新しいパスワードを入力する。
    4. 「Re-enter new Password:」に対して、 再度同じ新しいパスワードを入力する。
    5. エラーメッセージが表示されなければ、変更完了。忘れないように。

  10. [おまけ2] 学外から stat システムへのアクセス方法
     [参照] 自宅からstatシステムへ接続する : WASEDA UNIVERSITY statシステム
[DIR]講義のホームページへ戻ります