SAS/STATのプロシジャの結果をデータセットに出力するには

[OS]ALL
[リリース] SAS System 8 以降
[キーワード] STAT, ODS, OUTPUT

[質問]

SAS System 8 以降では、SAS/STATのプロシジャを実行して得た結果をすべてSASデータセットとして出力することが可能になったと聞きました。 どのように実行するのでしょうか?

[回答]

SAS System 8 以降では、ODS(アウトプット・デリバリ・システム)の機能を利用して、すべての解析結果をSASデータセットへ出力できるようになりました。この機能は、Base SAS、SAS/ETSなどでも利用可能です。

実行手順としては以下のようになります。

  1. 出力結果に関する情報をログウィンドウに出力するODS TRACEステートメントを利用して、ODS OUTPUTステートメントで使用するODSテーブル名を確認します。 (注 1)
  2. ODS OUTPUTステートメントでODSテーブル名を指定して、出力内容をSASデータセットとして保存します。
    ODS OUTPUT  ODSテーブル名 = 出力先のSASデータセット名 ;
    

たとえば、GLMプロシジャで出力される下記の分散分析表(ANOVA表)をSASデータセットに出力するには、以下のように実行します。

GLMプロシジャの分散分析表
                                  Sum of
 Source               DF         Squares     Mean Square    F Value    Pr > F

 Model                2     579.5000000     289.7500000      14.61     0.0015
 Error                9     178.5000000      19.8333333
 Corrected Total     11     758.0000000

実際のSASプログラム
/** GLMプロシジャの出力に関する情報をLOGウィンドウに出力します。**/
ODS TRACE ON;

/** GLMプロシジャの実行 **/
proc GLM data=data1;
  CLASS group;
  MODEL resp=group;
RUN;

/** ODS TRACEステートメントの解除 **/
ODS TRACE OFF;

上記プログラム実行後のLOGウィンドウの出力
Output Added:
-------------
名前 :         ClassLevels          <--- ODSテーブル名
ラベル :       Class Levels
テンプレート : STAT.GLM.ClassLevels
パス :         GLM.Data.ClassLevels
-------------

Output Added:
-------------
名前 :         NObs                 <--- ODSテーブル名
ラベル :       Number of Observations
テンプレート : Stat.GLM.NObs
パス :         GLM.Data.NObs
-------------

Output Added:
-------------
名前 :         OverallANOVA         <--- ODSテーブル名
ラベル :       Overall ANOVA
テンプレート : stat.GLM.OverallANOVA
パス :         GLM.ANOVA.resp.OverallANOVA
-------------

(後略)

上記の出力から、出力したい分散分析表のODSステートメントで使用するODSテーブル名「OverallANOVA」を取得します。

実際のSASプログラム (注 2)
/** ODS OUTPUTステートメントを利用してデータセットを作成 **/
	      
ODS OUTPUT OverallANOVA=out1; /** 名前=出力するデータセット名 **/
proc GLM data=data1;
  CLASS group;
  MODEL resp=group;
RUN;
QUIT;

/** 出力したデータセットの確認 **/
PROC PRINT data=out1;
RUN;

出力されたデータセットの内容
OBS  Dependent   Source                 DF      SS                MS      FValue     ProbF

1         resp       Model              2     579.5000000     289.7500000 14.61      0.001
2         resp       Error              9     178.5000000      19.8333333  _         _
3         resp     Corrected Total     11     758.0000000        _         _         _
注1 ODSテーブル名の確認方法として、ODS TRACEステートメントでLISTINGオプションを指定すると、LOGウィンドウではなくOUTPUTウィンドウへテーブル名などの情報が出力されます。
ODS TRACE ON / LISTING;
また、ODSテーブル名はSAS/STATやSAS/ETSのドキュメントにも記載されています。SAS9以降では、Base SASのプロシジャのドキュメントにおいてもテーブル名の一覧が記載されるようになりました。
注2 1つのODS OUTPUTステートメントで、複数のアウトプットオブジェクトに対してSASデータセットを作成することが可能です。
このFAQの例で、当てはまりに関する統計量(ODSテーブル名はFitStatistics)を併せてSASデータセットとして出力するためには、下記のように指定します。
ODS OUTPUT OverallANOVA=out1 Fitstatistics=out2;
proc GLM data=data1;
  CLASS group;
  MODEL resp=group;
RUN;
QUIT;