2016-05-23 14 views
1

SASを使用してols回帰を実行します。結果をデータセットoutにエクスポートしようとしています。私は、私のデータセットの係数、標準誤差、t統計量、および観測数を推定したいと思います。私の下のコードには観測数は含まれていません。sasを使用して観測数を含める方法

proc reg data = data noprint outest = out tableout; 
     model y = a; 
     by by_variable; 
run; 

私はそれを行うための一つの方法は、私はグループによる回帰を実行すると、このプロセスは必要以上に時間がかかるとなって、しかしods output nobs=numobs;を使用している知っています。私は 'ods出力'は印刷された出力を記録すると思います。出力を印刷するには時間がかかりますので、処理がはるかに遅くなります。これが私がそれを避けたい理由です。他の方法で観測数を含める方法はありますか?

+0

サンプルの入出力データを投稿できますか?入力データの場合は、SASHELPテーブルの1つだけを参照することができます。 – Tom

+0

暗黙のうちにDF + 1だと思いますか?あなたは正確な関係を確認する必要があります。 DFはいくつかの他の統計と同じテーブルにあります。 – Reeza

+0

@Tom回帰は最良のアプローチではない可能性のある欠損値を含むOBを除外することがあるためです。 – Reeza

答えて

1

ODS OUTPUT「印刷された出力を記録しません」。印刷された出力に変換されるフィードを取り込み、その代わりにデータセット形式でエクスポートします。基本的にのステップの前に、の印刷出力があります。

このように、ods exclude(または他の同様の方法)を使用して、ods outputを害することなく、印刷出力をオフにすることができます。

ここに1つの例があります。

ods exclude all; *turn off all output; 
ods output nobs=numobs; *turn on just that output to that destination; 
proc reg data = cars outest = out tableout; 
     model cylinders=mpg_city; 
     by origin; 
run; 
quit; 
ods exclude none; *turn output back on generally; 
+0

これは処理を高速化しませんでした。 – fly36

+0

それは遅い理由について間違っている可能性があります。私にとっては、除外なしでコードを実行するよりもはるかに高速です - 問題のその部分を修正しています。 – Joe

+0

odsすべてを比較すると、これは確かに高速です。しかし、それは10分以上を要し、私はまだ出力データセットを持っていません。 (私は合計で何千もの回帰を得ている)もし私がちょうど 'proc reg data = cars outest = out tableout;'を使うのであれば、ほんの数秒しかかかりません。 – fly36

0

ワンショットで値を取得する方法はありません。 2つの出力テーブルを取得し、それらをマージする必要があります。また、データセット内の数値や回帰で使用された数などが異なる可能性があるため、観測数が必要であると述べました。要件を明確にしていないので、最終結果のマージを残しておきます。

あなたが興味を持っているテーブルは、すべての観測値からマイナス数を引いたParameterEstimatesテーブルです。 ANOVAテーブルには私が考えていたDFがありますが、これはParameterEstimatesテーブルでは使用できません。

@Joeも正しいです。すべての出力をODS SELECT/EXCLUDE回してウィンドウに表示すると、処理が高速になります。あなたが減速を経験しているなら、それは他のいくつかの問題のためです。

*add some missing values; 
data class; 
set sashelp.class; 
if age=12 then weight=.; 
run; 

ods select none; 
proc reg data=class; 
model weight=height; 
ods output parameterEstimates=want_PE nobs=want_NOBS; 
run; 
ods select all; 

proc print data=want_pe; 
run; 

proc print data=want_nobs; 
run;