データとの対話 SASの使い方について

PC-SAS入門

演習用データ&プログラムについて

変数名リスト


0.SASとは?

 SASとはStatistical Analysis Systemのことで、統計解析を行う言語、パッケージ。

 簡単なプログラム方法をマスターすれば、難しい数式を覚えることなく簡単に統計分析を行うことができる。

 使える手法の例(括弧内は各分析を行うSASのプロシジャ名(太字は講義で紹介するプロシジャ)。

  • データの印刷、グラフの作成など
  • 統計分析
  •  注)簡単に計算してくれますが、その結果を解釈してはくれません。解釈するのは自分自身なのです。

    ・SASについての参考文献


    1.SASを使う前提

    1)使うデータとそのファイル

     「CMについてのアンケート」データファイルは、「f:hamaokadd]の中のensdat1(こう表示されているが実際はensdat1.txt)。

     皆さんは残念ながら、ハードディスクを一時的にしか利用できないので、処理速度や容量の問題があるかも知れませんが、フロッピーディスクにデータを保存し、それを利用してもらいます。


    2)演習用データを保存するディレクトリの作成

     自分のフロッピーを入れる。

     「マイコンピューター」を開き、自分のフロッピー(A:)を選ぶ。

     「ファイル」「新しいフォルダの作成」

     「ensyu」と入力して、ディレクトリを作成する。


    3)データファイルのコピー

     「f:hamaokadd]の中のensdat1(こう表示されているが実際はensdat1.txt)を、自分のフロッピーのensyuに入れる。

     演習で使うSASのプログラムは「f:hamaokadd]の中にあります(演習用データ&プログラムについて参照)。

    目次へ


    2.SASの使い方

    1)SASの構成

    SASには次の3つのウインドウがあります(この他にもあるが、よく使うのは3つ)。

    Program editorウインドウ プログラムを書き込むウインドウ。
    LOGウインドウ 計算過程でのSASからのメッセージなどが出力される。
    outputウインドウ 計算結果が出力される。

    注)自分がどのウインドウにいるか見失った場合 「ウィンドウ」を選ぶと、各ウインドウに移動できる。


    2)プログラムの実行

     基本的には、次の手順で実行させる。

     Program editorウインドウにプログラムを書き込み/読み込み

     →必要ならば修正

     →実行


    (1)プログラムの読み込み

    Program editorに移動。

    「ファイル」「オープン」

    「f:hamaokadd」の中から「ensread1」を選ぶ。

    (注)自分で直接Program editorにプログラムを書き込むこともできる。


    (2)プログラムの実行

     Program editorウインドウにいることを確認。

    「ローカル」「サブミット」で実行される。

    (注)「サブミット」すると、Program editorウインドウはクリアされる。プログラムを修正した場合にはファイルの保存を忘れないように。 


    (3)実行結果のみかた

    ・logウインドウ

     sasシステムからのメッセージが出力される。

     自分のプログラムは黒字、sasからのメッセージのうち単なる報告は、警告、エラーは赤字で出力される。

    ・outputウインドウ

     うまく行けば(エラーが出なければ)計算結果が出力される。

    ・Program editorウインドウ

     クリアされている。

    (注)連続して実行すると、各ウインドウには前の出力に続けて結果が出力される。

       まめに「編集」 「テキスト消去」を実行しましょう。

    目次へ


    参考)

  • ウインドウの出力はカット、コピーなどできるので、そのままワープロなどに貼り付けて、レポートを作成することができる。
  • 各ウインドウの出力を画面ではなく、ファイルに出力することもできる(プログラムensread1を参照)。

  • 参考)sas/insight

    sasデータセット形式になっていると、sas/insightで対話型の分析を行うことができます。

    「グローバル」 「対話式データ解析」で起動。

    「SAS/INSIGHTオープンウインドウ」

    sasが作ったデータセットが見える。

    ensdat1というデータセットを選ぶと、ワークシート形式で表示される。

    ただし、この状態ではすべての変数が間隔尺度となっている。

    名義尺度は名義尺度に変更しておくと、あとの分析が楽になる。

    sasが尺度に応じた適切な手法を選んでくれる。

    プロット、回帰分析、主成分分析までならば、 SAS/INSIGHTの中でできます。予備分析には大いに威力を発揮するでしょう。

    この講義では、これ以上紹介しません。

    目次へ


    3.SASプログラミング入門

    1)プログラムの構成(要素)


    2)文法

  • 変数名
  •  変数名は英数字で8文字以内。変数名の先頭の文字は英字(大文字、小文字は区別されない)。

     C言語のように変数を宣言しておく必要はない。

     ただし、文字列変数の場合には、読み込みのときに、その変数が文字変数であることを指定しておく必要がある。

     例 xという数値変数を読み込む場合。

       input x ;

     例 xという文字列変数を読み込む場合。

       input x $;

       →xの後に「スペース$」を入れておく。

  • ファイル名、変数名、コマンドなどの、大文字、小文字は区別しない
  • 一つの文はセミコロン「;」で区切る。
  • プロシジャ単位で実行される。
  • 「/*  */」はコメント文であり、実行されない。
  • オプションの指定方法
  •  プロシジャによって異なりますが、オプションの指定は次の二カ所で行います(斜体部)。

     詳細はプロシジャによって異なるのでマニュアルを参照。

     proc **** data=入力データセット名  out= 出力データセット名;

      varなど/計算やプロットのオプション;

  • 入力データセットの指定
  •  どのデータセットについて処理させるかdata=で指定することができる。指定しなければ、直近に作成されたデータセットを処理する(下の例はproc printの例だが、他のプロシジャでも同様)。

    例 データセットを指定した例。 例2 データセットを指定しない例。
      data aaa;

      .....

      data bbb;

      .....

      proc print data=aaa;

      run;

    データセットaaa,bbbを作成した。

    data=aaaが指定されているので、aaaが印刷される。

    data aaa;

      .....

    data bbb;

      .....

      proc print ;

      run;

    dataで指定されていないので、直前に作成されたbbbが印刷される。

    目次へ


    4.SASコマンド

    講義で使うもののみ。

  • DATA データセット名
  •  指定された名前のデータセットを作成する。

     例)data kenssdt;

       kenssdtという一時データセットを作成。  

     例)data md.kenssdt;

       mdというsasデータ・ライブラリの下に、kenssdtという永久データセットを作成。

  • LIBNAME sasライブラリ名 Windowsのディレクト名;
  •  sasデータライブラリとWindowsのファイルとの関係を指定する。

       ・永久データセットについては、aaa.bbbbのようにデータセット名を指定する。

         「sasライブラリ名.データセット名」という形式になる。

          →(sasライブラリ名とデータセット名との間をピリオドで区切る)

        sasライブラリ名とWindowsのファイルとを対応づけるのが「LIBNAME」コマンド

          例)LIBNAME md "a:\mydata\";  

           mdで始まる永久データセットはa:\mydata\の下にあること(保存すること)を指定する。

       ・一時データセットの場合には、ライブラリ名の指定は不要。

  • INFILE Windowsファイル名 delimiter=デリミタの種類 ;
  •        例)INFILE 'a:\mydata\kendat.prn' delimiter=' ' ;

             a:\mydata\kendat.prnから読み込むことを指定。

             デリミタは「」=スペースである。

  • by 変数名

  • where 条件文

  • 目次へ


    5.主なプロシジャ(講義で紹介するもの。アルファベット順)

  • proc cluster data=入力データセット名 オプション;
  • プログラム例 プログラムからの出力例

    目次へ


  • proc chart data=入力データセット名;
  • プログラム例 プログラムからの出力例

    目次へ

  • proc corr data=入力データセット名 オプション;
  • プログラム例 プログラムからの出力例

    目次へ


  • proc factor data=入力データセット名 オプション;
  • プログラム例 プログラムからの出力例

    目次へ


  • proc fastclus data=入力データセット名 オプション;
  • プログラム例 プログラムからの出力例

    目次へ


  • proc freq data=入力データセット名;
  • プログラム例 プログラムからの出力例

    目次へ


  • proc glm data=入力データセット名;
  • プログラム例 プログラムからの出力例

    目次へ


  • proc means data=入力データセット名;
  • プログラム例 プログラムからの出力例

    目次へ

  • proc plot data=入力データセット名 ;
  • プログラム例 プログラムからの出力例

    目次へ


  • proc print data=入力データセット名;
  • プログラム例 プログラムからの出力例

    目次へ


  • proc reg data=入力データセット名;
  • プログラム例1(残差分析なし) プログラムからの出力例

    プログラム例2(残差分析あり) プログラムからの出力例

    目次へ


  • proc tree data=入力データセット名 ;
  • プログラム例 プログラムからの出力例

    目次へ


  • proc univariate data=入力データセット名 オプション;
  • プログラム例 プログラムからの出力例

    目次へ



    付録1 データの読み込みかた

     自分で用意するデータの形式としては次のようなものがあるでしょう。


    1)表計算ソフトで入力したデータ。

     自分で本などをみてそれをエクセルなどの表計算ソフトで入力したデータ。

     表計算ソフト独特の形式で保存されている(ファイル名*.xclなど)ので、直接SASで読み込むことはできない。

     →表計算ソフトから(自由書式の)テキストファイル形式に出力。それをSASで読み込む。


    2)自由書式のテキストファイル形式で入手する。

     データとデータが、「 スペース」や 「,」「タブという眼には見えない特殊文字」などで区切られているデータ(データの区切りに用いられる文字を「デリミタ」と呼ぶ)。

     例 ,で区切られている。→ 985,187,abc,899,156,89,3

       スペースで区切られている。→ 985 187 abc 899 156 89 3


     このデータならば簡単に読み込める。

     ファイル名を指定して、input 変数名......;run;とする。

    ----

    上のデータ例について、7つの変数をa〜fという変数で読み込む場合。

    input a b c $ d e f g;

    のようにinput文を書く。

    注意)変数が都道府県、人名のような「文字」の場合には、変数名の後にスペースを空けて「$」をつけておく。


    3)固定書式のテキストファイル形式でデータを入手する。

     データとデータとの間に区切り記号がない。

     →データが記録される桁数が固定されている。

    例 上と同じデータ

       985187abc899156893

       3 3 3 3 3 2 1←各変数の桁数。

     各変数の記録されている桁の位置を指定する。

     →変数名のあとに、「桁の開始-終了位置」を指定する。

    例)input a 1-3 b 4-6 c $ 7-9 d 10-12 e 13-15 f 16-17 g 18-18;

    注)フォーマット入力という指定もある。SASマニュアル参照。

    →SASで読み込むときは、どの変数が、どの桁に記録されているかを指定することが必要。

    目次へ


    付録2 表計算ソフトからのデータの読み込みかた

     エクセル、ロータスなどの表計算ソフトで入力したデータをSASで読み込むことができます。

     ただし、表計算ソフト独特の形式のファイル(*.xclなど)を直接読み込むことはできないので、表計算ソフトで入力したファイルをテキスト形式のファイルに出力してから読み込みます。

    (演習用に提供しているデータもそうやって入力したものです。)

    手順は次のようになります。


     以下ではエクセルを例にしますが、ロータスでも同様にできるはずです。

    a:ドライブの\mydataというフォルダにkendatというデータをエクセルで作成する。

     よって、次の二つの方法のどちらかで対応して下さい。

      (1)2.1項のcardsコマンドを使うか、

      (2)以下の方法で、文字変数を除いて数字データだけとする(データを除くのだから、変数名も除いて下さい)。

    -----------

    フォルダを作成しておくこと

      


    1)表計算ソフトなどで上のデータを次のように入力する。

    変数名は適当に自分の好きなようにつけてよいが、ここでは次のように。

    データを入力。

    欠損はピリオド「.」を入力。

    入力したら保存する(自分のフロッピーに)。


    2)テキスト形式で保存

     SASでデータを読み込むためには、テキスト形式に保存しなければならない。

    注)次の条件を満たしておくことが必要[大橋ら(1994),p.28]。

     各データは1個以上の空白で分離されていること。

     必要な小数点はデータ内に含まれていること。

     データの欠損値はピリオド「.」としておくこと。

    注)自由書式では、文字データは半角8文字(8バイト)=全角4文字までしか読み込めません。

     より長い全角文字列を読みたい場合には、固定書式としてください。

    →エクセルで新しいワークシートを開き、上のデータのうち、データの部分のみ(変数名の部分は含まない)をコピーしてテキスト形式で保存する。

     注)保存のとき「ファイル形式」でテキスト(スペース区切り)を選ぶとテキスト形式で保存される。

     →保存するファイル名はkendat.prnとする。


    3)sasによる読み込み&永久データセットの作成

     次のsasプログラムをsasのprogram editorに入力(この画面からコピーできるはず)。

     サブミットしてみる(斜線は自分たちのデータによって変更が必要な部分)。

    注)漢字データの読み込みがうまく行かない場合は、文字データを漢字ではなくローマ字にしてみる(例 東京→tokyoなど)。

    ローマ字ならば読み込める場合には、double-byte character sets (DBCS)オプションがインストールされていないと考えられます。→システムの管理者に相談して下さい。

    目次へ


    付録2.1 ファイルからではなくcardsコマンドでSASプログラム中にデータを書き込む場合。

     sasのcardsコマンドを使ってデータをプログラムの中に書き込むこんで、それを読み込むことができます。

    下の例を参照(自分のフロッピーに保存するにはどうすればよいかは自分で考えてみて下さい)

    目次へ


    a-2具体例


    付録3 フロッピーを忘れた場合

     一時的にデータセットを作成して分析するプログラムも用意してあります。

      「f:hamaokadd]の中の「runable」というディレクトリの下に入っているプログラムを利用して下さい(プログラム名は同じ)。

     ただし、CMデータについての永久データセットが作成されていないので、sasを起動したら、まずensread1を実行して、永久データセットを作成してください。

     意識しなくても、実行してエラーがなければ、自分の「saswork」の下に、このデータセットが作成されます。

     この場合、フォルダSAS611の下の「saswork」というフォルダに、一時的に作成されたデータが格納される。

     sasを終了したら、これらのファイルは消去される。

    目次へ


    付録4 ダミー変数の作り方

     ノンメトリックな変数を回帰分析の説明変数とする場合には、それをダミー変数に変換することが必要です。

     マルチプルアンサー(○はいくつでも)の名目尺度の場合には、その選択肢が選ばれたときに1、そうでないときに0となるようにコード化されることが多いので、それをそのままダミー変数として使うことができます。

     これに対して、シングルアンサー(○はひとつだけ)の場合には、1.男性、2.女性の1、2という数字を0、1のダミー変数に変換する必要があります。

     選択肢がn個ある場合にはn-1個のダミー変数を定義する必要があります(n個定義してしまうと、行列がランク落ちしてしまう)。

    詳しくはプログラムを参照して下さい

    プログラムの実行結果(「無職」はいないので、全サンプルについて0となっているのでエラーが出ている)


    目次へ