2016-05-23 57 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 output'只是記錄打印輸出。打印輸出需要時間,所以進度變得更慢。這就是爲什麼我想避免它。有沒有辦法使用其他方法包括觀察次數?

+0

您可以發佈樣本輸入和輸出數據嗎?對於輸入數據,您可能只需引用其中一個SASHELP表。 – Tom

+0

暗示它是DF + 1我認爲?你應該確認確切的關係。 DF與其他一些統計數據在同一張表中。 – Reeza

+0

@Tom因爲迴歸可能會排除可能不是最佳方法的缺失值。 – Reeza

回答

1

ODS OUTPUT不'只記錄打印輸出';它會將要轉換爲打印輸出的Feed並以數據集格式導出。這實際上是打印輸出之前的步驟

因此,您可以簡單地關閉打印的輸出,如果你不需要它,不會損害ods output,使用ods exclude(或其他類似的方法)。

下面是一個例子。

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

我無法知道如何一次性獲得數值。您需要獲取兩個輸出表併合並它們。你還表示你需要觀察數量,但是數據集中的數字或迴歸中使用的數字 - 因爲它們可能不同。由於您尚未澄清要求,因此我會將最終結果合併給您。

您感興趣的表格是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;