...

SAS授業資料 北海道大学文学部(行廣隆次と共著)

by user

on
Category: Documents
15

views

Report

Comments

Transcript

SAS授業資料 北海道大学文学部(行廣隆次と共著)
情報基盤センター(南館)での SAS の使い方
行廣 隆次1 ・ 大津起夫2
1998 年 4 月 30 日/../2001 年 4 月 20 日/2003 年 7 月版
1
2
前 北海道大学文学部行動システム科学講座助手 (現 京都学園大学)
大学入試センター 研究開発部 (前 北海道大学文学研究科教授)[email protected]
1
目次
第 1 章 はじめに
1.1
1.2
1.3
1.4
本解説の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
サンプルデータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
情報メディア教育研究総合センターのコンピュータ環境 . . . . . . . . . . . . . . . . . . . .
参考書・マニュアル
第 2 章 SAS を動かす
2.1
2.2
2.3
2.4
SAS の起動と終了 . . . . . . . . . .
基本ウインドウ . . . . . . . . . . . .
サンプルプログラムによる実行の流れ
ファイルの保存と印刷 . . . . . . . .
. . . .
. . . .
(DMS
. . . .
. . . . . . .
. . . . . . .
を使う場合)
. . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
5
5
7
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
11
11
14
15
第 3 章 SAS プログラムの基礎の基礎
3.1
3.2
3.3
3.4
SAS で使用するデータの構造 . . . . . . . . . . .
サンプルプログラムで見る SAS プログラムの構造
基本的な PROC の例 . . . . . . . . . . . . . . . .
出力のサイズに関するオプション指定 . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
第 4 章 DATA ステップの進んだ使い方
4.1
4.2
4.3
4.4
4.5
3
3
3
3
4
割り当て文,条件判断,関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
データの選別 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
欠損値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
複数のデータセットを扱う . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
テキストファイルへのデータ出力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
17
18
18
19
24
第 5 章 グラフを描く
5.1
5.2
5.3
27
グラフを描く PROC の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
テキストしか表示できない端末でグラフを書くには . . . . . . . . . . . . . . . . . . . . . . 28
PS ファイルの出力: 印刷するために . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
第 6 章 SAS による統計分析
6.1
6.2
6.3
6.4
1 変量ごとの解析 .
2 変量の関係を解析
t 検定 . . . . . . .
回帰分析 . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
第 7 章 データ解析演習 (1) – 調査/テストデータの処理 –
7.1
7.2
7.3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
31
31
33
34
38
41
サンプルデータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
データを読み込む . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
頻度の集計 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2
7.4
7.5
7.6
7.7
変数の和を計算する
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
統計解析の演習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Cronbach の α 係数を計算する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
更に必要なこと... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
第 8 章 データ解析演習 (2) – 実験データの処理 –
8.1
8.2
8.3
45
サンプルデータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
変数変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
要因ごとの平均値をプロットする . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
付 録 A 情報メディア教育研究総合センターの利用
49
A.1 センターのコンピュータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
A.2 他のコンピュータとのデータ交換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
付 録 B UNIX 環境の利用
B.1
B.2
B.3
B.4
B.5
B.6
B.7
ディレクトリとファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
エディタ mule を使おう . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
ファイルの情報を調べる . . . . .
オンラインマニュアル . . . . . .
複数のファイルを一度に操作する
複数のプログラムを同時に動かす
ファイルを整理する
付 録 C DMS を使わない SAS の使い方
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
53
53
55
55
57
59
60
61
63
C.1 サンプルプログラムによる実行の流れ (2) DMS を使わない方法 . . . . . . . . . . . . . . . 63
C.2 DMS を使う方法と,使わない方法の比較 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3
第 1 章 はじめに
この資料では,北海道大学情報基盤センター(南館)(以下センターと略す) で,統計処理パッケージ SAS
を使用する方法を解説する.本資料だけで SAS の使用法をマスターするということではなく,マニュアル
や参考書を読むための導入として使用することを想定して書かれている.
1.1
本解説の構成
Chapter 2 では,SAS の基本的な操作方法を解説する.続いて Chapter 3 では,SAS プログラムを書
くためにどうしても欠かせない基本的事項を説明する.とりあえず SAS を最低限使えるようにするには,
これら 2 つの Chapter と,その場で必要な統計手法の実行の仕方を解説した資料 (本資料の Chapter 6 以
降や,マニュアル,他の解説書等) を読む必要があるだろう.
Chapter 4 では,Chapter 3 で扱わなかった DATA ステップでのデータの様々な操作法について解説し
ている.また,Chapter 5 ではグラフの出力方法を扱っている.
最後に,Chapter 7 と 8 では,サンプルデータを使って,実際にデータ解析の演習を行う.また,それ
までの Chapter で解説していなかった幾つかの点についても,適宜解説している.
1.2
参考書・マニュアル
本資料は,
市川・大橋・岸本・浜田 「SAS によるデータ解析入門 (第 2 版)」東大出版会
と併用することを念頭において書かれている.文中で教科書やテキストと書かれている場合,上記書籍の
ことを指している.
また,詳しい内容については,直接 SAS のマニュアルを参照することも必要になるだろう.
1.3
サンプルデータ
本資料中で使用するサンプルデータは,下記のディレクトリ,
~otsu/cl01f0/data
からコピーすることができる1 .
例えば,taikaku2.data というファイルをコピーするには,
¶
³
% cp ~otsu/cl01f0/data/taikaku2.data .
µ
´
と,UNIX のコマンドプロンプトから入力する.その他の UNIX 環境の操作方法は,Appendix B および
別資料「UNIX と Mule の使い方」に解説した.
1
一部の,学習者自身が入力の実習をすることを想定しているものを除く.
4
第1章
1.4
はじめに
情報メディア教育研究総合センターのコンピュータ環境
センターでは,次のようなコンピュータが使用できる.
1. パソコン (Windows98)
センターおよび学部端末室にあり,利用できる. 実習では使わないが,ワープロや表計算ソフトを始
め,各種アプリケーションや言語が使用できるので,各自調べて利用してよい.
2. 情報メディアセンターのホストコンピュータ (UNIX)
ap.ec.hokudai.ac.jp
端末パソコンまたは,その他のネットワークにつながったコンピュータから利用する
3. SAS 利用のための情報メディアセンターのホストコンピュータ (UNIX)
sas.ec.hokudai.ac.jp
端末パソコンまたは,その他のネットワークにつながったコンピュータから利用する
4. Splus 利用のための情報メディアセンターのホストコンピュータ (UNIX)
splus.ec.hokudai.ac.jp
端末パソコンまたは,その他のネットワークにつながったコンピュータから利用する
各実習室に備えられているのは,全て Windows98 環境のパソコンである.UNIX のホストコンピュー
タは,パソコンを端末にしてネットワークを介して利用する.その方法は,Appendix A を参照すること.
UNIX ホストコンピュータのうち,SAS が利用できるマシンは,限られている.SAS を利用する場合に
は必ず sas.ec.hokudai.ac.jp へ接続すること.また,SAS を利用しない場合には,その他のホストコ
ンピュータを利用する.
5
第 2 章 SAS を動かす
本章の目的は,UNIX 上の SAS を,一通り動かせるようになることである.
ここでは,SAS の DMS (Display Manager System) 環境を利用した.しかし UNIX 環境に慣れている
者にとっては,mule 等のエディタでファイルを編集し,SAS をコマンドラインから起動した方が便利で
あろう.その方法については,Appendix C で説明する.
2.1
2.1.1
SAS の起動と終了
SAS の起動
SAS 実行用 UNIX ホストコンピュータに login した後,
¶
³
% sas
µ
と入力する.
´
2.1.2
SAS の終了
PROGRAM EDITOR ウインドウまたは LOG ウインドウの ファイル メニューから SAS の終了...
を選択する.
2.2
基本ウインドウ
SAS を DMS 環境で起動すると,次の 3 つのウインドウが開く.
• PROGRAM EDITOR ウインドウ
プログラムやデータを入力,編集, 実行するウインドウ.(ツールバーも表示される).
• LOG ウインドウ
プログラムを実行すると,LOG ウインドウに実行の経過やエラーメッセージが表示される.
• OUTPUT ウインドウ
プログラムを実行し,正常に終了すると,OUTPUT ウインドウに処理結果が表示される.
2.3
2.3.1
サンプルプログラムによる実行の流れ (DMS を使う場合)
プログラムの入力
次のサンプルプログラムを,PROGRAM EDITOR ウインドウに入力してみよう.
6
第2章
¶
SAS を動かす
sample1.sas
³
data;
input name $ sex $ height weight;
cards;
Taro
M 178.3 73.8
Hanako F 158.3 49.3
Jiro
M 168.5 54.2
Ichiro M 172.3 63.5
Michiko F 163.2 48.2
Nozomi F 152.3 45.9
;
proc sort;
by sex name;
proc print;
proc means;
by sex;
run;
µ
´
操作の仕方は,テキストの p.13 の図表 2.3 にまとめられているが,そのまま全てが使えるわけではな
い.カーソル移動は,マウスでも可能.行の削除,行の挿入は,図表 2.3 の操作が使える.
¤
¡
¤
¡
挿入、上書きモードの変更は£INS ¢キーで行う. 行の削除は行番号の先頭部分に d を入力して£Enter ¢. 複
¤
¡
数行を削除する場合には, 先頭行と末尾行の行番号先頭に dd と入力し£Enter ¢. 行を挿入する場合には行番
¤
¡
号先頭に i, カーソル位置の前に挿入のときは ib と入力し, 同様に£Enter ¢. 行の複製は r(同じ内容がつぎ
の行に複製される)を行番号先頭に入力する. コピーを行うには行番号先頭に c と入力し, さらにコピー
¤
¡
先の行の先頭(コピーを挿入する前)に a と入力してから£Enter ¢. 指定の行の前にコピーを行うには a の
代わりに b と入力する. コピーでなく行の移動を行うには c と入力するところを m とする. 複数行の複製
やコピー, 移動には rr,cc,mm などを dd と同様に利用できる.
2.3.2
プログラムの実行
PROGRAM EDITOR ウインドウの ローカル メニューから, サブミット を選択する.
2.3.3
結果の出力
LOG ウインドウには各種メッセージが表示される.エラーがなければ,処理結果が OUTPUT ウイン
ドウに表示されるはずである.エラーが発生した場合には,LOG ウインドウのエラーメッセージを参考
に,プログラムを修正して再実行する.
2.3.4
プログラムの呼び戻し
プログラムを実行 (サブミット) すると,PROGRAM EDITOR ウインドウからプログラムは消えてしまう.
これを呼び戻すには,PROGRAM EDITOR ウインドウの ローカル メニューから テキストの呼び戻し
を選択する.
2.4. ファイルの保存と印刷
2.4
2.4.1
7
ファイルの保存と印刷
テキストの保存
PROGRAM EDITOR ウインドウにプログラムがある状態で, ファイル メニューから 名前をつけて保存
を選択し,適切なファイル名を入力すると,プログラムをファイルに保存することができる.
また同様に,OUTPUT ウインドウに出力結果がある状態で,OUTPUT ウインドウのファイルメニュー
から 名前をつけて保存 を選択すると,主力結果をファイルに保存することができる.
一度,新規保存をした後,2 回目から同じファイルに上書き保存する場合には, 名前をつけて保存 では
なく 上書き保存 でもよい.
慣習として,SAS プログラムを保存する場合には,sample.sas のようにファイル名の末尾に .sas をつ
ける.また,実行結果の保存ファイル名には sample.lst のように .lst を,実行状況ログの保存ファイル
名には sample.log のように .log をつける.
入力したプログラムを sample1.sas というファイル名で,その実行結果出力を sample1.lst というファ
イル名で保存してみよう.
保存した結果やプログラムを後から見るには
UNIX のコマンドプロンプトから,
¶
³
% cat sample1.sas
% cat sample1.lst
µ
´
等とすると,ファイルの中身が表示される.しかし,ファイルが一画面に収まらない場合には表示がなが
れて行ってしまうので,
¶
³
% more sample1.lst
µ
または,
¶
´
³
% less sample1.lst
µ
´
¤
¡
¤
¡
等とする.1 画面分表示したら停止するので,£リターン ¢(エンター) キーで一行進み,£スペース ¢キーで
¤ ¡
一画面分進む.less を使っている時には,£b ¢キーで一画面戻ることができる.
2.4.2
テキストの印刷
ファイルへの出力
まず,出力したい内容をファイルに出力しておく (上記参照).ここでは,file1.lst というファイルを保存
したとする.
印刷
テキストファイルを印刷するには,UNIX のコマンドプロンプトから,
8
第2章
SAS を動かす
¶
³
% a2ps file1.lst | lp -dpz2n001
µ
´
等とする.-d プリンタ名 で出力するプリンタを指定する.使用している部屋のプリンタへ出力されるよ
う,適切なプリンタ名を選ぶこと.
上記のコマンドでは,テキストが 2 段組で出力される.これを 1 段組にするには,
¶
³
% a2ps -p file1.lst | lp -dps2n001
µ
と,a2ps コマンドに -p オプションを付ける.
2.4.3
´
グラフの印刷
グラフを印刷するには,SAS で PostScript (PS と略す) ファイルと呼ばれるファイルをあらかじめ作成
し,それをプリンタへ送る.PS ファイルの作成方法は,5.3 で扱う.
印刷イメージの画面での確認
作成した PS ファイルの印刷イメージを,実際にプリンタに出力する前に確認するには,UNIX のコマ
ンドプロンプトから ghostview コマンドを用いて,
¶
³
% ghostview graph1.ps
µ
のようにする.
´
印刷
¶
³
% lp -dps2n001 graph1.ps
µ
とする (ps2n001 という名前のプリンタへ印刷する場合).
印刷が終って,もう必要無い時には PS ファイルは削除しておくこと.
¶
´
³
% rm graph1.ps
µ
2.4.4
´
紙を無駄にしないための注意
SAS を DMS モード (SAS のウインドウが開く環境) で実行していると,OUTPUT ウインドウには実
行した処理結果がずっと累積して貯められていく.たくさんのプログラムを実行した後に,これを印刷し
ようとしてファイルに保存すると,必要ないところまで保存してしまう場合が多い.
こうしたファイルを印刷に用いるならば,保存したファイルから必要なところだけを残して不要な部分
はエディタ等で削除してから印刷すること.UNIX 上でのエディタの使い方は,Appendix B を参照する
こと.
または (こちらの方がお勧めであるが),SAS プログラムを一つ実行するごとに,OUTPUT ウインドウ
の 編集 メニューから すべてクリア を実行してウインドウの内容を毎回消去し,満足できる処理結果が得
られる度に,その内容だけをファイルに保存していくこと.
2.4. ファイルの保存と印刷
9
グラフを印刷する場合にも,ghostview コマンドを使って本当に求めているグラフが作成されているか
を画面で確認してから,実際に印刷すること.印刷してみると,何らかのミスで求めているものと違うグ
ラフができていてやり直し,といったことはよく起こるものである.
2.4.5
トラブル対策
• SAS がとまってしまった様に見える場合.
SAS の DMS ではファイルの Open や書き込みをメニューから選択すると,ファイル名を指定するた
めの小さなウィンドウが表示される.このウィンドウが他のウィンドウの背後にあると,SAS の他
のウィンドウがコマンドを受け付けなくなり,止まってしまったように見えることがある.
• 利用領域があふれた場合.
大量のファイル,特に PostScript ファイル,画像,C++プログラムの実行ファイル a.out などを多
く保管すると,個人に割り当てられたファイル領域を使い果たしてしまう場合がある.このときに
は,rm コマンドを用いてファイルの削除を行なう.rm コマンドは危険 (消したファイルは戻らない)
なので,十分注意して作業する.
11
第 3 章 SAS プログラムの基礎の基礎
3.1
SAS で使用するデータの構造
次のサンプルデータを見よ.
¶
Ogawa
Tanaka
Nakayama
Takahashi
Okamura
Sakakibara
F
M
M
F
M
F
158.2
172.4
180.5
163.2
169.1
154.3
サンプルデータ
48.1
59.2
74.5
51.0
67.2
53.2
³
µ
´
これは,6 名の人について,名前・性別・身長・体重を記述したものである.名前・性別・身長・体重は変
数 (variable) と呼ばれる.また,データが記述されている各個体 (この場合には人) をオブザベーション
(observation) と呼ぶ.
変数には,文字型と数値型がある.ここでは,名前と性別は文字型,身長と体重は数値型である.
ここでは,1 オブザベーションのデータを一行に横に並べて書き,変数の間は 1 個以上のスペースで区
切ることにする.他の記述方法も可能であるが,それはテキストを参照すること (7.2 でも少し扱う).
3.2
3.2.1
サンプルプログラムで見る SAS プログラムの構造
ステップ
SAS プログラムは,複数のステップから成り立っている.ステップには,
• DATA ステップ: データの作成,編集,入出力
SAS データセットを作成する.
• PROC ステップ: 表やグラフの作成,各種の分析の実行
SAS データセットを用いて,計算・作表・作図などを行う.
がある.また,DATA ステップと PROC ステップの他に,オプション等を設定するパラメータ設定文が
含まれることもある.
3.2.2
文 (ステートメント)
各ステップは複数の文 (ステートメント) から成り立っている.文とは; (セミコロン) で区切られたプロ
グラムの記述単位のこと.一行に複数の文を記述できる.また,複数の行にわたる文も記述できる.
大文字か小文字かは無視される.ただし,文字列変数の内容は,大文字と小文字が区別される.
12
第3章
3.2.3
SAS プログラムの基礎の基礎
最初の例
サンプルプログラム
¶
taikaku1.sas
³
data;
input name $ sex $ height weight;
cards;
Ogawa
F 158.2 48.1
Tanaka
M 172.4 59.2
Nakayama
M 180.5 74.5
Takahashi
F 163.2 51.0
Okamura
M 169.1 67.2
Sakakibara F 154.3 53.2
;
proc print;
run;
µ
´
DATA ステップの解説
proc data; から,proc print; の前の ; だけの行までが DATA ステップである.各行の意味は,
• data;
新しい SAS データセットを作成する.
• input name $ sex $ height weight;
4 つの変数を定義し,データを読み込む. 文字型変数には後ろに$ をつける.標準では文字型変数は
英数字 8 文字分までの値を保持する.より長い文字列をデータとして扱う場合には、
input name $ 12 ; のように$のあとに最大の文字数(英数字としての)を指定する.
• cards;
これ以後に,データを記述する.最後に ; を付けるのを忘れないこと.
PROC ステップの解説
proc print; は,SAS データセットの内容を表示するための PROC ステップである.
RUN ステートメント
プログラム中に run; という文があると,実際に実行される.
課題
3.2.4
上記プログラムを入力し,実行せよ.プログラムは taikaku1.sas というファイル名で保存せよ.
データを別ファイルから読み込む方法
実際に統計分析をする場合,一つのデータセットに対して一つの SAS プログラムによる分析しか実行し
ないことはまれである.従って,多くの場合には,データはプログラムとは別のファイルに保存して,複
3.2. サンプルプログラムで見る SAS プログラムの構造
13
数のプログラムからそれを読み込めるようにすると便利である.
データファイルを作る
データファイルの中には,SAS プログラムの中に記述した時と同じような書式でデータ部分のみを記
述する.ここでは,taikaku.data というファイル名で以下のデータセットを作成する.最終行に ; はいら
ない.
¶
taikaku.data
Ogawa
Tanaka
Nakayama
Takahashi
Okamura
Sakakibara
F
M
M
F
M
F
158.2
172.4
180.5
163.2
169.1
154.3
³
48.1
59.2
74.5
51.0
67.2
53.2
µ
´
ファイルを作るには,エディタ (mule など.mule の使用法は B.2 で解説する.) を使うか,あるいは
SAS DMS 環境の PROGRAM EDITOR ウインドウで編集して保存すること.
サンプルプログラム
先程のプログラムを,データを別ファイルから読み込むように変更すると,
¶
taikaku2.sas
³
data;
infile ’taikaku.data’;
input name $ sex $ height weight;
proc print;
run;
µ
´
となる.
infile ’taikaku.data’; は,taikaku.data というファイルからデータを読み込む,という指定である.
各変数に説明をつけることもできる.
¶
³
taikaku2a.sas
data;
infile ’taikaku.data’;
input name $ sex $ height weight;
label name="姓 (ローマ字)" ;
label sex="性別 (M 男性,F 女性)" ;
label height="身長 (cm)";
label weight="体重 (kg)";
proc print;
proc freq;
run;
µ
´
上の例では, 作成された頻度表に変数の説明が表示される.
センターの mule で日本語を入力するには,若干注意が必要なので,最初はローマ字で練習してみる.セ
ンターの UNIX システムは,シフト JIS とよばれる日本語のコードを用いている.これは MS-Windows で
14
第3章
SAS プログラムの基礎の基礎
採用されているものと同じである.
課題
データを taikaku.data というファイル名で,プログラムを taikaku2.sas というファイル名で作成
し,実行せよ.
3.3
3.3.1
基本的な PROC の例
PROC PRINT
proc print (既出) は,SAS データセットに含まれているデータを表示する機能を持つ.
3.3.2
PROC MEANS
各種記述統計量を計算する.名前は means だが,平均だけを計算するわけではない.デフォルトでは,有
効なオブサベーション数 (N),平均 (Mean),標準偏差 (Std Dev),最小値 (Minimum),最大値 (Maximum)
が出力される.その他に多くの統計量がオプション指定によって出力できる.
課題 DATA ステップは, taikaku2.sas と同様とし,
¶
proc means;
³
run;
µ
という SAS プログラムを作成し実行せよ.
´
3.3.3
グループ別の処理
男女を混みにして身長や体重の分析をしても,多くの場合意味がないだろう.ある変数の値によって,グ
ループを分けて分析するには,BY ステートメントを使用する.
PROC ステップに,’BY 変数名’ という文を付けることにより,指定した変数の値ごとにグループ分け
して計算が行われる.では,試しに次のプログラムを実行してみよう (DATA ステップは taikaku2.sas と
同じ).
¶
³
proc means;
by sex;
run;
µ
´
エラーが発生したはずである.BY ステートメントを使用するには,あらかじめその変数に関して並べか
えをしておく必要がある.
3.3.4
PROC SORT
PROC MEANS は,指定された変数の値に基づいて,オブザベーションを並べ変える.次のプログラム
を実行せよ (DATA ステップは taikaku2.sas と同じ).
3.4. 出力のサイズに関するオプション指定
¶
15
³
proc print;
proc sort;
by sex;
proc print;
run;
µ
最初の proc print と 2 番目の proc print の出力を比較せよ.
3.3.5
´
グループ別の処理 (2)
次のプログラムを実行せよ.今度はエラーが起きないはず (DATA ステップは taikaku2.sas と同じ).
¶
³
proc sort;
by sex;
proc means;
by sex;
run;
µ
3.4
¶
´
出力のサイズに関するオプション指定
³
options ls=72 ps=20;
µ
´
という文をプログラムの最初につけると,実行結果出力のページサイズを指定することができる.
この例では,ls=72 は,行の長さ (line size) を 72 桁に,1 ページの行数 (page size) を 20 行にする,
という指定である.結果の見やすさのため,最初に付けておくとよいだろう.以後のプログラムでは,得
にこれらのオプションを明記していない.各自が見やすいように,適宜指定すること.
taikaku1.sas または taikaku2.sas のどちらかの 1 行目に,上記オプション文を付け加えて実行し,出力
形式が変わるのを確認せよ.
17
第 4 章 DATA ステップの進んだ使い方
4.1
割り当て文,条件判断,関数
4.1.1
サンプルプログラム
次のプログラムを入力して実行せよ.データは外部ファイル (taikaku.data: 3.2.4 で作成した.) から読
み込む.
¶
taikaku3.sas
³
data;
infile ’taikaku.data’;
input name $ sex $ height weight;
dif=height-weight;
if dif<105 then warning=’heavy’;
proc print;
run;
µ
´
出力を見ると,ファイルから読み込んだ変数 (name, sex, height, weight) の他に,二つの変数 (dif,
warning) が作成されていることがわかる.これは,
• dif=height-weight;
身長と体重の差の変数 dif を作成している.
• if dif<105 then warning=’heavy’;
dif が 105 未満なら heavy という値 (文字列) を持つ,変数を作成している.
4.1.2
変数の生成
dif=height-weight; や warning=’heavy’; は,割り当てステートメントと呼ばれ,各種計算式を書く
ことによって,既存の変数の値を変更したり,新規に変数を生成することができる.テキストの p.30 3-2-3
や p.32 の図表 3.12 を参照せよ.
4.1.3
条件別の処理
if dif<105 then ...; という式は,条件判断をして,処理を決定している.さらに,
if dif<105 then warning=’heavy’;
else warning=’none’;
とすれば,その他の時には warning には none という値を入力することができる.詳しくは,テキスト
p.37 3-2-6 を参照せよ.
18
第4章
4.2
DATA ステップの進んだ使い方
データの選別
ある条件に当てはまるデータのみを選び出して,分析をしたい場合もある.
¶
selection1.sas
³
data;
infile ’taikaku2.data’;
input sex $ height weight;
if sex=’M’ then output;
proc print;
run;
µ
´
を実行せよ.
サンプルデータファイル taikaku2.data の入手方法は,1.3 を参照すること (以後のサンプルデータにつ
いても同様).
if sex=’M’ then output; は,変数 sex の値が M のオブザベーションのみ,SAS データセットに出
力する,という意味になる.また,delete はそのオブザベーションを削除するという意味であり,
¶
³
selection2.sas
data;
infile ’taikaku2.data’;
input sex $ height weight;
if sex=’M’ then delete;
proc print;
run;
µ
とすると,sex の値が M 以外であるオブザベーションのみが残る.したがって,このデータでは,
if sex=’M’ then output;
と
if sex=’F’ then delete;
は,結果的には同じことになる.
4.3
´
欠損値
欠損値 (何らかの理由でデータが得られていない) は,データファイル中で ’.’ (ピリオド) により指定
する.
4.3.1
欠損値
taikaku3a.data と taikaku3b.data には,数ヶ所に欠損値が含まれている.データファイルを表示して,
それを確認せよ.
¶
³
% cat taikaku3a.data
% cat taikaku3b.data
µ
´
次に,これを SAS で処理するとどのようになるかを確認する.次のプログラムを入力し,実行せよ.
4.4. 複数のデータセットを扱う
¶
19
missing1.sas
³
data;
infile ’taikaku3a.data’;
input sex $ height weight;
diff = height - weight;
proc print;
proc means;
run;
µ
´
proc print の出力において,’.’ を入力したところが欠損値になっていることを確認せよ.また,height
と weight のどちらかが欠損値になっているオブザベーションでは diff の値も欠損値になることを確認せよ.
また,proc means の出力で,N (有効オブザベーション数) がどうなっているかを確認せよ.
4.4
複数のデータセットを扱う
これまでは,一つの SAS プログラムでは一つのデータセットのみを扱って来た.しかし,実際のデータ
分析では,複数のデータセットを連動して扱うことも必要になる.
4.4.1
二つ以上のデータセットを読み込む
¶
twodata1.sas
³
data aclass;
infile ’taikaku3a.data’;
input sex $ height weight;
diff = height - weight;
data bclass;
infile ’taikaku3b.data’;
input sex $ height weight;
diff = height - weight;
proc print;
run;
µ
´
のように,一つの SAS プログラム中に二つ以上の data ステップを記述することができる.ここで,data
aclass; や data bclass; の,aclass, bclass の部分は,SAS データセット と呼ばれる SAS の作業用
ファイルの名前を指定している.ここまでの例では,SAS データセット名を省略していたが,その場合に
は SAS が自動的に名前を付けてくれる.
上記プログラムを実行せよ.proc print; によって bclass の内容が出力されるはずである.proc ステッ
プは,特に指定が無い場合には,最も新しく作成された SAS データセットを対象に処理を行う.
どの SAS データセットを処理の対象にするかを指定するには,data= というオプションを指定する.
20
第4章
¶
DATA ステップの進んだ使い方
³
twodata2.sas
data aclass;
infile ’taikaku3a.data’;
input sex $ height weight;
diff = height - weight;
data bclass;
infile ’taikaku3b.data’;
input sex $ height weight;
diff = height - weight;
proc print data=aclass;
proc print data=bclass;
run;
µ
´
を実行せよ.aclass と bclass の内容が,それぞれの proc print で処理されたはずである.
前節までは,特に SAS データセット名を意識することは無かったはずである.これは,各プログラムで
一つの SAS データセットしか扱っていなかったので,特に処理対象となる SAS データセットを指定しな
くても,直前に読み込まれたデータセットが処理対象となっていたためである.
4.4.2
データセットの結合 (1) – 縦に結合する
taikaku3a.data と taikaku3b.data は,二つのクラスのデータであるとする.これを一括して処理したい
場合にはどうするか.
データファイルを結合する
一つの方法は,taikaku3a.data と taikaku3b.data をまとめた一つのデータファイルを作成しておき,そ
れを読み込むことである.二つ以上のデータファイルを一つにまとめる作業は,mule や SAS のエディタ
を使って可能である.まず,最初のファイルを開き,次にその末尾に結合するファイルを読みこむ.それ
を別のファイル名で保存すればよい.
または,UNIX のコマンドプロンプトから,
¶
% cat taikaku3a.data taikaku3b.data >taikaku3all.data
µ
とすれば,taikaku3all.data に taikaku3a.data と taikaku3b.data を結合したファイルが作成される.
¶
% less taikaku3all.data
µ
として,出来上がったファイルの内容を確認せよ.
³
´
³
´
4.4. 複数のデータセットを扱う
21
SAS データセットを結合する
SAS データセットに読み込んでかから結合すれば,必要に応じてクラス別に処理することもでき,便利
である.これを実行するには,set ステートメントを用いる.
¶
³
set1.sas
data aclass;
infile ’taikaku3a.data’;
input sex $ height weight;
diff = height - weight;
data bclass;
infile ’taikaku3b.data’;
input sex $ height weight;
diff = height - weight;
data allclass;
set aclass bclass;
proc print data=allclass;
run;
µ
´
を実行して,SAS データセット allclass に,二つのクラスのデータが結合されたことを確認せよ.
また,
¶
set2.sas
³
data aclass;
infile ’taikaku3a.data’;
input sex $ height weight;
diff = height - weight;
class=’A’;
data bclass;
infile ’taikaku3b.data’;
input sex $ height weight;
diff = height - weight;
class=’B’;
data allclass;
set aclass bclass;
proc print data=allclass;
run;
µ
´
等とすれば,各オブザベーションがどちらのクラスに属しているかというインデックスになる変数 class を
作ることができる.
22
4.4.3
第4章
DATA ステップの進んだ使い方
データセットを分割する
次に,データを複数のデータセットに分割することを考える.taikaku3a.data の内容を,男女別に boys
と girls という二つの SAS データセットに格納するには,
¶
div1.sas
³
data boys girls;
infile ’taikaku3a.data’;
input sex $ height weight;
if sex=’M’ then output boys;
if sex=’F’ then output girls;
proc print data=girls;
proc print data=boys;
run;
µ
´
とする.以前学習した output ステートメントにおいて,出力する SAS データセットを指定できるという
ことがポイント.
二クラス分のデータを別々のデータファイルから読み込み,それらを合わせて男女別の SAS データセッ
トに格納するには,
¶
³
div2.sas
data aclass;
infile ’taikaku3a.data’;
input sex $ height weight;
class=’A’;
data bclass;
infile ’taikaku3b.data’;
input sex $ height weight;
class=’B’;
data allboys allgirls;
set aclass bclass;
if sex=’M’ then output allboys;
if sex=’F’ then output allgirls;
proc print data=allboys;
proc print data=allgirls;
run;
µ
とすればよい.
4.4.4
データセットの結合 (2) – 横に結合する
次のような二つのデータファイルがあるとする.これは,10 名の生徒の中間試験と期末試験の成績であ
るとする.
´
4.4. 複数のデータセットを扱う
23
seisekia1.data 中間試験
NAME
FUJIO
HAURO
HIROSHI
JUNKO
MIDORI
MINORU
SUMIO
TOHRU
TOYOKO
YAYOI
EIGO1
94
52
59
69
51
85
26
18
91
87
SUGAKU1
78
49
49
72
63
90
71
35
88
91
seisekia2.data 期末試験
KOKUGO1
99
20
20
53
59
77
36
9
79
66
NAME
FUJIO
HAURO
HIROSHI
JUNKO
MIDORI
MINORU
SUMIO
TOHRU
TOYOKO
YAYOI
EIGO2
81
77
28
73
59
86
43
33
68
82
SUGAKU2
72
39
38
77
60
98
66
34
81
87
KOKUGO2
93
80
40
47
48
71
55
55
34
86
これらをまとめて,
NAME
FUJIO
HAURO
HIROSHI
JUNKO
MIDORI
MINORU
SUMIO
TOHRU
TOYOKO
YAYOI
EIGO1
94
52
59
69
51
85
26
18
91
87
SUGAKU1
78
49
49
72
63
90
71
35
88
91
KOKUGO1
99
20
20
53
59
77
36
9
79
66
EIGO2
81
77
28
73
59
86
43
33
68
82
と結合したい.この場合には,merge ステートメントを使用する.
¶
merge1.sas
SUGAKU2
72
39
38
77
60
98
66
34
81
87
KOKUGO2
93
80
40
47
48
71
55
55
34
86
³
data chukan;
infile ’seisekia1.data’;
input name $ eigo1 sugaku1 kokugo1;
data kimatu;
infile ’seisekia2.data’;
input name $ eigo2 sugaku2 kokugo2;
proc sort data=chukan; by name;
proc sort data=kimatu; by name;
data gakki;
merge chukan kimatu;
proc print data=chukan;
proc print data=kimatu;
proc print data=gakki;
run;
µ
´
を入力し,実行せよ.
オブザベーションの順序が異なる場合には,proc sort を使ってあらかじめキーとなる変数 (この例では
name) で sort しておかなければならない ( seisekia1.data と seisekia2.data では,実は同じ順序でオブザ
24
第4章
DATA ステップの進んだ使い方
ベーションが並んでいるため,この例の場合には 2ヶ所の proc sort は無くても動作する).
この例では,同じ 10 人分のデータが両データセットに含まれていたので,このように簡単に結合がで
きた.
次に,seisekib1.data (中間試験) と seisekib2.data (期末試験) を結合することを考える.まず,これら
二つのデータファイルの内容を各自確認せよ.変数の並びは,上記例と同じとする.
¶
³
% less seisekib1.data
% less seisekib2.data
µ
´
これらは,二つのデータファイル間で,オブザベーションの順序が異なっているとともに,異なったオブザ
ベーションが含まれている (seisekib1.data には HIROSHI のデータがなく,sekisekib2.data には JUNKO
のデータがない).これらを結合するには,両データセットに含まれている変数 name をキーとして指定
する.
¶
³
merge2.sas
data chukan;
infile ’seisekib1.data’;
input name $ eigo1 sugaku1 kokugo1;
data kimatu;
infile ’seisekib2.data’;
input name $ eigo2 sugaku2 kokugo2;
proc sort data=chukan; by name;
proc sort data=kimatu; by name;
data gakki;
merge chukan kimatu; by name;
proc print data=chukan;
proc print data=kimatu;
proc print data=gakki;
run;
µ
´
結合後の SAS データファイル gakki では,元のデータセットに含まれていなかったデータは欠損値になっ
ていることを,proc print の出力で確認せよ.
4.5
テキストファイルへのデータ出力
SAS の DATA ステップは, テキストファイルからデータを読み込むか, 作成済みの SAS データセットを
指定し, それに操作を加えて新たな SAS データセットを作成する. 作成されたデータセットは SAS でのみ
利用できるものであり, 他のプログラム (自作したものや PC の Execl など) では利用できない.
DATA ステップでは,SAS データセットの内容をテキストファイルに PUT ステートメントを指定するこ
とにより出力することができる.
つぎの例はテキストファイル’taikaku2.data’ より sex(文字型), height,weight, を入力し,weight
が 60 以上のものをテキストファイル taikaku2.out に出力する例である.
4.5. テキストファイルへのデータ出力
¶
25
taikakuput.sas
data;
infile ’taikaku2.data’;
file
’taikaku2.out’;
# 出力ファイル名の指定
input sex $ height weight;
if weight >= 60 then put sex weight height;
run;
µ
出力の際の書式を制御するための命令もかなり豊富に用意されている.
1. カラムを指定する場合(文字型データは左づめ、数値データは右づめになる)
put sex 1-5 height 6-15
weight 16-25 ;
2. カラムを指定し, さらに小数点以下の桁数を指定する.
put sex 1-5 height 6-15 .1
weight 16-25 .2;
³
´
27
第 5 章 グラフを描く
5.1
グラフを描く PROC の例
5.1.1
gchart
¶
gchart1.sas
³
goptions device=xcolor;
data taikaku2;
infile ’taikaku2.data’;
input sex $ height weight;
dif=height-weight;
proc sort;
by sex;
proc gchart;
vbar height/type=freq;
by sex;
run;
µ
´
を入力,実行せよ.
グラフ用のウインドウが開き,男女別に変数 height のヒストグラムが表示されたはずである.
goptions device=xcolor; は,画面にグラフィックを表示することを指定する命令である.プリンタ
へ印刷する時には,また別の指定をする必要がある (後述).
proc gchart は,各種のグラフを書く.テキスト p.97 からを参照せよ.weight や dif のヒストグ
ラムも書いてみること.
また,テキストを参考に,男女別の height, weight, dif の平均値のグラフを書け.
5.1.2
gplot
¶
gplot1.sas
³
proc gplot;
plot height*weight;
by sex;
µ
´
を実行せよ.data ステップ等は前節と共通とする.身長と体重の散布図が表示される.詳しくは,テキ
スト p.120 からを参照せよ.
つぎに折れ線を複数描く場合の例を示す.
symbol1 などは描画方法を指定している.iterpol は点間の補間方法の指定であり,none は線を引かな
い.join は折れ線による補間,spline はスプライン補間という方法を用いている.value はデータ点の描
画方法であり,none は点上に特に記号を描かない. dot は丸印を,diamond は菱形を描く. line は線
28
第 5 章 グラフを描く
の種類 (1 は実線,2 は破線) を指定する. 詳細は SAS/Graph のマニュアルを参照.
¶
gplot2.sas
³
data taikaku ;
infile ’../data/taikaku.data’;
input name $ sex $ height weight;
w09 = 0.9*weight;
/* w09 は特に意味はないが表示用につくった */
proc sort out=taikaku4;
by height;
proc print ;
run;
/* PostScript
symbol1 color
symbol2 color
symbol3 color
の場合には color=black を指定する.*/
= yellow interpol=none value=dot;
= red interpol=join value=diamond line=1;
= blue interpol=spline value=none line=2;
axis1 label = (’Height’) minor=none;
axis2 label = (angle=-90 rotate=90 ’Weight’) minor=none;
/* angle は文字の書き進む方向、rotate は文字の向き、minor は小目盛り*/
proc gplot data=taikaku4;
plot weight*height= sex / vref=60
frame haxis=axis1 vaxis=axis2 ;
run;
proc gplot data=taikaku4;
plot weight*height=2 w09*height=3 /
href=160
overlay frame haxis=axis1 vaxis=axis2 ;
run;
proc plot data=taikaku4;
plot weight*height=sex ;
run;
µ
5.2
´
テキストしか表示できない端末でグラフを書くには
グラフィックが表示できない端末から SAS を利用している場合,proc gchart のかわりに proc chart,
proc gplot のかわりに proc plot を使用してグラフを書くことができる.この場合には,goptions の
行は必要無い.
上記プログラムを chart, plot を使用するように変更して,どのようなグラフが描かれるかを確認せ
5.3. PS ファイルの出力: 印刷するために
29
よ.グラフ用のウインドウではなく,OUTPUT ウインドウに文字を使ったグラフが表示される.
5.3
PS ファイルの出力: 印刷するために
グラフを画面に表示する場合には,
¶
goptions device=xcolor;
µ
と入力した.プリンタ出力用に PS ファイルを作る場合には,このかわりに,
¶
³
´
³
filename gsasfile ’graph1.ps’;
goptions device=ps gaccess=gsasfile gsfmode=replace;
µ
´
のような 2 行を入力する.’graph1.ps’ の部分が出力するファイル名なので,適切に付けること.慣習と
して PS ファイルには .ps という拡張子を付ける.これを指定した SAS プログラム,例えば,
¶
³
makeps.sas
filename gsasfile ’graph1.ps’;
goptions device=ps gaccess=gsasfile gsfmode=replace;
data taikaku;
infile ’taikaku2.data’;
input sex $ height weight;
proc gplot;
plot height*weight;
run;
µ
を実行すると,graph1.ps ができる.
上の手順は,1 ページ分の図を出力する.図を複数ページ出力するにはつぎのようにする.
´
1. 出力ファイル graph1.ps をあらかじめ rm コマンドで削除しておくか,mv コマンドで別名に変更して
おく.
2. 上の SAS プログラムの goptions の指定のうち, gsfmode を gsfmode=append と変更する.
実際に印刷するには,2.4.3 の説明に従って,
¶
³
% lp -dps2n001 graph1.ps
µ
´
のようにする (-dxxxxxxx の部分には,使用するプリンタ名を適切に指定すること.)
SAS プログラムで指定するのではなく、次のようにグラフ出力のウィンドウの指定によってもプリンタ
での印刷が可能である.
1. グラフが表示されているウインドウで「ファイル (F)」 → 「イメージのエクスポート (R)」を選択
する.
2. 下部の「ファイルタイプ」で「アドビポストスクリプト *.ps」を指定する.(ワープロなどに取り込
む場合は、他の希望のファイルタイプを指定する)
3. ファイル名を指定する.
例えば mychart1.ps など.
4. 「OK」をクリックする.
以上の操作でポストスクリプトファイル mychart1.ps が作成される.
30
第 5 章 グラフを描く
5. 次に、 UNIX のコマンドモードで、
lp -dpz18001
mychart1.ps
のように指定する.(a2ps は使わない).
31
第 6 章 SAS による統計分析
SAS を使って種々の統計手法を実行することは,SAS のプログラムにある程度習熟すれば,それほど難し
いことではない.問題は,
1. 自分が必要としている統計手法を正しく SAS に実行させること
2. SAS の出力を正しく読みとること
である.
1. については,統計手法を正しく理解し,SAS のマニュアル (あるいは解説書) を読んで必要な PROC
や OPTION を選択できることが必要である.
また,SAS で統計解析を行うと,非常にたくさんの出力が得られる.自分に必要な情報はそのうちのほ
んの一部であることも多い.出力を読みとって,必要な情報を選び出すにも,結局のところ統計手法をよ
く理解しておくことが必要となる.
この Chapter では,いつくかの基本的な統計解析手法を実行する方法を解説する.
6.1
6.1.1
1 変量ごとの解析
proc means
proc means は,各種の要約統計量 を計算するプロシジャである.
proc means のデフォルト出力
単に,
¶
³
proc means;
run;
µ
´
とだけ記述すると,対象となっている SAS データセットの中の全ての数値変数について,有効なオブザ
ベーションん数 (N),平均 (Mean),標準偏差 (Std Dev),最小値 (Minimum),最大値 (Maximum) が
出力される.
分析対象とする変数を限定する
計算の対象とする変数を指定するには, var ステートメントを用いる.例えば,
¶
proc means;
var height;
run;
µ
とすれば,変数 height のみについて計算が行われる.
³
´
32
第6章
SAS による統計分析
出力する統計量の指定
デフォルトとは違う統計量を出力する場合には,出力したい統計量を proc means ステートメントのオ
プションで指定する.出力できる統計量を調べるにはマニュアルまたは教科書を参照すること.
例えば,平均,標準偏差,平均値の標準誤差を出力するには,
¶
³
proc means mean std stderr;
run;
µ
とすればよい.
´
統計量の小数点以下の桁数を指定する
maxdec オプションを使用する.
¶
³
proc means maxdec=2;
run;
µ
のように使用する.
´
by ステートメント
これは既に学習したが,ある変数の値ごとにグルーピングして処理することを指定する.使用前に,そ
の変数で sort しておくことを忘れずに.例えば,
¶
³
proc sort;
by sex;
proc means;
by sex;
run;
µ
課題
6.1.2
´
taikaku2.data について,身長の平均値,標準偏差,分散,歪度,尖度を,男女別に求めよ.
中央値
中央値は,基本的な代表値であるが,proc means では求めることができない.中央値を求めるには,
proc univariate を用いる.
6.1.3
グラフを描く
度数分布や,平均値のグラフを描くには proc gchart (または proc chart) ステートメントを用い
ることができる.使い方は 5.1 やテキストを参照すること.
オプションによって,細かくグラフの形式等を指定することができる.テキストを参照すること.しか
し,より詳しい内容を知るには,実習室備え付けのマニュアルを見る必要がある.
棒グラフの表示例を gchart1.sas に示す.
6.2. 2 変量の関係を解析
¶
33
gchart1.sas
³
goptions device=xcolor;
data taikaku2;
infile ’taikaku2.data’;
input sex $ height weight;
dif=height-weight;
proc sort;
by sex;
proc gchart;
vbar height/type=freq ;
by sex;
run;
µ
Gchart プロシジャの vbar ステートメントのオプションは次のような意味を持っている.
´
1. type=freq の代わりに type=percent と指定すると、比率をパーセントで表示する。
2. space=0 と指定すると、棒と棒の表示間隔をゼロにする。
3. midpoints= 開始 to 終了 by 増分 と指定すると、各棒の中央の値を指定することができる。個別
に、midpoints= 値 1 値 2 値 3 ... 値 k と指定することも可能。複数のヒストグラムを比較す
る場合には、midpoints が同じになるように設定するのが望ましい。上のデータで、midpoints=
140 to 190 by 5 と指定してみなさい。
課題
6.2
6.2.1
taikaku2.data について,身長と体重のヒストグラムを男女別に出力せよ.
2 変量の関係を解析
2 変量のプロット
2 変量の関係を散布図で見るには,proc gplot (または proc plot) ステートメントを利用する.使
い方は 5.1 を参照すること.
課題
6.2.2
taikaku2.data について,身長と体重の相関図 (散布図) を男女別に出力せよ.
相関係数
相関係数を計算するには,proc corr ステートメントを用いる.
¶
³
proc corr;
run;
µ
´
とすると,分析対象となっている SAS データセットの中の全ての数値変数間の全ての組合せ対について
相関係数を出力する.
34
第6章
SAS による統計分析
変数の指定
var ステートメントによって,分析対象とする変数を指定できる.変数 height と weight の間の相関
係数だけを求めるには,
¶
³
proc corr;
var height weight;
run;
µ
´
とすればよい.当然のことだが,最低 2 個以上の変数を指定しなければならない.
相関係数の種類
デフォルトでは,ピアソンの積率相関係数が出力される.オプションによって,
pearson
spearman
kendall
ピアソンの積率相関係数
スピアマンの順位相関係数
ケンドールの順位相関係数
が計算できる.例として,ピアソンの積率相関係数とケンドールの順位相関係数を求めるには,
¶
³
proc corr pearson kendall;
run;
µ
´
taikaku2.data について,身長と体重,身長と体重の差,の 3 変数間の相関係数を,男女別に出
力せよ.
課題
6.3
6.3.1
t 検定
対応の無い場合
taikaku2.data について,男子と女子とで身長に差があるかどうかを検定してみよう (差があって当然
と思われるが,これは統計解析の練習だということでお許し願いたい).なお,t 検定は,分布が正規分布
にしたがっていることを前提としている.
プログラムの実行
対応の無い 2 群間の t 検定を実行するには,proc ttest を用いる.次のプログラムを実行してみよう.
¶
³
ttest1.sas
data taikaku;
infile ’taikaku2.data’;
input sex $ height weight;
proc ttest data=taikaku;
class sex;
var height;
run;
µ
´
6.3. t 検定
35
proc ttest では,class ステートメントで群をあらわす分類変数を指定する (この場合は sex).ま
た,var ステートメントで検定する変数を指定する.
実行結果
実行結果は,
¶
³
ttest1.lst
TTEST PROCEDURE
Variable: HEIGHT
SEX
N
Mean
Std Dev
Std Error
Minimum
Maximum
---------------------------------------------------------------------------F
30 158.3466667
5.08260952
0.92795330 148.8000000 170.0000000
M
30 174.8833333
5.20729484
0.95071762 166.5000000 185.8000000
Variances
T
DF
Prob>|T|
--------------------------------------Unequal
-12.4474
58.0
0.0001
Equal
-12.4474
58.0
0.0000
For H0: Variances are equal, F’ = 1.05
DF = (29,29)
Prob>F’ = 0.8971
µ
´
となる.
上段に,男女別の有効データ数 (N),平均 (Mean),標準偏差 (Std Dev),平均値の標準誤差 (Std Error),
最小値 (Minimum),最大値 (Maximum) が出力されている.
下段には,2 群の分散が等しい/等しく無い場合にそれぞれ用いる,t 検定の結果が出力されている.t
統計量 (T),自由度 (DF),p 値 (Prob>|T|) となっている.
2 群の分散が等しいと考えてよいかどうかは,最終行に情報が出力されている.これは,2 群の等分散性
に関する F 検定の結果が利用できる.ここでは p 値が 0.8971 となっているので,2 群の分散は等し
いと考えてよいだろう.
更に詳しい解説は,テキストの p.142 からを参照すること.
体重についても,男女間に差があるかどうかを t 検定してみよ.
var ステートメントに変数 weight を指定すればよい.なお,var ステートメントには一度に複数の
変数を指定することもできるので,var height weight; と指定すれば一度に身長と体重の 2 変数につ
いて分析することもできる.
課題
6.3.2
対応のある場合
ある特殊な教授方法の有効性を試す実験を実施したとしよう.教授の前後に,英語,数学,国語の試験
を実施し,前後の成績を比較することによって教授法の有効性を確認したい.
この場合,同一の生徒が 2 度のテストを両方とも受験しているので,対応のある t 検定を行う.
サンプルデータ
サンプルデータファイルとして,pretest.data と posttest.data を使用する.pretest.data が事
前テストの英語・数学・国語成績,posttest.data が事後テストの同教科の成績とする.
36
第6章
SAS による統計分析
分析方針とプログラム
まず,事前テストと事後テストの英語の得点を比較してみよう.これは,2 回の英語試験得点の差の平
均値が 0 かどうかの検定を実行することに相当する.これには,proc univariate を使用する.
注意) この場合,2 つのテストの難しさに差が無いこと,テストの繰り返しの影響が無いこと,など両
テストが非常に注意深く作られている必要がある.というような条件は実際にはかなり実現困難なもので
あり,このような実験計画はお勧めできない.分析の練習課題ということでお許し願いたい.
プログラムは次のようになる.
¶
ttest2.sas
³
data pre;
infile ’pretest.data’;
input name $ eigo1 sugaku1 kokugo1;
data post;
infile ’posttest.data’;
input name $ eigo2 sugaku2 kokugo2;
data all;
merge pre post;
eigod = eigo2 - eigo1;
proc univariate data=all;
var eigod;
run;
µ
´
6.3. t 検定
37
実行結果
実行結果は,
¶
³
ttest2.lst
Variable=EIGOD
Moments
N
Mean
Std Dev
Skewness
USS
CV
T:Mean=0
Num ^= 0
M(Sign)
Sgn Rank
10
0.2
17.96169
0.432563
2904
8980.844
0.035211
10
-1
-1.5
Sum Wgts
Sum
Variance
Kurtosis
CSS
Std Mean
Pr>|T|
Num > 0
Pr>=|M|
Pr>=|S|
10
2
322.6222
-0.67701
2903.6
5.679984
0.9727
4
0.7539
0.9219
Quantiles(Def=5)
100%
75%
50%
25%
0%
Max
Q3
Med
Q1
Min
Range
Q3-Q1
Mode
31
13
-2.5
-15
-25
99%
95%
90%
10%
5%
1%
31
31
27
-21
-25
-25
56
28
-25
Extremes
Lowest
-25(
-17(
-15(
-8(
-4(
Obs
2)
7)
8)
5)
4)
Highest
-1(
5(
13(
23(
31(
Obs
6)
10)
1)
9)
3)
µ
´
となる.
N は有効データ数,Mean は 2 つのテスト得点間の差の平均値である.T:Mean=0 が,この平均が 0 か
どうかを調べるための t 値である.また,p 値は Pr>|T| に出力されている.p = 0.9727 であるので,
ここでは 2 つのテスト間に有意な差は無いということができる.
その他の解説は,テキストの p.146 以後を参照すること.
数学,英語についても 2 つのテスト間に差があるかどうかを検定せよ.proc ttest の時と同様に,
var ステートメントに複数の変数を一度に指定することができる.
課題
38
6.4
第6章
SAS による統計分析
回帰分析
taikaku2.data のデータについて,回帰分析を実行してみよう.回帰モデルは,
(体重) = α + β(身長) + (誤差)
とする.
6.4.1
プログラムの実行
男女を込みにして分析すると,おかしな結果が得られることになるので,ここではまず女子のデータの
みを分析する.
次のプログラムを実行してみよう.
¶
reg1.sas
³
data taikaku;
infile ’taikaku2.data’;
input sex $ height weight;
if sex = ’F’ then output;
proc reg data=taikaku;
model weight=height/p;
proc gplot data=taikaku;
plot weight*height/regeqn;
symbol v=* i=rl;
run;
µ
´
proc reg が回帰分析を実行する proc である.model weight=height/p; の p オプションを付けると,
ケースごとに従属変数の値,モデルからの予測値,残差が出力される.プロシジャgplot の symbol ステー
トメントで v は表示記号の指定 (*は雌印)、i は描画する点の補間方法の指定を表す。
proc gplot では,plot ステートメントに regeqn オプションを付けることによって,回帰直線を描
くことができる.ただし,symbol ステートメントを指定しないとうまく出力されない.
6.4. 回帰分析
6.4.2
39
proc reg の出力結果
proc reg の結果は次のようになる.
¶
³
reg1.lst
Model: MODEL1
Dependent Variable: WEIGHT
Analysis of Variance
Source
Prob>F
DF
Sum of
Squares
Mean
Square
F Value
Model
0.0001
Error
C Total
1
74.35101
74.35101
31.043
28
29
67.06266
141.41367
2.39509
Root MSE
Dep Mean
C.V.
1.54761
50.34333
3.07411
R-square
Adj R-sq
0.5258
0.5088
Parameter Estimates
Variable
DF
Parameter
Estimate
Standard
Error
T for H0:
Parameter=0
Prob > |T|
INTERCEP
HEIGHT
1
1
0.458720
0.315034
8.95778641
0.05654258
0.051
5.572
0.9595
0.0001
Obs
Dep Var
WEIGHT
Predict
Value
Residual
1
2
3
47.6000
50.2000
48.5000
47.3358
50.7382
51.0532
0.2642
-0.5382
-2.5532
(途中省略)
29
30
50.8000
53.5000
Sum of Residuals
Sum of Squared Residuals
Predicted Resid SS (Press)
51.3997
54.0145
-0.5997
-0.5145
0
67.0627
74.8752
µ
´
中段の Parameter Estimate の行が,回帰式のパラメータの推定値である.推定された回帰式は,
(体重) = 0.459 + 0.315(身長)
となる.
下段は,ケースごとの従属変数の値,モデルからの予測値,残差の値である.
その他に,パラメータが 0 かどうかの検定の結果なども出力されているが,これらの解説は省略する.
回帰分析をよく理解していれば,自ずと理解できるであろう (それがだめでも,マニュアルを読めば理解
できるであろう).
40
6.4.3
第6章
SAS による統計分析
proc gplot の出力結果
各ケースのプロットと,回帰直線が描かれたグラフが表示されたはずである.また,グラフの下に推定
された回帰式が記入されている.
6.4.4
重回帰
proc reg によって,重回帰分析も実行可能である.使い方は省略する.必要ならテキストやマニュア
ルを参照すること.
課題
1. 男子のデータについても,同様な回帰モデルに基づく分析を実行してみよ
2. 上記例は,身長から体重を予測するというモデルであった.逆に体重から身長を予測する回帰モデル
をたて,それを実行してみよう.また,身長から体重を予測するモデルと,体重から身長を予測する
モデルでは,それぞれどんな意味があるだろうか? 考えてみよう
41
第 7 章 データ解析演習 (1) – 調査/テストデー
タの処理 –
7.1
サンプルデータ
本 Chapter では,サンプルデータファイルとして,chosa1.data, chosa2.data, chosa3.data を使
用する.データは人工的に作成した仮想例である.
300 人の被験者に対して,二つの心理特性 A, B を測定する質問紙調査を実施した.特性 A を測定す
る質問として 20 項目を,特性 B を測定する質問として 25 項目を使用した.質問項目はすべて 1 ∼
5 までの 5 段階評定である.他に,性別が記録されている.
データファイルには,各オブザベーション (被験者) ごとに,被験者番号,性別,特性 A を測定するた
めの 20 項目への回答,特性 B を測定するための 25 項目への回答,の順に記録されている.
3 個のデータファイルの内容はほぼ同じである.chosa1.data と chosa2.data は,データの記述形
式が違うだけである.chosa3.data は chosa2.data と同じ形式で入力されているが,一部にミスが混
入している.
7.2
データを読み込む
今回のサンプルデータファイルを読み込むには,これまでに使用していない DATA ステップの用法が必
要である.
7.2.1
chosa1.data を読み込む–1 オブザベーションのデータが複数行にわたる場合
まず,chosa1.data を読み込もう.最初に,chosa1.data がどのように記述されているかを確認せよ.
less コマンドが使用できる.
1 オブザベーションが 2 行にわたって記録されている.1 行目には,被験者番号/性別/特性 A 測定
項目が,2 行目には特性 B 測定項目が記録されている.これを読み込むには,
¶
³
data chosa1;
infile ’chosa1.data’;
input id sex $ a1-a20 / b1-b25;
µ
´
とすればよい.
ここで,a1-a20 という記法は,a1, a2, ..., a20 という番号のついた変数並びの省略記法である.
b1-b25 も同様である.
また,/ は,ここでデータが改行していることを指定する記法である.
proc print を付加して実行し,正しくデータが読み込まれることを確認せよ.
42
第 7 章 データ解析演習 (1) – 調査/テストデータの処理 –
7.2.2
chosa2.data を読み込む –フォーマット入力
次に chosa2.data を読み込む.less コマンドを使用して chosa2.data の内容を確認せよ.
このファイルは,各オブザベーションが 1 行に記録されているが,特性 A 測定項目 20 項目と,特性
B 測定項目 25 項目が,それぞれ空白で区切らずに続けて記録されている.(これまで使用したデータは
全て変数間が空白文字で区切られていた.)
このようなデータファイルを読み込むには,フォーマット入力 を使用する.
¶
³
data chosa2;
infile ’chosa2.data’;
input id 3. +1 sex $1. +1 (a1-a20) (20*1.) +1 (b1-b25) (25*1.);
µ
´
id 3. は,変数 id を 3 桁で読み込むという指定である.尚,ここでは全ての数値データが整数であ
るが,例えば id 3.2 等と指定すれば 3 桁の内 2 桁は小数点以下として読み込まれる.
+1 は,次の 1 桁を読み飛ばす指定である (ここには空白文字が入っている).
sex $1. は,変数 sex に文字列型で 1 桁を読み込む.
(a1-a20) (20*1.) は,変数 a1 ∼ a20 に,1 桁ずつ 20 個を読み込む,という指定である.
再び,proc print を付けて実行し,データが正しく読み込まれることを確認せよ.
他に,カラム入力 と呼ばれる読み込み方法もある.カラム入力および フォーマット入力 についての詳
細は,テキストの第 4 章を参照すること.
7.3
頻度の集計
7.3.1
proc freq
データが読み込めたので,まず最初に変数ごとの度数分布表を作ってみよう.この目的には,既習の proc
chart や proc gchart を使って度数分布グラフを作ることもできるが,ここでは proc freq を使って
表のみを作成する.
¶
³
freq.sas
data chosa2;
infile ’chosa2.data’;
input id 3. +1 sex $1. +1 (a1-a20) (20*1.) +1 (b1-b25) (25*1.);
proc freq data=chosa2;
tables sex a1-a20 b1-b25;
run;
µ
´
を実行せよ.または,chosa1.data からデータを読み込んでもよい (どちらでも結果は同じになるはずで
ある).
変数ごとのデータ分布が確認できたはずである.
7.3.2
データの誤りの発見
次に,同様の分析を chosa3.data のデータに対して実行せよ.chosa3.data には,前述のようにデー
タに誤りが混入している.ここでは,a1-a20 と b1-b25 は 1 ∼ 5 の範囲の値しかとらないはずである
が,0 や 6 以上の値が含まれている (どこに含まれているかは各自発見すること.一ヶ所ではない).こ
うした単純なデータ入力のミスは,集計表を作成することによって発見できる.
7.4. 変数の和を計算する
43
もちろん,この方法では,正しい値の範囲内での間違いは発見できない.多くの場合,データの入力は
人手によることになるが,ミスを残さないように,入力後のデータ確認を十分おこなうこと.できること
なら 2 回同じデータを入力して (できれば違う人が入力することがより望ましい),それらに違いが無い
かチェックするのがよい.
二つのテキストファイルの違いを発見するには,UNIX の diff コマンド等が使用できる.使い方は
UNIX のオンラインマニュアルか,解説書等を参照すること.
7.4
変数の和を計算する
特性 A,特性 B の測定にはそれぞれ 20, 25 項目を使用しているが,それぞれ特性 A 測定 20 項目
の和,特性 B 測定 25 項目の和,を測定値として使用したいとしよう.
この場合,
¶
³
data chosa2;
infile ’chosa2.data’;
input id 3. +1 sex $1. +1 (a1-a20) (20*1.) +1 (b1-b25) (25*1.);
ascale = a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13+a14+a15+
a16+a17+a18+a19+a20;
bscale = b1+b2+b3+b4+b5+b6+b7+b8+b9+b10+b11+b12+b13+b14+b15+
b16+b17+b18+b19+b20+b21+b22+b23+b24+b25;
µ
のようにして,変数 ascale と bscale にそれぞれの和を計算することができる.
しかし,変数の数が多いとこれは面倒なので,もっとスマートにこれを実行するには,
¶
´
³
data chosa2;
infile ’chosa2.data’;
input id 3. +1 sex $1. +1 (a1-a20) (20*1.) +1 (b1-b25) (25*1.);
ascale = sum(of a1-a20);
bscale = sum(of b1-b25);
µ
のように,関数 sum を使用する.
7.5
7.5.1
´
統計解析の演習
変数ごとの分析
変数 ascale と bscale について,男女別に,有効データ数,平均値,標準偏差,最大値,最小値等
を算出せよ.また,ヒストグラムを描け.
これらの変数の平均値に,男女間で差があるかどうかを検定せよ.
7.5.2
2 変数の関係
変数 ascale と bscale の間の相関係数を,男女別,および男女を込にして計算せよ.
また,これら 2 変数間のプロットを作成せよ.男女が別々のシンボルでプロットされるようにすること.
方法は,テキストの p.122 あたりを見ること.
44
第 7 章 データ解析演習 (1) – 調査/テストデータの処理 –
男女別の相関係数と男女込の相関係数を比較せよ.プロットおよび男女間の変数の平均値の差等から,そ
の違いの原因を考察せよ.
7.6
Cronbach の α 係数を計算する
ここでの ascale や bscale のように,複数の変数の和として測定尺度を定義した場合には,尺度の
信頼性係数の推定値として Cronbach の α 係数を計算することができる.信頼性係数や α 係数の意味
については本資料では解説しないので必要な人は各自学習すること.
特性 A と B についての α 係数を計算するには,
¶
³
proc corr data=chosa2 alpha;
var a1-a20;
proc corr data=chosa2 alpha;
var b1-b25;
run;
µ
´
とする.data ステップはこれまでと同じなので各自追加すること.
さまざまな出力が得られるが,α 係数は,A については 0.625773 と,B については 0.753724 と,
計算結果が得られた.尚,この結果の次の行の ’for STANDARDIZED variables’ というのは,項目を足
し合わせる前に各項目を標準化 (平均 0 分散 1 に変換) した場合の結果である.
7.7
更に必要なこと...
実際に,質問紙調査やテストデータを解析する場合にはさらにさまざまな分析を行う必要が出るであろ
う.例えば,主成分分析や因子分析,重回帰分析などの多変量解析も必要になることが多い.
どのような分析が必要かは,研究の対象分野やそれぞれの研究目的によって決まるものである.また,
その解析手法を使いこなせるかは,コンピュータや SAS の使い方の問題ではなく,統計学の理解の問題で
ある.
さまざまな分析手法を SAS で実行するには,解説書やマニュアルを見る必要があるが,それが理解で
きない時は,SAS が理解できないのではなくて,使いたい統計手法が理解できていないために SAS の使用
法についての解説が理解できないことが多い.
45
第 8 章 データ解析演習 (2) – 実験データの処理
–
8.1
サンプルデータ
今回のデータも,仮想データである.そのため,実験条件や変数にあえて名前はつけない.データは,サ
ンプルファイル 1youin.data と 2youin.data にある.
8.1.1
1youin.data の内容
1 要因 (被験者間要因),2 水準の実験データである.
300 オブザベーションに対して,3 変数が記録されている.
1. 実験条件.文字列変数で,A1 または A2
2. 変数 1
3. 変数 2
二つの実験条件間で,変数 1 に差があるか,また変数 2 に差があるかどうかを調べたいとする.
8.1.2
2youin.data の内容
2 要因 (どちらも被験者間要因) で,最初の要因が 3 水準,2 番目の要因が 2 水準の実験データである.
300 オブザベーションに対して,3 変数が記録されている.
1. 実験条件 1.文字列変数で,A1, A2 または A3.
2. 実験条件 2.文字列変数で,B1 または B2.
3. 変数 1
4. 変数 2
二つの実験条件によって,変数 1 に影響があるか,また変数 2 に影響があるかどうかを調べたいとする.
8.2
8.2.1
変数変換
平均値の差の検定
1youin.data を読み込み,A1 と A2 グループ間で平均値に差があるかを比較しよう.proc gchart を
使って,2 群の平均値のグラフを信頼区間付きで描いてみよう.また,2 群の平均値に差があるかどうかを
t 検定してみよう.
46
第 8 章 データ解析演習 (2) – 実験データの処理 –
その結果,変数 1,変数 2 どちらとも,A1, A2 間で平均値に有意な差があるという結果が得られたは
ずである.しかし更に良く見ると,変数 1 については 2 群の分散の差は有意で無いが,変数 2 については
2 群間で分散に差があるという結果になっている.
実は,このデータは,何も考えずに安易に t 検定をしてはいけないデータだったのである.
8.2.2
分布の形の確認
グループ A1, A2 それぞれについて,変数 1 と変数 2 のヒストグラムを描いてみよう.
変数 1 についてはほぼ左右対象な,正規分布に似た分布をしている.しかし,変数 2 についてはかなり
歪んだ分布をしているはずである.
更に,箱ヒゲ図 (boxplot) を使って,2 群の分布を比べてみよう.箱ヒゲ図のかき方の解説は,テキ
ストの p.115 あたりにある.proc univariate か,あるいは proc gplot のどちらかを使って描くこ
とができる.実験条件 (グループが) A という文字列変数に,変数 1, 2 が var1, var2 という変数に,
適切に読み込まれているとすれば,
¶
³
proc gplot;
plot var1*a;
symbol1 i=box;
run;
µ
´
で,var1 に関する箱ヒゲ図を描くことができる.同様に,var2 についても処理せよ.
この結果をみると,変数 2 については,かなり歪んだ分布形をしており,しかも 2 群間で散らばり (分
散) が異なっていることがわかる.これは,t 検定の前提である「分散の等質性」と「分布の正規性」を
満たしていないということである.
proc means か proc univariate を使って変数 1, 2 の歪度や尖度を算出してみよ.変数 2 について
は歪度,尖度ともかなり正規分布からのずれを示す数値となっている.
8.2.3
変数変換の例:対数変換
上記のような場合,変数変換を行うことによって,分析手法の前提条件を満たすことができる場合があ
る.上記の変数 2 については,変数を対数変換すればよい.ただし,どのような変数変換が可能かは状況
によって異なる.研究や分析の目的から変数変換をすべきでない場合もある.そのような場合には,ノン
パラメトリック検定を利用する等を考慮すべきである.
さて,変数 2 に対数変換をするには,SAS では,
¶
³
data data1;
infile ’1youin.data’;
input a $ var1 var2;
var2l = log(var2);
µ
のように,data ステップで関数 log を使えばよい.
変換した後の変数について,上記と同様に分布形を確認し,また t 検定をしてみよう.
´
実は,変数 2 を対数変換したものについての t 検定の結果は,変数 1 の t 検定の結果とまったく同じになるはずで
ある.これは,人工的にそうなるようにデータを生成したためであり,他意はない.
8.3. 要因ごとの平均値をプロットする
8.3
47
要因ごとの平均値をプロットする
上記例のように,1 要因の実験の場合には,平均値をグラフ化するのは proc gchart による棒グラフ
で十分であろう (これは分析結果を眺めるために,という意味であり,美しくグラフを作成して論文には
ろうというには他にもいろいろと考えなければいけないが).しかし,2 要因以上の実験結果をグラフ化す
るためには,さらにわかりやすいグラフ表示が求められる.
ここでは,proc gplot を使って折れ線グラフで 2 要因実験の平均値を示してみよう.
8.3.1
proc summary
proc gchart には,変数の平均値を計算してそれをグラフ化する機能があった (上でやったこと).し
かし,proc gplot にはそのような機能はない.そこで何らかの方法でまずグループ別に平均値を計算し,
それを SAS データセットに書き出す必要がある.これには,proc summary を用いる.
2youin.data を例に解説する.
¶
summary.sas
³
data data1;
infile ’2youin.data’;
input a $ b $ var1 var2;
proc sort;
by a b;
proc summary data=data1 nway;
class a b;
var var1 var2;
output out=data2 mean=mean1 mean2;
proc print data2;
run;
µ
´
を実行してみよう.SAS データセット data2 に,mean1 および mean2 という変数名で,a b の組合せ
毎に平均値が出力されているのが確認できる.
proc summary は proc means と機能は似ているが,その出力を SAS データセットに書き出す.
この目的には,nway オプションは必ずつけよう.付けないとどうなるかは各自実行して確認してみよ
(あるいはマニュアルを調べてもよい).
class ステートメントは,分割するグループを示す変数を指定する.
output ステートメントは出力を指定し,out= オプションは出力先の SAS データセット名をしていす
る.mean=mean1 mean2 はvar ステートメントで指定した var1 と var2 の平均値を mean1,mean2 と
いう変数名で出力することを指定している.
8.3.2
プロット
proc gplot を使って折れ線グラフを描くには,
48
第 8 章 データ解析演習 (2) – 実験データの処理 –
¶
³
proc gplot;
plot mean1*a=b;
symbol v=x i=join l=1;
run;
µ
´
のようにすればよい.symbol ステートメントの,i=join がプロットを線でつなぐ指定である.l=1 は
線種を指定している.1 は実線であり,2 以上を指定するとさまざまな破線が使われる.変数 mean2 に
ついても同様に描け.
8.3.3
2youin.data の分析について更に...
これのグループ間での平均値を比較するには,分散分析を行う必要がある.ここではその方法は扱わな
い.分散分析を SAS で実行するには,proc anova や proc glm を使用する.
var2 は,1youin.data の変数 2 と同様に歪んだ分布形をしており,正規分布を仮定した分析を行うに
は対数変換をするのが望ましい.
49
付 録A
A.1
情報メディア教育研究総合センターの
利用
センターのコンピュータ
※重要な注意
うまく動かなくなったからと言って電源を切ってはいけない. 教官, よく分かっている人等に相談する
こと.
A.1.1
利用できるコンピュータ
1. パソコン (日立 FLORA,Windows98)
センターおよび学部端末室にあり, 利用できる. 実習では使わないが, ワープロや表計算ソフトを
始め, 各種アプリケーションや言語が使用できるので, 各自調べて利用してよい.
2. ホストコンピュータ (UNIX)
ap.ec.hokudai.ac.jp
端末パソコンまたは, その他のネットワークにつながったコンピュータから利用する.
ap1,ap2,ap3 のいずれかにつながる.)
(実際には
3. SAS 利用のためのセンターのホストコンピュータ (UNIX)
sas.ec.hokudai.ac.jp
端末パソコンまたは, その他のネットワークにつながったコンピュータから利用する.(実際には ap1
につながる.)
4. Splus 利用のためのセンターのホストコンピュータ (UNIX)
splus.ec.hokudai.ac.jp
端末パソコンまたは, その他のネットワークにつながったコンピュータから利用する.(実際には ap2
または ap3 につながる.)
A.1.2
コンピュータの起動
1. 電源 (本体右下) を入れる.
2. 初期画面が表示されたら, ユーザ ID とパスワード, コース名を入力し, リターンキーを押す (また
は開始ボタンをクリックする).
コース名:l-0002 (行動科学演習 I のコース ID.アルファベットは必ず小文字で入力すること.)
3. 「∼さん、こんちちは」と出るのでリターンキーを押すか,OK をクリック.
50
A.1.3
付 録A
情報メディア教育研究総合センターの利用
コンピュータの終了
1. 画面左下のスタート をクリックしてメニューを開く
2. Windows の終了 をクリック
3. 原則として PC の電源は切らない
A.1.4
UNIX ホストコンピュータへの接続
接続
1. 画面左側のアイコンから UNIX コンピュータ (情報メディア教育研究総合センター) を選択する.
2. login に対してユーザ ID を入力してリターンキーを押す
3. password に対してパスワードを入力してリターンキーを押す (これでホストコンピュータに接続
される). ユーザ ID かパスワードが間違っていた場合にはもう一度入力画面になるので, 入れ直す.
終了
1. コマンドプロンプト (%) に対して,exit または logout と入力して, ホストコンピュータへの接
続を切る.
A.1.5
パスワードの管理
パスワードは, 本人を確認する唯一の手段なので, 他人に知られないよう慎重に管理すること. 名前その
ままや, 誕生日, 学生番号等, 容易に想像が出来るものを使わない, 定期的に変更する, 等の管理を各自で
気をつける.
1. passwd と入力する
2. 現在のパスワードの入力を求められるので, 入力する (画面には表示されない)
3. 新しいパスワード入力を求められるので, 入力する
4. 新しいパスワードをもう一度入力するよう求められるので, 同じものを入力する
A.2
他のコンピュータとのデータ交換
他のコンピュータに入っているデータファイルを,情報メディアセンターで使う方法,および分析結果
等を他のコンピュータへ移動する方法を概説する.
A.2.1
フロッピーディスクによるデータ交換
情報メディアセンターの端末パソコン (Windows98 が走っている) には,3.5 インチ 2HD (1.44MB) の
フロッピーディスクドライブが付いているので,これを使ってデータのやりとりができる.
しかし,Windows98 上でコピーしただけでは SAS 等の UNIX 上のプログラムから使うことはできな
い.そこで,UNIX ホストコンピュータへネットワーク経由で転送する必要がある.これには,winftp と
いうプログラム (スタートメニューからみつけられるはず) を使用する.
A.2. 他のコンピュータとのデータ交換
A.2.2
51
ネットワークを経由したデータ交換
各自の所属する研究室のコンピュータから,ネットワークを通じてデータ交換ができる.これには,ftp
というプロトコルを使う.相手が UNIX の一種であれば,ftp というコマンドがあるはずである.Windows
系ならば winftp 等 (上記で使ったもの),Mac ならば fetch 等のプログラムが使えるはずである.正
確なプログラム名は各研究室で尋ねること.
A.2.3
ファイル形式に関する注意
テキストデータ
データファイルや,分析結果等のテキストデータは,ftp で転送する際に ascii モードで転送するこ
と.さまざまな OS 間で異なる改行コードを合わせてくれる.
また,日本語を含むテキストを転送する場合は,日本語コードにも注意すること.情報メディアセンター
の UNIX コンピュータは SJIS コードを使用している.大抵のパソコンは SJIS コードを使用している
ので心配ないが,UNIX 系の OS では EUC コードを使用しているものが多い.他に JIS コードと呼ばれ
るコードもよく使われる.
グラフィックデータ
PostScript ファイルを転送する場合,やはり ascii モードで転送した方がよいであろう.
その他のグラフィック形式は,本講義では扱わない.しかし,大抵の場合 binary モードで転送すべき
である.
53
付 録B
UNIX 環境の利用
基本的に,UNIX はコマンドライン・インターフェイス (コマンド等をキーボードから文字で入力して使う)
である. また, コマンド (プログラム) を中心に操作する. コマンドプロンプト (%) に続けて文字を入力
する.
B.1
ディレクトリとファイル
ディレクトリとは,例えて言えば複数のファイルをまとめて納めておく箱のようなものである.Windows98
や Macintosh のフォルダに相当する.
本節では,ファイルやディレクトリの操作に関するいくつかの基本的なコマンドを解説する.次節以降
で,これらいくつかについては,具体的な使い方を改めて説明する.
B.1.1
カレントディレクトリ
現在作業をしているディレクトリ.
¶
³
% pwd
µ
で確認できる.pwd は print working directory の略.
´
B.1.2
ディレクトリの移動
cd コマンド (change directory) で移動する.
¶
% cd 移動先名
µ
と使う. 例えば,
¶
% cd www
µ
等としてみよ.
B.1.3
³
´
³
´
ホームディレクトリ
各自が Login した時にいるディレクトリ.
¶
³
% cd
µ
で移動できる.
´
54
B.1.4
付 録B
ファイルとディレクトリのリスト
ls (list の略) コマンドを使う.
¶
% ls
µ
としてみよ. また,
¶
% ls -l
µ
で詳しいリストを表示.
B.1.5
³
´
³
´
ディレクトリの作成と削除
ディレクトリを作るには,
¶
% mkdir ディレクトリ名
µ
とする. ディレクトリを削除するには,
¶
% rmdir ディレクトリ名
µ
とする. ただし, 中にファイルが入っていると削除できない.
B.1.6
UNIX 環境の利用
³
´
³
´
ファイル内容の表示
cat コマンドを使って,
¶
³
% cat ファイル名
µ
とする.
´
B.1.7
ファイルの削除
rm (remove) コマンドを使う.
¶
³
% rm ファイル名
µ
B.1.8
´
ファイル名やディレクトリ名の変更
mv (move) コマンドを使用.
¶
³
% mv 変更前ファイル名 変更後ファイル名
µ
´
B.2. エディタ mule を使おう
B.2
55
エディタ mule を使おう
mule は,UNIX 上の高機能なエディタ (文書ファイルを作成,編集するプログラム) である.また,mule
の中から各種ネットワーク上のサービスを利用すること等もできる.そのため,UNIX を利用するには,早
めに習熟しておくと便利である.
B.2.1
mule 起動とチュートリアルの実行
• まず,
¶
³
% mule
µ
´
で,新しいウインドーが開き mule が立ち上がる.
¤
¡ ¤ ¡
• £Ctrl+H ¢ £T ¢ (T は必ず大文字で入力すること) と入力し,言語を聞いてくるので Japanese と入
力する.
• チュートリアルが始まるので,それにしたがって練習する.
B.3
ファイルを整理する
SAS 実習用の UNIX コンピュータに login して,各自のホームディレクトリ (login した時にいるディ
レクトリ) をみると,たくさんのファイルができていることであろう.どのファイルに何が入っているの
かわからなくなる日も近いかもしれない.
ここでは,まずファイルを整理するためのテクニックを紹介する.
B.3.1
ファイル名に規則を付ける
これまでの実習で使ってきたファイルには,データファイルであれば filename.data とうように .data
を必ず最後につけた.また,SAS プログラムであれば .sas を付け,分析結果を保存するファイルには
.lst を付けるように指導してきた.このように,ファイル名の付け方に一定の規則をもうけておけば,後
で見て,それぞれのファイルの内容がわかりやすい.
今,.data, .sas, .lst のそれぞれで終るファイル名のファイルだけをリストするには,ぞれぞれ,
¶
³
% ls *.data
% ls *.sas
% ls *.lst
µ
´
とすればよい.* はワイルドカードと呼ばれる.この場合,* はそこに任意の文字列の入ったファイル名
に一致する.
B.3.2
ディレクトリに分類する
ディレクトリは,ファイルを入れるための容器のようなものと考えればよい.また,階層的にディレク
トリの中にディレクトリを作ることができる.これは,容器の中にさらに細かい分類のために小容器をい
くつか入れる,その小容器の中にさらに細かい分類のための容器を入れて...
よう.
といったイメージで考え
56
付 録B
UNIX 環境の利用
UNIX に login すると,最初は各ユーザのホームディレクトリと呼ばれるディレクトリにいる.
現在いるディレクトリを調べる
現在いるディレクトリを調べるには,
¶
³
% pwd
µ
´
とする.login 直後に実行すると,各自のホームディレクトリ名が表示されるであろう.
ディレクトリは,階層的な入れ子構造になっているが,その位置をあらわすためには,上位のディレク
トリから / で区切って下位へと構造を並べて表記する.
ディレクトリを作る
では,ホームディレクトリの中にさらにいくつかのディレクトリを作ってみよう.
¶
³
% mkdir ディレクトリ名
µ
´
で,新しいディレクトリを作ることができる.例えば,今日の実習関係のファイルは全て work1 という
ディレクトリに入れておくことにすると,
¶
³
% mkdir work1
µ
´
で,そのディレクトリを作ることができる.さらに,その中に課題ごとにディレクトリを作ることもできる.
ディレクトリを移動する
ディレクトリを移動するには,cd コマンドを使う.今作ったディレクトリに入るには,
¶
³
% cd work1
µ
´
とする.これを実行し,次に pwd コマンドで移動したことを確認せよ.ここでファイルを作れば,この
ディレクトリの中にファイルを作成することができる.
また,SAS DMS の中からファイルを保存する時にも,どこのディレクトリに保存するかを指定すること
ができる.
一つ上位のディレクトリへ戻るには,
¶
³
% cd ..
µ
´
とする.
この移動先の指定は,現在いるディレクトリ (カレントディレクトリ) から相対的に上や下へ移動する方
法である.これに対して,フルパス名 (先頭が/ で始まるディレクトリ表記.pwd コマンドで表示される
もの) を指定すると,カレントディレクトリがどこであろうと,一度に移動先を指定できる.
また単に,
¶
³
% cd
µ
´
と,移動先を指定しなかった場合には,その前にどこのディレクトリにいようとも,ホームディレクトリ
へ移動する.
B.4. ファイルの情報を調べる
57
別のディレクトリへファイルを移動する
既につくられているファイルを,ディレクトリへ分類するにはどうすればよいか.ファイルを移動する
には,mv コマンドを使用する.file1 というファイルを work2 というディレクトリを作ってその中に
移動するには,
¶
³
% mkdir work2
% mv file1 work2
µ
とする.
B.4
B.4.1
´
ファイルの情報を調べる
ls コマンド
ファイルのリストをみるためには,ls コマンドを使う.また,リストするディレクトリを指定したり
( ls ディレクトリ名),指定したファイルだけをリストする ( ls ファイル名 1 ファイル名 2 ...) す
ることができる.
-F オプション
ls コマンドに -F オプションを付け,
¶
³
% ls -F
µ
´
とすると,ディレクトリ名には,最後に / が付いて表示される.
また,最後に * が付いて表示されるファイルもあるかもしれない.これは,実行可能なコマンドファイ
ルであることを表す (ただし,おそらく現在はホームディレクトリにはこれに該当するファイルは無いで
あろう).
-l オプション
-l オプションを付けると,更に詳しいファイルの情報を知ることができる.
¶
% ls -l
µ
によって出力された結果のサンプルを以下に示す.
¶
drwx-----2 yukihiro
-rw-r--r-1 yukihiro
drwxr-xr-x
2 yukihiro
-rw-rw-rw2 yukihiro
lrwxr-xr-x
1 yukihiro
^^^^^^^^^^
^^^^^^^^
A
B
µ
それぞれのカラムは,
A ファイルモード (後述)
inst
inst
inst
inst
inst
^^^^^^^^
C
24
164
1024
840
14
^^^^^
D
³
´
³
6 10 11:48
6 21 12:58
6 21 12:49
6 3 15:29
5 27 17:21
^^^^^^^^^^^
E
Mail
sample1.sas
sas_progs
taikaku2.data
temp ->/temp/yukihiro
^^^^^^^^^^^^^^^^^^^^^
F
´
58
付 録B
UNIX 環境の利用
B そのファイルの所有者のユーザ名
C ファイルが属するグループ名
D ファイルサイズ
E 最後にそのファイルを変更した日時
F ファイル名
を表す.
UNIX はマルチユーザのシステムであるので,ファイルが誰のものかを記録しておく必要がある.また,
各ユーザは一つ以上のグループに属している.筆者 (yukihiro) は inst という教官用のグループに属し
ている.諸君は user という学生のグループに属しているはずである.その他,受講している講義ごとの
グループにも属することがことができる (使い方は省略).
B.4.2
ファイルモード
ファイルモードは,10 文字のフラグで表される.- はそのフラグがオフであることを表す.
最初 (一番左の文字) は,d (ディレクトリ),l (シンボリックリンク),- (一般のファイル) のどれか
である.
シンボリックリンクとは,ファイルやディレクトリの実態は別のところにあるが,それを参照すること
によってあたかもそこにファイル/ディレクトリがあるように扱える仕組みである,詳細は省略.
その後の 9 文字は,3 文字ずつ組になっている.
第 2,5,8 フィールド r/- のどちらか.r ならファイルを読むことが可能.
第 3,6,9 フィールド w/- のどちらか.w ならファイルに対して書き込みが可能.
第 4,7,10 フィールド x/- のどちらか.ディレクトリの場合には,x ならば,そのディレクトリの中を読
むことが可能.ファイルの場合には,x ならばそれが実行可能コマンドファイルであることを示す.
これらが,3 フィールドある理由は次の通り.
第 2∼4 フィールド そのファイルの所有者に対するモード.
第 5∼7 フィールド そのファイルのグループに属するユーザに対するモード.
第 2∼4 フィールド それ以外のユーザに対するモード.
例えば,
drwx------
2 yukihiro inst
24
6 10
11:48 Mail
は,ディレクトリで,所有者は読み込み書き込み,中を読むことができるが,その他のユーザには読み書
きできない.このディレクトリの中にはメールが保存されているので,他人からはみれないようになって
いる.
また,
-rw-r--r--
1 yukihiro inst
164
6 21
12:58 sample1.sas
は,ファイルで,所有者には読みだし/書き込みとも可能.その他のユーザからは読み出しは可能である
が書き込みは不可である.
B.5. オンラインマニュアル
-rw-rw-rw-
2 yukihiro inst
59
840
6
3
15:29 taikaku2.data
は,誰からでも読み出し/書き込み可能で,他人に勝手に内容を変更されてしまうかもしれない,という
ちょっと危ない設定である.
----rw-rw-
1 yukihiro inst
164
6 21
12:58 foo.data
というようなファイルを作れば,所有者からは読み書き不可であるが,その他の人からは読み書きとも可
能,という変なファイルを作ることもできる (普通は意味がないが).
B.4.3
ファイルモードの変更
ファイルモードを変更するには,chmod コマンドを使用する.例えば,
¶
³
% chmod ug+w foo.data
µ
´
のようにする.これは,foo.data というファイルを,所有者とグループに対して書き込み可に設定する.
一般に,chmod コマンドは,
• u :
user (所有者に対する指定)
• g :
group (グループに対する指定)
• o :
other (その他のユーザに対する指定)
に対して,
• + :
指定フラグをオンにする
• - :
指定フラグをオフにする
という操作を,指定ファイルに実行する.+/- の後には,r, w, x 等を指定する (他にもあるが,ここで
は省略).
chmod コマンドは,ファイルの所有者か,スーパーユーザ (特権を持ったシステム管理者) しか実行で
きない.
これらのファイルモードの指定によって,他人にみられたく無いファイル,また逆に他人から参照して
欲しいファイル,等を管理することができる.
また,間違って変更しては困る大事なファイル (データファイルなど) は,所有者に対しても書き込み不
可にしておくと比較的安全である.(書き込み不可にしておいても削除はできるので絶対安全ではない.)
B.5
オンラインマニュアル
man コマンドによって,画面上でコマンドの使用法を見ることができる.紹介したコマンド類は,全て
の使い方が示されているわけではない.詳しくは適当な書籍等を参照するか,あるいはオンラインマニュ
アルを見ること.
¶
³
% man コマンド名
µ
で,コマンドの解説が表示される.例えば,
´
60
付 録B
UNIX 環境の利用
¶
³
% man ls
% man chmod
µ
´
等を実行してみよ.
ただし,オンラインマニュアルはある程度コンピュータについて知識がないと相当わかりにくい.理解
できなくても悲観することはない.その場合には,他のリファレンスを活用せよ (解説書,詳しい人,等).
B.6
複数のファイルを一度に操作する
UNIX のファイル操作コマンドの多くは,一度に複数のファイルを指定して処理ができる.例えば,
¶
% rm file1 file2 file3
µ
とすると,file1, file2, file3 の 3 個のファイルを一度に消すことができる.また,
¶
³
´
³
% mv file1 file2 file3 dir1
µ
´
とすれば,file1 file2 file3 をまとめて dir1 というディレクトリに移動することができる.ここで,
dir1 は必ず存在するディレクトリ名でなければならない.同様に,
¶
³
% cp file1 file2 file3 dir1
µ
は,file1, file2 file3 を dir1 というディレクトリにまとめてコピーする.
B.6.1
´
ワイルドカードを使う
さらに,ワイルドカードというものを使って,複数のファイルをまとめて便利に指定することができる.
上記の実習で,
¶
³
% ls *.data
% ls *.sas
% ls *.lst
µ
´
という指定をしたが,*.data は .data で終るファイルを全て書き並べたのと同じことになる.* は任
意の文字列にマッチする.また,? は任意の文字列にマッチするので,
¶
³
% rm file1 file2 file3
µ
は,
¶
´
³
% rm file?
µ
´
と書き換えられるかもしれない (file4 とか file0 とかが存在したら同時に消去されてしまうので,注意).
file* は,file にも file1 にも file2 にも file12 にもマッチする.file? は file1 や file2
にはマッチするが file や file12 にはマッチしない.
他にも,更に細かい指定のできるワイルドカードが存在するが,ここでは省略する.興味のある者は
UNIX の解説書等を参照して欲しい.
B.7. 複数のプログラムを同時に動かす
B.7
61
複数のプログラムを同時に動かす
SAS を使っていて,ファイルの操作をするために UNIX のコマンドラインに戻りたい時があるだろう.
また,データを編集するために,途中でエディタが使いたくなることもあるかもしれない.このような時
に一旦 SAS を終了するのは不便である.
UNIX はマルチタスクの OS (複数のプログラムを同時に実行できる) なので,SAS を終了することなく
他のプログラムを実行することができる.
B.7.1
複数のコマンド入力用ウインドウを立ち上げる
UNIX に login すると,コマンドが入力できる一つのウインドウが開いているはずである.これをあら
かじめ複数にしておこう.
¶
% kterm &
µ
あるいは,
¶
³
´
³
% mjpterm &
µ
´
とすると,新しいウインドウが開く.2∼3 個開いておくと便利なことが多い.
行末の & は,そのプログラムをバックグラウンドで実行する指定である.これを付けないと,kterm あ
るいは mjpterm を実行したウインドウには,実行した kterm/mjpterm を終了するまで次のコマンドプ
ロンプト (%) が出て来なくなるので,複数のウインドウを開いた意味が無くなる.
kterm と mjpterm の違いはあまりない.kterm は標準的なプログラム.mjpterm は日立独自のプロ
グラムで,Windows98 の仮名漢字変換機能で日本語を入力することができる (kterm でも,UNIX の機能
で日本語を入力することはできる).
B.7.2
プログラムのサスペンド
不幸にして,login してすぐに SAS を実行してしまったとしよう.その他のウインドウが開いていな
い場合には,SAS を終了するしか無いのか?
この場合には,login したウインドウに戻り (SAS を実行した状態になっているので,プロンプトは出
¤
¡
ていないはずである),£Ctrl+Z ¢ (コントロールキーを押しながら Z キーを押す) を入力すると,コマン
ドプロンプトが出る.
これは,プログラムをサスペンドした,といい,この場合には SAS の実行を一時的に中断してコマン
ドプロンプトに戻ったことになる (この時 SAS は実行が中断されているので,SAS のウインドウをマウ
スで選択しても,動作しない).ここで他の操作を実行したり,または別の kterm/mjpterm 等を開いた
りしたのちに,SAS に戻ればよい.サスペンドしたプログラムに再び戻るには,
¶
³
% fg
µ
とする.または,
¶
´
³
% bg
µ
´
とすると,サスペンドしているプログラムをバックグラウンド実行に移すことができるので,そのウイン
ドウ (コマンドラインが出ているところ) も,SAS も切り替えて同時に使用できるようになる.
62
付 録B
UNIX 環境の利用
※注意
それなら最初から,
¶
³
% sas &
µ
´
と,SAS をバックグラウンドで起動すればよいと考えるのだが,これではうまく起動しなかった.一旦起
動してから,サスペンドして,バックグラウンド実行に変更するのは可能.
63
付 録C
C.1
C.1.1
DMS を使わない SAS の使い方
サンプルプログラムによる実行の流れ (2) DMS を使わない方法
プログラムの作成
好みのエディタ (ここでは mule を使用するものとして説明する) で,プログラムを入力し,ファイル
に保存する.
¶
³
% mule &
µ
´
で,まず mule を起動しておくと便利.最後の & は,mule をバックグランドで実行して,コマンド入力
ウインドウは,mule を終了することなく使用できるようにするため.
¤
¡ ¤
¡
mule の中でプログラムを入力する.入力できたら,£Ctrl+X ¢ £Ctrl+W ¢ (最初にファイル名をつけて
¤
¡ ¤
¡
保存する場合) または £Ctrl+X ¢ £Ctrl+S ¢ (既にファイル名が指定されている場合) で保存する.mule
を終了する必要はない.
mule のウインドウの左上の File メニューから, ファイルの保存 を実行することも可能.ただし,
これは X-Window 環境で mule を実行していない場合にはできない.
C.1.2
プログラムの実行
sample1.sas というファイルに SAS プログラムを保存したとする.UNIX のコマンドプロンプトが表
示されたウインドウを選択し,
¶
³
% sas sample1.sas
µ
で,SAS プログラムが実行される.
C.1.3
´
実行結果の参照
ファイル sample1.log に実行状況が,sampole1.lst に処理結果が出力されているはずである.
¶
³
% ls
sample1.log
sample1.lst sample1.sas
...(その他のファイル)
µ
として,出力ファイルが作成されたことを確認せよ.また,
¶
´
³
% less sample1.log
% less sample1.lst
µ
等として,実行結果を確認せよ.
´
64
付 録C
C.1.4
DMS を使わない SAS の使い方
更に続けて処理する場合
mule を終了していないので,mule の中にプログラムが残っているはずである.mule のウインドウを
選択して,内容を更に編集してから保存し,再び実行すればよい.
C.2
DMS を使う方法と,使わない方法の比較
最終的には,どちらを使うかは好みの問題である.UNIX 上では SAS しか使わないという人には,DMS
の方が便利かもしれない.普段から mule を始め,UNIX をいろいろと使っている人には,DMS の操作環
境は馴染みにくいと感じるだろう (汎用コンピュータの操作方法に基づいているため).
以下に,それぞれの特徴を簡単に上げておく.
C.2.1
DMS の利点と欠点
• SAS の環境の中で,プログラムやデータの入力,実行,結果の確認と,一通りのことが全てできる
ので,その他のプログラムを覚える必要も少ない.
• プログラムの実行等,コマンドがマウス操作によって実行できる.
• 逆にいえば,SAS DMS 独自の操作を習得しなければならない.
C.2.2
DMS を使わない場合の利点と欠点
• 汎用のエディタを使うことができるので,他のプログラムの利用と同じ操作方法が利用できる.
• 複数のプログラムを連係して使うことになる.
• しかし,マルチウインドウ環境で,エディタとコマンド実行環境用のウインドウを同時に起動してお
けば,エディタでプログラムファイルを保存する,コマンド実行用ウインドウに移動して SAS コマ
ンドを実行する,と,一連の処理がある程度スムーズに実行できる.
Fly UP