Wie muss man SAS verwenden?

Wie muss man SAS verwenden?
Copyright © 2012 Robert Fovell
For original English text, go to: http://www.atmos.ucla.edu/
Translated by A.Romanova

C162/C213 Fovell

SAS ( welcher einmal für ,,Statistisches Analyse-System” eintrat) ist eine integrierte Sammlung von statistisch oder andere Verfahrensweise (PROCs)

SAS (welcher einmal “für Statistisches Analyse-System” eintrat) ist eine einheitliche Sammlung von statistischen und anderen Verfahren (PROCs), dass wir auf dem Synoptischen Laboratorium Linux Computer installiert haben. SAS sollte von einigen der Laboratorium-Arbeitsplätze verfügbar sein, aber Sie müssen eventuell eine Schrift zuerst führen:

SAS Aufgaben sind in DATEN und PROC-Schritte getrennt. DATEN-Schritte lesen in Daten und führen Manipulationen auf jenen Daten (Transformationen, rescalings, Auswischen von angegebenen Fällen, usw.) durch. PROC Schritte führen Analysen durch, erzeugen Informationsstatistik, machen Anschläge und Druckauflistungen. Zum Beispiel:

Verfahren Funktion
REG Lineare Regression eines gegeben Model
MEANS Rechnet summarische Statistiken (Mittelweg, Uneinigkeit, Max, Min)
UNIVARIATE Rechnet distributive Statistiken, Testnormalität
STANDARD Verwandelt die Bedeutung und Uneinigkeit von Daten
CORR Rechnet Pearson-Produktionsmomentkorrelation
PLOT Macht 2D ASCII Datenverschwörung für Drucker
PRINT Druckt eine gegebene Datei aus
FACTOR Tut Hauptbestandteil und Faktorenanalyse
CLUSTER Erfüllt Clusteranalyse

SAS ist eine Programmiersprache, und deshalb brauchen wir uns an bestimmten Syntax-Regeln zu handeln. Das wichtigste Regeln ist:

eigentlich enden alle SAS Behauptungen in einem Strichpunkt

Vergessen die Strichpunkt-Rechnungen für etwa 75 % von allen SAS Fehler zu verwenden. Die Vorteile des Strichpunkts terminator bestehen jedoch darin, dass Sie mehr als eine SAS Behauptung pro Linie stellen können, und auch  können Sie mehr als eine Linie für eine einzelne SAS Behauptung verwenden, ohne sich über Fortsetzungsanschreiber sorgen zu müssen. Es gibt keine Grenzen zur Länge einer SAS Behauptung, und keine Säulenbeschränkungen. Ein anderer wichtiger Punkt über die SAS Syntax ist, dass es unempfindlicher Fall ist.

Ein Beispiel-DATEN-Schritt. Sagen Sie, dass Sie in einer Datei lesen möchten, die aus vier Variablen besteht, und braucht einige von ihnen zu verwandeln.

 * a comment starts with an asterisk and terminates with semicolon, may
 span more than one line, and may go anywhere (but don't embed comments in your data sets);
 * the DATA statement defines the data set name. Here, it is "example";
 * the data set name cannot exceed eight characters, a throwback to the IBM stone age;
DATA example;
* the INPUT statement tells SAS the variables to read in. Free format may be used
 whenever there is one or more blanks separating each column, so the
 columns need not line up;
INPUT Y X1 X2 X3;
* Transformations and creations of new variables would follow the INPUT statement;
 * Y is temperature in Fahrenheit, so convert it to Celsius below;
Y = (Y - 32.)*5./9.; * standard algebraic order applies;
* Create new variables X3 = ln(X1) and X4 = X1*X2;
X3 = LOG(X1); X4 = X1*X2;
* The CARDS statement tells SAS the data follow. (Does this statement
 show SAS' age or what?) Do NOT use semicolons in the data;
CARDS;
 97 33 -45 -2
 80 45 6 12
 32 -3 12 5

Es hilft manchmal, einen einzelnen Strichpunkt auf einer sonst leeren Linie am Ende der Daten zu verwenden, um SAS zu erzählen, dass es das Ende des DATEN-Schritts erreicht hat. Das ist, warum Ihre Daten Strichpunkte nicht einschließen können. Manchmal könnten Sie Charakter-Variablen für Identifizierungszwecken einschließen mögen. Diese Variablen werden durch das “$”-Zeichen im Anschluss an den Variablennamen (als im NAMEN-$) designiert. Bemerken Sie den Raum zwischen dem Variablennamen und dem Dollarzeichen.

PROC Beispielschritte.

 PROC MEANS DATA=example; VAR Y X1;   * the statement above tells SAS to get the data set "example" and compute summary statistics on variables Y and X1. If you did not specify the data set name, SAS uses the most recently created data set.  If you do not specify which VARs to process, SAS will use all numeric variables in the data set; PROC REG; MODEL Y = X1 X2;  * this performs the simplest linear regression of X1 and X2 on Y, yielding a minimum of output. Because we did not specifically use the DATA= datasetname designator, SAS uses the most recently created data set.;  PROC REG; MODEL Y = X1 X2 X4 / P R NOINT; * options follow the / sign; OUTPUT OUT=regout P=yhat R=resid;   * the statements above fit a model of Y = f(X1, X2, X4) and SAS has been asked to: (1) Leave out the intercept term "NOINT", (2) Compute and print out predicted values and residuals ("P R"), (3) Save the predicted values and residuals into a new data set called "regout", with the former called "yhat" and latter called "resid".;  * note this procedure creates a new output data set, which becomes the default "open" dataset;  PROC PRINT; * this statement alone would print data set "regout" by default; PROC PRINT DATA=example; * to print out the first created data set; * to avoid mistakes, it is a good idea to always tell SAS which data set you want it to operate on. So, use the DATA=datasetname statement at every opportunity;

Wie man SAS führt. SAS kann interaktiv im Vollbildmodus oder in der ,,Stapelverarbeitung” von der Unix-Befehl-Linie geführt werden. Hier gibt es, wie man Stapelverarbeitung verwenden soll.

  1. Sparen Sie Ihre SAS Behauptungen in eine Datei mit der.sas Erweiterung. Beispiel: cloud.sas
  2. Um SAS zu führen, geben Sie einfach den Unix-Befehl aus: Sas-Wolke
  3. Wenn SAS läuft, schafft er zwei neue Dateien, cloud.lst und cloud.log. Wenn diese Dateien bereits bestanden, werden sie überschrieben! cloud.lst enthält die SAS Produktion. cloud.log ist, wo man findet, wo Fehler (wenn irgendwelcher) vorkamen.
  4. Um sich die SAS Produktionsauflistungsdatei einem Standardgröße-Endfenster anpassen zu lassen, verwenden Sie diese Behauptung als die erste Linie in Ihrem SAS Programm:
options linesize=72; * otherwise, the listing will be 132 characters wide;

Einige fortgeschrittene Zeug.

  1. Zusammenmischen von zwei oder mehr Dateien:
    	* this data set reads in station id number and twelve monthly temperature values;
    	* note the convenient shorthand T1-T12 reads in vars T1, T2, T3, ..., T12;
    
    	data temps; input station T1-T12; cards;
    		(data follows)
    	; * marks end of the temperature data;
    
    	* now read in precipitation data set for the same stations;
    
    	data precips; input station P1-P12; cards;
    		(data follows)
    	; * marks end of the precip data;
    
    	data combine; merge temps precips; by station;
    
    	* the new data set "combine" contains the contents of both data sets, and consists of
    		the variables: station, T1-T12 and P1-P12;
  2. Transformieren Daten nach der Datei geschaffen wurden.
    	data original; input Y X1 X2; cards;
    		(data follows)
    	;
    	data revised; set original; Y = Y/100.;
    
    	* now two data sets exist, differing by how Y is scaled.;
  3. Das Standardisieren von Daten zur angegebenen Mittel- und Standardabweichung
    	proc standard data=somedataset M=0 S=1 OUT=newdataset; VAR variablelist;
    
    	* the new data set "newdataset" contains the contents of "somedataset" but
    		    the variables specified in the variablelist have been transformed to zero
    		    mean (M=0) and unit standard deviation (S=1);
  4. Stellen mehr als einer Beobachtung in der Datei auf eine Linie
    	* read in year and mean temperature for some station;
    
    	data temps; input year temp @@; cards;
    
    	1950 56.1  1951 54.3  1952 58.5  1953 59.1
    	1954 60.1  1955 52.1  1956 52.0  1957 60.0
    	etc.
    	;
  5. SAS Funktionen, die zwischen dem INPUT und den CARDS-Behauptungen verwendet werden können, allgemein spiegeln ihre FORTRAN Gegenstücke wider.
    	Y = LOG(X); * natural logarithm;
    	Y = LOG10(X); * log base 10;
    	Y = EXP(X); Y = COS(X); Y = SIN(X); Y = ABS(X); Y = SQRT(X); * obvious!;
    	Y = ATAN(X); Y = ARCOS(X); Y = ARSIN(X); * inverse trig functions;
  6. Vor dem Mischen von zwei oder mehr Dateien müssen sie durch eine allgemeine Variable sortiert werden. Wenn sie durch diese Variable nicht bereits sortiert werden, oder wenn sich SAS aus irgendeinem Grund beklagt, dann müssen Sie die Sorte selbst tun, das SORT-Verfahren verwendend.
    	PROC SORT DATA=dset1; BY station;
    	* alters data set "dset1" to be sorted by the station variable value;
    
    	PROC SORT DATA=dset1 OUT=sort1; BY station;
    	* the sorted data set is called "sort1" and the original data set is unaltered;
  7. Die TITEL-Behauptung kann irgendwo verwendet werden
    	TITLE this statement is placed atop each printed page of the xxxx.lst file;
  8. Das PLOT-Verfahren kann verwendet werden, um vielfache Verschwörung zu machen oder Verschwörung superaufzuerlegen
    	* this statement simply plots Y vs X1;
    	PROC PLOT DATA=example; PLOT Y*X1;
    
    	* here, we give SAS the symbol to use in the plotting;
    	PROC PLOT DATA=example; PLOT Y*X1='+';
    
    	* this statement makes two plots: Y vs X1 and Y vs X2 but doesn't overlay them;
    	PROC PLOT DATA=example; PLOT Y*(X1 X2);
    	* that could also have been written as PLOT Y*X1 Y*X2;
    
    	* this overlays the plots of Y vs X1 and X2;
    	PROC PLOT DATA=example; PLOT Y*(X1 X2) / OVERLAY;
  9. Löschen spezifischer Fälle (gut dafür, wenn Sie designierte Beobachtungen entfernen müssen, wenn sie man verdächtigt sind, outliers zu sein oder übermäßig einflussreich auf das Modell).
    	DATA example;
    	INPUT casenum Y X1 X2 X3;
    	if casenum = 42 then delete; * deletes case number 42;
    	if X1 >= 4.02 then delete; * deletes all data if X1 equals or exceeds 4.02;
    	if X1 < 4.02; * same effect as statement above, since the default action is KEEP;
  10. Entfernen von Variablen von einer Datei.
    	* example of removing variables from original data set;
    	DATA original; INPUT Y X1 X2 X3;
    	* say you create X4=X2/X3 and do not need X2 and X3 anymore;
    	X4=X2/X3;
    	DROP X2 X3; CARDS;
    
    	* example of preventing variables from carrying forward to a newly created data set;
    
    	DATA new; set example(drop=X2 X3);
  11. Zuweisen von Bearbeitungsnummer. Gut dafür, wenn Sie designieren wollen, welche Fälle zu fallen und haben nicht Bearbeitungsnummer als eine Eingangsvariable.
    	DATA example;
    	INPUT Y X1 X2 X3;
    	casenum=_N_; * _N_ is SAS's built-in case counter;
    	if casenum = 42 then delete;
    	CARDS;
  12. Formatierte Eingangsbeispiele.
    	INPUT A 3-4 B 10-12 C 13-20; * giving column numbers;
    	INPUT A B 10-12 C 13-20; * you can mix free and fixed formats;
    	INPUT @3 A 2. B 4.; * start at column 3, read in 2 cols (numbers 3 and 4)
    		into A, and next 4 cols into B.  Note periods after "2" and "4";
  13. Mehr als eine Linie pro Beobachtung.
    	INPUT Y X1 #2 X2 X3; * two lines per case, with X2 and X3 being on
    		second line;
  14. Umstellen von Dateien. SAS liest in Dateien als Fälle durch die Variablen. Wenn Sie dann brauchen auf ihnen als Variablen-Fälle aus irgendeinem Grund zu operieren, verwenden Sie das UMSTELLEN Verfahren. Sorgfältig: Stellen Sie sicher, dass Sie wissen, wie Ihre neuen “Variable”-Namen sind.
    	PROC TRANSPOSE DATA=input OUT=output;
  15. Bekommen Ihrer Produktion in eine andere Anwendung
           * say you wish to get a few variables from data set "example" into list format for input
               some other app (maybe a graphing app);
           * first, set the "pagesize" to some huge number so your data don't
               become interspersed with page banners;
           OPTIONS pagesize=9999;
           DATA _null_; SET example;
               PUT X Y YHAT RESID;
    
           * you can also specify output formats;
           * now look for your data having been written out to the xxxx.log file;
  16. SAS enthält eine starke Matrixprogrammiersprache, das Verwenden PROC IML genannt wird. Gut für Operationen auf komplettem matrices sofort. Sie konnten dem größten Teil von PROC REG mit ganz wenigen Behauptungen in IML schreiben. (Eine gute Übung, die für sich selbst beweist, dass Sie wissen was weitergeht.)