2016-05-23 8 views
1

Ich möchte eine OLS-Regression mit SAS ausführen. Ich versuche das Ergebnis in den Datensatz out zu exportieren. Ich möchte den geschätzten Koeffizienten, den Standardfehler, die t-Statistik und die Anzahl der Beobachtungen in meinem Datensatz haben. Mein Code unten enthält nicht die Anzahl der Beobachtungen.Wie Nummer der Beobachtung mit sas

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

Ich kenne einen Weg, es zu tun ods output nobs=numobs; jedoch verwendet, wenn ich die Regression von Gruppe laufen, diesen Prozess raubend unnötig Zeit. Ich denke, 'ods output' zeichnet nur die gedruckte Ausgabe auf. Das Drucken der Ausgabe dauert Zeit, so dass der Fortschritt viel langsamer wird. Deshalb möchte ich es vermeiden. Gibt es eine Möglichkeit, die Anzahl der Beobachtungen mit anderen Methoden einzuschließen?

+0

Können Sie Eingabe- und Ausgabedaten eingeben? Für Eingabedaten können Sie möglicherweise nur auf eine der SASHELP-Tabellen verweisen. – Tom

+0

Implizit ist es DF + 1 Ich denke? Sie sollten die genaue Beziehung bestätigen. DF wäre in der gleichen Tabelle wie einige der anderen Statistiken. – Reeza

+0

@Tom, da die Regression Objekte mit fehlenden Werten ausschließen kann, die möglicherweise nicht die beste Methode sind. – Reeza

Antwort

1

ODS OUTPUT "zeichnet nicht nur die gedruckte Ausgabe auf"; es nimmt den Feed, der in die gedruckte Ausgabe umgewandelt werden würde, und exportiert es stattdessen in Datensatzformat. Es ist im Wesentlichen der Schritt vor gedruckten Ausgabe.

Als solche können Sie einfach die gedruckte Ausgabe ausschalten, wenn Sie es nicht wollen, ohne ods output, mit ods exclude (oder andere ähnliche Methoden) zu beschädigen.

Hier ist ein Beispiel.

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

Dies hat den Prozess nicht beschleunigt. – fly36

+0

Dann ist es wahrscheinlich, dass Sie falsch sind, weil es langsam ist. Für mich ist es viel schneller als nur den Code ohne das Ausschließen auszuführen - also behebt es diesen Teil des Problems. – Joe

+0

Vergleichen Sie ods alles, das ist sicherlich schneller. Es dauert jedoch mehr als 10 Minuten und ich habe immer noch nicht das Ausgabe-Dataset. (Ich habe insgesamt Tausende von Regressionen) Wenn ich nur 'proc reg data = Autos outest = out tableout;' verwende, dauert es nur wenige Sekunden. – fly36

0

Es gibt keine Möglichkeit, die Werte in einem Schuss zu erhalten. Sie müssen zwei Ausgabetabellen abrufen und sie zusammenführen. Sie haben auch angegeben, dass Sie die Anzahl der Beobachtungen wünschen, aber das ist die Anzahl im Datensatz oder die Zahl, die in der Regression verwendet wird - weil sie sich unterscheiden können. Ich überlasse Ihnen die Zusammenfassung der endgültigen Ergebnisse, da Sie die Anforderungen nicht geklärt haben.

Die Tabelle, die Sie interessiert, ist die ParameterEstimates-Tabelle, die alles enthält, minus der Anzahl der Beobachtungen. Die ANOVA-Tabelle hat den DF, an den ich dachte, aber das ist nicht in der ParameterEstimates-Tabelle verfügbar.

@Joe war auch korrekt, mit ODS SELECT/EXCLUDE Turns aller Ausgabe in das Fenster, die Ihren Prozess schneller machen sollte. Wenn Sie eine Verlangsamung erleben, liegt das an einem anderen Problem.

*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; 
Verwandte Themen