SAS の初歩プログラミング

統計処理 01 クラス : 第6回目(06/10/99)

前回は SAS を使うための操作方法やコマンドを中心に説明を行った。 今回は、SAS のプログラムについて解説する。
  1. プログラムとその出力結果
    1. 前回のプログラム : プログラムエリア : les0401.sas
      • はじめてのプログラム : 右側は説明用。プログラムは左側のみ。
      • 3つのパート : コメント、データの定義(data部)、緒処理の実行(proc部)
      • コメントは後々のために入れる習慣を付けよう
      • ブランクは無視されるが見易さのために入れよう
      • 各行は基本的にセミコロンで終わる
      • run コマンドごとに出力が得られる
       /* Lesson 4-1 */                             : コメント、実行に無関係
       /*    File Name = les0401.sas  05/27/99   */ : 後々の記録のためのメモ
                                                    :
      data kenshin;                                 : データ名の定義
        input name $ height weight;                 : 読み込む変量名、型($は文字型を示す)
      cards;                                        : データの始まりを示す
        asakawa     156  44                         : Case No.1
        sakaguchi   165  58                         :         2
        yano        157  43                         :         3
        imamura     159  44                         :         4
        esaka       162  44                         :         5
        takahashi   159  59                         :         6
      ;                                             : データの終りを示す
      proc print data=kenshin;                      : 読み込んだデータの表示
      run;                                          : 上記の実行
      proc means data=kenshin;                      : 平均値等の算出
      run;                                          : 上記の実行
      

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

      2. 平均値等の算出
        • 各変量ごとのサンプル数、平均、標準偏差、最小値、最大値
                                    SAS システム                             1
                                                 20:33 Wednesday, May 26, 1999
      
                        OBS    NAME        HEIGHT    WEIGHT
      
                         1     asakawa       156       44  
                         2     sakaguch      165       58  
                         3     yano          157       43  
                         4     imamura       159       44  
                         5     esaka         162       44  
                         6     takahash      159       59  
      
                                    SAS システム                             2
                                                 20:33 Wednesday, May 26, 1999
      
        Variable  N          Mean       Std Dev       Minimum       Maximum
        -------------------------------------------------------------------
        HEIGHT    6   159.6666667     3.3266600   156.0000000   165.0000000
        WEIGHT    6    48.6666667     7.6332606    43.0000000    59.0000000
        -------------------------------------------------------------------
      

    3. 実行時にエラーが出なければ良いのだが... : デバッグ
      • アウトプットエリアに順に期待した結果が表示されるのなら正常
      • エラーがあれば Logエリアに表示される

      • 綴りミスはある程度修正されるが、致命的なミスの時は実行が中断される
        1. 画面が三種類ある : Program, Output, Log
          必要に応じて各エリアを行き来する。コマンド行で。
          1. プログラムエリアへ : PGM
          2. ログエリアへ : LOG
          3. アウトプットエリアへ : OUTput
        2. プログラムのエラー個所を Logエリアで確認
        3. プログラムエリアに移って該当個所を修正
        4. 再実行しエラーがなくなるまで修正を繰り返す

  2. データをファイルから読み込む
    データが追加されたり、別クラスのデータを解析したくなったら??
    : データをファイルから読み込んで処理しよう
    : 大量データや定型的な処理に有効

    Lesson 6-1 : 皆さんの 性別、身長、体重、胸囲データ(taikaku99.dat) をファイルから読み込んで各変量の平均を求めよう。 なお、ファイル名は各自で命名したものを指定せよ。 ここでは「taikaku99.dat」という名前で説明する。

    1. 新しいプログラムを作る時にはまず現在のプログラムを消去
      プログラムエリアのコマンド行で : [入力] clear
    2. プログラム : les0601.sas
       /* Lesson 6-1 */                              :
       /*    File Name = les0601.sas   06/10/99   */ :
                                                     :
      data gakusei;                                  : データ名の定義
        infile 'taikaku99.dat';                      : ファイル名の指定
        input seibetsu $ shintyou taijyuu kyoui;     : 変量名、型
                                                     :
      proc print data=gakusei;                       : データの表示
      run;                                           :
      proc means data=gakusei;                       : 平均、標準偏差、最大最小値の算出
      run;                                           :
      
    3. 出力結果 : les0601.out

                                    SAS システム                             1
                                                 21:11 Wednesday, June 9, 1999
      
                  OBS    SEIBETSU    SHINTYOU    TAIJYUU    KYOUI
      
                    1       F          145.0       38.0        . 
                    2       F          154.0       46.0        . 
                    3       F          156.0       49.0       85 
                    4       F          159.0       52.0        . 
                    5       F          159.0         .         . 
                    6       F          159.0         .         . 
                    7       M          162.0       60.0        . 
                     (中略)
                   39       M          182.0        64         . 
                   40       M          185.0        68        93 
                   41       F             .          .         . 
                   42       F             .          .         . 
                   43       F             .          .         . 
                   44                     .          .         . 
      
                                    SAS システム                             4
                                                 21:11 Wednesday, June 9, 1999
      
        Variable   N          Mean       Std Dev       Minimum       Maximum
        --------------------------------------------------------------------
        SHINTYOU  40   169.4475000     7.9068937   145.0000000   185.0000000
        TAIJYUU   38    59.5473684     8.5012793    38.0000000    88.5000000
        KYOUI     13    88.8461538     5.0636968    82.0000000   100.0000000
        --------------------------------------------------------------------
      
    4. プログラムの保存 :
      プログラムエリアのコマンド行で : [入力] file 'les0601.sas'

  3. [講義後の補足] :
    1. 講義の進捗が予想より悪かったので、続きは来週に行います。 よって講義前に掲載してあった内容も後半をカットしました。
    2. 私が資料を作成するために使ったデータファイルにミスがあり、 ケース数が 44 になっていました。45 が正解ですので、 掲載した数値結果は一人分だけ微妙にずれていると思います。 配布資料は既に印刷済みですので、そのまま配布しますが、 自分の計算結果と少しぐらい異なっていても間違いではないと思います。
[DIR]講義のホームページへ戻ります