Sunteți pe pagina 1din 5

Referat Pachete Software

-SAS/IML SOFTWARE-

Borca Maria

Chiriac Iulia

Grupa 1042
SAS/IML SOFTWARE

SAS/IML Software oferă un limbaj de programare puternic şi flexibil într-un mediu


dinamic şi interactiv destinat programatorilor, statisticienilor şi cercetătorilor având o librarie
bogată de funcţii statistice. Limbajul se bazează pe un element fundamental care se numeşte
„data matrix” de unde vine şi denumirea lui (Interactive Matrix Language), un vector
bidimensional cu elemente de tip numeric sau şir de caractere. SAS/IML se poate folosi
interactiv, adică la nivel de instrucţiuni pentru a avea acces la rezultate imediat sau
instrucţiunile se pot stoca în module pentru a fi executate ulterior. Programarea este
dinamică pentru ca activităţi inevitabile ca alocarea memoriei şi dimensionarea matricelor
este realizată automat.

Prin intermediul acestui limbaj se pot accesa operatori deja construiţi şi rutine de
apel pentru a îndeplini sarcini foarte complexe, cum ar fi calcularea inversei unei matrice. Se
poate lucra cu valori singulare sau se poate beneficia de operatorii matriceali pentru a
executa operaţia pentru întreaga matrice de date. De exemplu expresia: „x=x+1;” poate fi
folosită pentru a incrementa o singura valoare x sau poate fi folosită pentru a aduna 1
tuturor elementelor unei matrice.

SAS/IML Sofware pune la dispoziţie o gamă întreagă de comenzi pentru prelucrarea


datelor( se pot citi, crea, actualiza seturi de date SAS). Pentru a obţine numerele de telefon
doar ale anumitor persoane dintr-un set de date, de exemplu pentru persoanele care
locuiesc în Bucureşti este foarte uşor: „ read all var{telefon}
where(oras=:”Bucuresti”); „ iar rezultatul va fi o matrice TELEFON care va conţine
numerele de telefon din setul de date filtrate prin condiţia setată. Există un set complet de
instrucţiuni ca do/end, start/finish(de control), do,if-then/else, goto, link, pause, stop
(iterative). De asemenea operaţiile pe matrice se pot executa foarte uşor: poţi aduna de
exemplu matricea Salarii cu matricea Marire_salarii prin Salarii + Marire_salarii.

Una dintre importantele caracteristici ale SAS/IML este faptul că oferă un volum mare
de comenzi grafice pentru a permite utilizatorilor să analizeze legatura dintre date în mod
vizual.

Crearea unui set de date SAS cu ajutorul SAS/IML Software se poate face folosind
comenzile CREATE şi APPEND. Următoarele seturi de comenzi creeaza patru vectori diferiţi.
Datele conţinute de aceşti vectori sunt scrise apoi într-un set de date numit Datele în librăria
Work:

proc iml;
a={1,2,3,4,1,2,3,4}; /** vector de 8 x 1 **/
b={6,6,6,7,7,7,}; /** vector de 6 x 1 **/
c={M A R I A I U L I A}; /** vector de caractere **/
d={0,0}; /** vector de 2 x 1 **/
create Datele var {a b c}; /** creeaza setul de date **/
append; /** copiaza datele din vectori **/
close Datele;

/** inchide setul de date **/

Comanda CREATE deschide Datele.Work pentru scriere. Programul creeaza 3 vectori


numerici(a,b şi d) şi un vector de caractere c. Comanda APPEND scrie valorile din vectorii
mentionaţi în clauza VAR. Vectorii numerici creează variabile numerice iar vectorii care
conţin caractere creeaza variabile de tip caracter. Denumirile variabilelor din setul de date
vor coincide cu denumirile vectorilor. Sintagma CLOSE închide setul de date; ea nu este
obligatorie însă este bine ca programatorul să obişnuiască să închidă setul de date când
termină de scris datele. Fiecare element al vectorilor devine o observaţie în tabela de date
iar variabilele care corespund unor vectori de lungime mai mică şi nu au valori în vectori vor
fi nule aşa cum se observă în următorul tabel care poate fi generat folosind instrucţiunea:
„proc print data=Datele; run;”

Observ. a b c d
1 1 6 M 0
2 2 6 A 0
3 3 6 R
4 4 7 I
5 1 7 A
6 2 7 I
7 3 U
8 4 L
9 I
10 A

Pentru a crea un set de date SAS pornind de la o matrice SAS/IML se foloseşte clauza FROM.
Se pot specifica numele setului de date folosind clauza COLNAME aşa cum se observă în
exemplul următor:
proc iml;
x={ 1 2 3,
4 5 6,
7 8 9,
3 2 1}; /** matrice de dimensiunea 4 x 3 **/
create Datele2 from x[colname={"w" "r" "t"}];
append from x;
close Datele2; /** inchide setul de date **/

În acest exemplu numele variabilelor din setul de date sunt w,r şi t iar daca acestea nu ar fi
fost explicitate, ele ar fi luat valori implicite(COL1,COL2,COL3).
În urma apelului: „proc print data=Datele; run;” va fi generat următorul rezultat:

Observ. w r t
1 1 2 3
2 4 5 6
3 7 8 9
4 3 2 1

Urmatoarea secvenţă de cod SAS/IML estimează rădăcina pătrată a unui numar cu o


precizie de trei zecimale. Se defineşte o funcţie modul numită approx pentru a efectua
calculele şi pentru a returna valoarea aproximată. Dupa crearea funcţiei, ea se poate apela
pentru a estima rădăcina pătrată a mai multor numere.

proc iml; /* begin IML session */


IML Ready
start approx(x); /* inceputul modulului */
y=1; /* initializeaza y cu 1 */
do until(w<1e-3); /* inceperea instructiunii repetitive do */
z=y; /* seteaza z=y */
y=.5#(z+x/z); /* estimeaza radicalul */
w=abs(y-z); /* compute change in estimate */
end; /* sfarsitul instructiunii repetitive */
return(y); /* returneaza valoarea aproximata */
finish approx; /* sfarsitul modulului */
t=approx({3,5,7,9}); /* apelul functiei aprox */
print t; /* afiseaza matricea */

Rezultatul generat este:


T
1.7320508
2.236068
2.6457513
3
quit;
Exiting IML

În concluzie, SAS/IML Software este un mediu de programare uşor şi eficient cu


multe facilităţi pentru date aritmetice şi pentru cele de tip caracter. Este disponibilă o
bibliotecă întreagă de subrutine create pentru a face programarea mai uşoara, mai rapidă şi
eficientă. Deoarece SAS/IML software este o parte din sistemul SAS se pot accesa seturi de
date sau fişiere externe iar datele SAS deja existente pot fi editate şi se pot creea seturi de
date noi.
Bibliografie :

http://support.sas.com/rnd/app/da/iml.html

http://www.okstate.edu/sas/v8/saspdf/iml/chap1.pdf

http://my.safaribooksonline.com/book/databases/sas/9781607646631/calling-functions-in-the-r-
language/section_11.7

http://blogs.sas.com/iml/index.php?/archives/126-Writing-Data-from-a-Matrix-to-a-SAS-Data-
Set.html

S-ar putea să vă placă și