SAS - system do przetwarzania informacji

Lucyna Kunert-Witkowska (ypwitkow@cyf-kr.edu.pl)

1. Wstęp. Moduły systemu SAS.
2. Praca z systemem SAS
3. Praca interakcyjna w trybie graficznym
4. Korzystanie z SAS/ASSIST
5. Podstawowe pojęcia systemu SAS.
6. Biblioteki i pliki systemu SAS.
7. Przykłady programów zapisanych w języku 4GL.
8. Bibliografia dostępna w bibliotece ACK CYFRONET AGH.

1. Wstęp. Moduły systemu SAS

System SAS (Statistical Analysis System) jest nowoczesnym systemem przetwarzania informacji rozwijanym przez SAS Institute od roku 1974. W przeszłości służył głównie do analizy danych statystycznych. Obecny jego kształt to zespół wielu modułów, o bardzo szerokim zastosowaniu i łatwym sposobie użytkowania. W ACK Cyfronet AGH wersja 9.3 systemu SAS znajduje się na komputerze IBM HS21 Mars i obejmuje następujące moduły:

Na komputerze Mars system SAS wersja 9.3 znajduje się w katalogu /opt1/sas/SASFoundation/9.3. Podkatalog samples zawiera przykładowe programy.

Oprócz zainstalowanych u nas modułów, SAS Institute rozprowadza jeszcze między innymi: W ofercie SAS Institute znajdują się także narzędzia kompleksowe, takie jak:

Więcej informacji o systemie SAS i jego modułach można znaleźć w ksążkach podanych w bibliografii, a także na stronach: http://support.sas.com/documentation/onlinedoc/index.html. W Internecie warto odwiedzić stronę www.sas.com, na której znajdują się informacje o produktach, organizowanych konferencjach grup użytkowników, a także wiele programów udostępnianych przez ich twórców. Polska filia SAS Institute mieści się w Warszawie, ul. Jutrzenki 17, tel. (22) 873 92 00.

2. Praca z systemem SAS

System SAS może pracować interakcyjnie tylko w trybie graficznym (korzystając w systemie UNIX z X Window). Na terminalu graficznym (X-terminal lub stacja robocza) wywołujemy SAS komendą sas. Nie należy zapominać o wcześniejszym, odpowiednim ustawieniu zmiennej systemowej DISPLAY, tak by wskazywała na nasz terminal lub stację roboczą:

ssh mars.cyfronet.krakow.pl
ssh mars55
setenv DISPLAY <nazwa-terminala>:0
module add SAS
sas

Oprócz pracy w trybie interakcyjnym SAS może pracować także wsadowo. Możliwość pracy wsadowej jest cenna zwłaszcza, jeśli wykonuje się długie obliczenia, które przekraczają limit czasu obliczeń wyznaczony dla zadań interakcyjnych na danym komputerze. Wykonanie naszego programu w skrypcie wsadowym może wyglądać następująco:

sas przyklad1
przyklad1.sas
jest plikiem z programem napisanym w języku SAS, znajdującym się w katalogu bieżącym.
3. Praca interakcyjna w trybie graficznym

Po wywołaniu systemu, na ekranie komputera pojawia się winieta systemu SAS, a następnie otwierane są trzy główne okna:

Wszystkie trzy okna mają 5 wspólnych menu: File, Edit, View, Tools, Solutions, Help.

Dodatkowo okno PROGRAM ma jeszcze menu Run. Niektóre funkcje dostępne z menu są takie same dla wszystkich okien. Na przykład zakończenie pracy z systemem SAS można uzyskać klikając File-> Exit w oknie PROGRAM lub w oknie LOG.

Oto główne polecenia, które można wykonać z menu w oknie PROGRAM:

File->Open - wczytanie zawartości podanego pliku tekstowego
File->Save - zapisanie zmian do pliku
File->Save as - zapisanie zmian do podanego pliku
File->Exit - zakończenie pracy z SASem

Edit->Undo - cofnięcie ostatnio wykonanej akcji
Edit->Clear text - usunięcie tekstu z okna
Edit->Options - ustawienie opcji edycji
Edit->Options->Autosplit - ustawienie automatycznego przejścia do nowej linii po naciśnięciu klawisza Enter
Edit->Find - znajdowanie wybranego tekstu

View->Change display->Save attributes - zapamiętanie wyglądu okna (rozmiaru, umieszczenia na stronie, koloru)
View->Preferences - ustawienie środowiska graficznego
View->Edit Toolbox - modyfikacja zawartoci i wyglądu paska narzędzi

View->Change Font - zmiana czcionki stosowanej w oknie
Locals->Submit - wykonanie programu wpisanego w oknie PROGRAM
Locals->Recall text - wczytanie tekstu ostatnio wykonywanego programu
Locals->Submit top line - wykonanie pojedynczych linii programu

Globals->Program editor - przejście do okna PROGRAM
Globals->Log - przejście do okna LOG
Globals->Output - przejście do okna OUTPUT
Globals->Graph - przejście do okna GRAPH przeznaczonego do wyświetlania tworzonej grafiki
Globals->SAS/ASSIST - przejście do pracy w trybie ASSIST
Globals-> Access - przeglądanie bibliotek i zbiorów SASa, także generowanie zapytań SQL
Globals->Analyze->Interactive data analysis - wywołanie modułu SAS/INSIGHT
Globals->Analyze->Guided data analysis - wywołanie modułu SAS/LAB
Globals->Accessories->Customize X resources - modyfikacja ustawienia fontów, klawiatury, kolorów w jakich wypisywany jest tekst i komunikaty

Kolejne polecenia to:
Submit - wykonanie programu z okienka PROGRAM
Open - otwarcie nowego pliku
Save - zapisanie programu na pliku dyskowym
Print - drukowanie zawartości aktywnego okna
Print Preview - podglądnięcie wydruku
Cut - wycięcie zaznaczonego tekstu i umieszczenie go w buforze
Copy - skopiowanie zaznaczonego tekstu do bufora
Paste - wpisanie tekstu z bufora w miejscu położenia kursora
Undo - wycofanie ostatniej operacji
Librefs - wyświetlenie aktywnych bibliotek w oknie LIBNAME
Assist - wywołanie systemu menu SAS/ASSIST
Help - wywołanie pomocy

Przed ikonami narzędzi umieszczone jest też pole, w którym możemy wpisać tekst polecenia i wykonać je naciskając przycisk z lewej strony lub klawisz <Enter>. Wygląd i znaczenie poleceń przedstawianych na pasku możemy dostosować do swoich potrzeb przez kliknięcie np. w oknie PROGRAM na View->Edit ToolBox.

4. Korzystanie z SAS/ASSIST

Dla początkujących użytkowników wygodna jest praca w systemie menu, z wykorzystaniem możliwości modułu SAS/ASSIST. Możemy rozpocząć ją z dowolnego okna, np. z okna PROGRAM. Kolejno klikamy lewym klawiszem myszy na Globals->SAS/ASSIST . Wyświetla się nowe okno z menu głównym systemu ASSIST:

Naciskanie kolejnych przycisków powoduje pojawianie się kolejnych rozwijalnych menu:

Przycisk INDEX istnieje też w większości podmenu menu głównego i pokazuje operacje, jakie można wykonać na tym poziomie. Przycisk GOBACK, który pojawia się na każdym niższym poziomie menu, pozwala na powrót na wyższy poziom. Pracując w menu ASSIST użytkownik jest prowadzony przez system, na każdym poziomie może wybierać akcję, jaką chce wykonać, podpowiadane są nazwy zbiorów, na których może wykonać operacje, nazwy zmiennych, które może wybrać do analizy, itp. Każde dokonanie wyboru powoduje jednocześnie generowanie części kodu programu. Po przeprowadzeniu całej analizy i wykonaniu programu, wygenerowany kod można wprowadzić do okna PROGRAM (komendy Locals -> Recall text) i jeszcze raz wykonać (komendy Locals-> Submit). Wygenerowany program można także modyfikować w oknie PROGRAM, już bez pomocy ASSISTa i przysyłać do wykonania. W ten sposób, tworząc kolejne wersje programu można najłatwiej nauczyć się pisać samemu programy w SASie.

Oto przykład formularza ekranowego modułu SAS/ASSIST wyświetlanego przy wykonywaniu podstawowej analizy danych (podanie liczby danych, sumy, wartości minimalnej i maksymalnej, wartości średniej, wariancji, odchylenia standardowego):

Wygenerowany program można podglądnąć klikając Locals-> View Source i wykonać klikając Locals -> Run. Można też oglądać analizowane dane (Local-> View Data Set).

5. Podstawowe pojęcia systemu SAS.

Programy pisane są w języku 4GL (4th Generation Language). Jest to język proceduralny czwartej generacji, umożliwiający operacje na całych zbiorach danych. Język ten ma dwa typy bloków programowych:

Elementami języka są słowa kluczowe, nazwy procedur, nazwy zmiennych, stałe i znaki specjalne. Nazwa zmiennej może składać się z od 1 do 8 znaków alfanumerycznych i znaku _. Małe i duże litery w nazwie nie są rozróżniane. Nazwa musi zaczynać się od litery lub znaku _.

Instrukcje w języku 4GL kończą się średnikiem. Instrukcje można rozpoczynać w dowolnej kolumnie i mogą zajmować jedną lub kilka linii.

Komentarze mogą mieć postać instrukcji, zaczynającej się od *, a kończącej się średnikiem:

* to jest komentarz;

lub znajdować się między znakami /* i */:

/* to tez jest komentarz */

W SASie są tylko dwa rodzaje zmiennych i stałych:

Stałe numeryczne można zapisywać także w notacji wykładniczej np.: 2.456E+10

Daty przechowywane są w postaci numerycznej, jako liczba dni jaka minęła od 1 stycznia 1960 roku (dla dni wcześniejszych, będzie to liczba ujemna). Możliwe jest też przechowywanie łączne daty i czasu, jako liczby sekund, jaka upłynęła od godziny 0:00 1 stycznia 1960 roku.

6. Biblioteki i pliki systemu SAS.

Dane, na których operuje SAS trzymane są w zbiorach, o specjalnym formacie, możliwym do odczytania tylko z poziomu systemu SAS. Dla użytkownika są to tabele dwuwymiarowe. Kolumny takiej tabeli nazywane są w SASie zmiennymi, a wiersze obserwacjami. Do zbiorów odwołujemy się podając ich nazwy. Nazwa jest zwykle dwuczłonowa:

<nazwa biblioteki>.<nazwa zbioru>

<nazwa biblioteki>
to nazwa biblioteki SASa. Jest to jedna z nazw standardowych lub nazwa podana wcześniej przez użytkownika poleceniem libname, np.:

libname aa '/user/people/ypwitkow/sasuser';

Polecenie to musi być wpisane w oknie PROGRAM i podane do wykonania klikaniem Locals-> Submit. Jak widać, biblioteka podaje położenie plików SASa w drzewie katalogów systemu plikowego komputera.

<nazwa zbioru> to właściwa nazwa zbioru.

Listę bibliotek standardowych, które są wcześniej predefiniowane możemy zobaczyć w oknie LIBNAME wyświetlającym wszystkie aktywne biblioteki. Okno LIBNAME pojawi się po naciśnięciu Globals->Access->Display Libraries w oknie PROGRAM. Wśród bibliotek standardowych mamy zdefiniowanš bibliotekę WORK do przechowywania zbiorów tymczasowych. Jej zawartość jest kasowana po wyjściu z systemu SAS.

Po najechaniu kursorem na nazwę interesującej nas biblioteki i naciśnięciu prawego przycisku myszy otrzymamy okienko Select, na które należy najechać i zwolnić prawy przycisk. Wyświetli nam się wtedy okno DIR z listą zbiorów znajdujących się w tej bibliotece:

Kolejne najechanie kursorem na nazwę interesującego nas zbioru i naciśnięcie prawego przycisku myszy wyświetli menu operacji, które możemy wykonać, np. przeglądanie lub edycję danych znajdujących się w zbiorze programem VIEWTABLE:

7. Przykłady programów zapisanych w języku 4GL.

Bardzo trudno opisać wszystkie cechy i możliwości systemu SAS. Nawet wybranie najważniejszych rzeczy stanowi duży problem. Chciałabym przedstawić prosty przykład wczytywania i analizy danych w systemie SAS, a także wykorzystania map do obrazowania wyników obliczeń.

Przykład 1. Wczytanie danych, stworzenie zbioru SASa (blok DATA-Step) i wykonanie procedury analizy regresji (blok PROC-Step)

/* blok DATA-Step  wczytanie danych            */ 
/* zbior klasa w bibliotece WORK (tymczasowej) */
/* cztery zmienne: imie (znakowa)              */
/* wzrost, waga, wiek (numeryczne)             */

data klasa;
input imie $ wzrost waga wiek;
cards;
Ania       120.  27.    8
Tomek      145.  40.   14
Agata      131.  32.   13
Basia      128.  28.    9
Madzia     126.  25.5   6
Justyna    134.  28.    8
Michal     138.  35.    9
Piotr      130.  34.    7
Agnieszka  145.  43.5  13

/* blok PROC-Step               */
/* wywolanie procedury reg      */
/* wykonujacej analize regresji  */
proc reg;
   model waga=wzrost;
   plot waga*wzrost;
run;

Tekst programu zapisujemy lub wczytujemy do okna PROGRAM i przesyłamy do wykonania poleceniem Submit. W oknie OUTPUT pojawią się wyniki działania procedury reg. Można je zapisać do pliku tekstowego. Oto kolejne ekrany wyników. Pierwsza strona:

Kolejne strony z wynikami obliczeń:

Przykład 2. Rysowanie wykresu słupkowego zachorowań na odrę na tle mapy Polski (podział jeszcze na 49 województw).

/*  deklaracja biblioteki, ze zbiorem dane        */
/*  dane ma dwie zmienne:                         */
/*   id  numer wojwodztwa                         */
/*   chorzy  liczba chorych w danym wojewodztwie  */

libname aa '/mnt/ypwitkow/sas';
filename grafout 'graf.ps';
goptions device=pscolor gsfname=grafout 
         gsfmode=replace gaccess=sasgastd;
title1 color=red 'Chorzy na odre wedlug wojewodztw';
title2 color=purple 'Luty 1998';
footnote1 color=black justify=left '   Dane wg. opracowania 12/156';

pattern1 value=solid color=grey;
pattern2 value=solid color=yellow;
pattern3 value=solid color=brown;
pattern4 value=solid color=green;
pattern5 value=solid color=red;

proc gmap all map=maps.poland data=aa.dane;
     id id;
     block chorzy / levels=4 coutline=black 
                  ctext=black;
run;

Oto utworzony rysunek w oknie GRAPH:

Taki sam rysunek został utworzony w formacie PostScript i umieszczony w pliku graf.ps.

8. Bibliografia dostępna w bibliotece ACK CYFRONET AGH.

Książki wprowadzające:

  1. Introducing the SAS System, V.6 (56139)
  2. L. Delviche, S. Slaughter - The Little SAS Book: A Primer (55200)
  3. Zdzisław Dec - Wprowadzenie do systemu SAS, Edition 2000, Kraków 1997

Podręczniki systemowe:

  1. Installation Instructions for the SAS System for UNIX Environments Release 6.11
  2. Installation Instructions for the SAS System for UNIX Environments Release 6.12
  3. SAS Companion for UNIX Environments: User Interfaces, V.6 (56113)
  4. SAS Companion for UNIX Environments: Language, V.6 (56114)
  5. SAS Language and Procedures: Introduction V.6 (56074)
  6. SAS Language: Reference V.6 (56076)
  7. SAS Procedures Guide, V.6 (56080)
  8. SAS Software: Changes and Enhancements, Release 6.10 (55120)
  9. SAS Technical Report P-222: Changes and Enhancements to Base SAS Software Release 6.07 (59139)
  10. SAS Technical Report P-242 - SAS Software: Changes and Enhancements Release 6.08 (59159)
  11. SAS Technical Report P-252 - SAS Software: Changes and Enhancements (59169)
  12. SAS Consultants Guide: Supporting the SAS System (55478)
  13. SAS Technical Report P-254 Using the SQL Query Window
  14. SAS Application Guide 1987 Edition (5661)
  15. Getting Started with SAS. Using SAS/ASSIST Software, V.6 (56080)
  16. SAS/ASSIST Software. Your Interface to the SAS System (56086)
  17. Doing more with SAS/ASSIST Software, V.6 (56089)
  18. SAS/ASSIST Software. Changes and Enhancements. V.6 (55319)
  19. SAS/AF Software: Usage and Reference V.6 (56011)
  20. SAS/AF Software: Frame Entry Usage & Reference V.6 (56012)
  21. SAS/AF Software: Frame Application Development Concepts Version 6 (55376)
  22. SAS/AF and SAS/FSP Software: Changes and Enhancements Release 6.07 (55720)
  23. Getting Started with SAS/EIS Software. V.6 (55395)
  24. SAS/EIS: Getting Started with the Frame Entry: Developing Object-Oriented Applications (55914)
  25. SAS/ETS User's Guide, V.6 (56010)
  26. SAS/ETS Software: Time Series Forecasting System (55476)
  27. SAS/ETS Software: Changes and Enhancements Release 6.11 (55474)
  28. SAS/ETS Software: Changes and Enhancements Release 6.12 (55658)
  29. SAS/FSP Software: Usage and Reference V.6 (56001)
  30. SAS/GRAPH Software: Introduction V.6 (56019)
  31. SAS/GRAPH Software: Reference V.6 Volume 1,2 (56020)
  32. SAS Technical Report P-263. Image Extensions to SAS/GRAPH Software V.6 (55037)
  33. SAS Technical Report P-208. SAS/GRAPH Software: Changes and Enhancements to Map Data Sets, Rel. 6.07 (59125)
  34. SAS Technical Report P-215. SAS/GRAPH Software: Changes and Enhancements, Rel. 6.07 (59132)
  35. SAS/IML Software: Usage and Reference V.6 (56040)
  36. SAS/IML Software: Changes and Enhancements through Release 6.11
  37. SAS/INSIGHT Users Guide (56094)
  38. SAS/LAB Software: User's Guide V.6 (56098)
  39. SAS/OR User's Guide Project Management, V.6 (56137)
  40. SAS/OR User's Guide V.6 (5850)
  41. SAS/QC Software: Reference, V.6 (5857)
  42. REPORT Procedure: Usage and Reference, V.6 (56088)
  43. SAS/STAT User's Guide V.6 Volume 1,2 (56045)
  44. SAS/STAT Software: Changes and Enhancements through Release 6.11
  45. SAS/STAT Software: Changes and Enhancements Release 6.12 (55657)
  46. SAS Technical Report P-256: SAS/STAT Software: The MODECLUS Procedure
  47. SAS Technical Report P-243: SAS/STAT Software: The GENMOD Procedure
  48. SAS Screen Control Language: Reference, V.6 (55147)
  49. SAS Guide to SQL Procedures: Usage and Reference, V.6 (56070)
  50. SAS Consultans Guide: Supporting the SAS System (55478)
  51. SAS Guide to Macro Processing, V.6 (56041)
  52. SAS Macro Language. Reference (55501)