System Analiz Statystycznych -SAS.

Transkrypt

System Analiz Statystycznych -SAS.
Metody statytystyczne w naukach biologicznych
1
2006-03-07
Wykład. Wprowadzenie do systemu SAS (import i transformacje danych)
SAS – System Analiz Statystycznych
SAS jest systemem służącym dostarczaniu informacji potrzebnej do podejmowania decyzji.
Umożliwia dostęp do danych, pozwala na tworzenie raportów, różnorodnych analiz
statystycznych. Ze względu na mnogość procedur SAS jest chyba najdoskonalszym
narzędziem statystycznym dostępnym na rynku zwłaszcza, jeśli chodzi o zastosowania
zootechnicznej.
Przetwarzanie w SASie odbywa się przy pomocy procedur. Procedura jest to program
przeznaczonym do wykonania konkretnego zadania. Procedury tworzone są za pomocą
języku programowania 4GL-SAS. Język ten jest ukierunkowany na przetwarzanie informacji
zapisanej w bazie danych.
Po uruchomieniu SAS zobaczymy na ekranie ekran standardowo podzielony na trzy obszary:
Explorer – okno, które pozwala przeglądać nam istniejące bazy danych oraz wygenerowane
rezultaty obliczeń.
Log –jest to okno raportów systemowych. Pojawiają się w nim komunikaty dotyczące
funkcjonowania systemu, liczbie wczytanych danych, błędnych instrukcjach (komunikaty na
czerwono), wykonaniu procedur.
Program edytor – okno, w którym wpisujemy kod programu
i
Wyniki – okno, w którym będą wyświetlane wyniki obliczeń
Autor: Dariusz Piwczyński
Metody statytystyczne w naukach biologicznych
2
2006-03-07
Przyciski funkcyjne:
F3 – zamyka bieżące okienko
F4 – gdy jesteśmy w okienku EDYTOR, następuje wyświetlenie
ostatnio wykonywanych programów
F5 – okienko EDYTOR
F6 – okienko LOG
F7 – okienko WYNIKI
F9 – menu kontekstowe
F11 – okienko komend
KILKA UWAG!!!
• procedury zapisujemy w okienku PROGRAM EDITOR.
• polecenia 4GL-SAS kończymy „;” (średnikiem),
• w jednej linii może znajdować się jedno lub więcej poleceń,
• polecenie może być zapisane w jednej lub w kilku liniach,
• nie wolno dzielić wyrazów,
• polecenie może zaczynać się w dowolnej linii,
• nazwy bibliotek oraz plików należy ograniczać do 8 znaków,
• napisany program kończymy komunikatem „run”, a w niektórych
przypadkach „quit” (procedury: reg, anova, sql).
proc means data=ochrona.baza1 n mean std cv;
class grupa;
var cecha1 cecha2 cecha3;
run;
proc means data=ochrona.baza1 n mean std cv; class grupa; var cecha1
cecha2 cecha3;run;
Zarówno jeden, jaki i drugi zapis da identyczny efekt.
BIBLIOTEKI (Libref)
W SAS’e dane w tabelach, a te z kolei przechowywane są w tzw. Bibliotekach. Biblioteka
odpowiada pojedynczemu folderu lub grupie folderów. W SAS’ie Biblioteki deklarujemy,
tzn. podajemy jej nazwę oraz adres fizyczny. Deklarowanie Biblioteki to pierwsza czynność,
jaką należy wykonać po uruchomieniu systemu. Standardowo tworzona jest biblioteka
‘work’, gdzie mogą być przechowywane dane na czas pracy z SAS, później jest
automatycznie czyszczona.
Składnia:
libname ochrona 'd:\dane\ochrona';
run;
Fizyczną lokalizację biblioteki koniecznie należy ująć pomiędzy symbol apostrof '' .
Symbol apostrof znajduje się pod tym samym klawiszem co cudzysłów!!!
W celu realizacji tej procedury naciskamy przycisk funkcyjny F8
Alternatywnym rozwiązaniem jest kliknięcie na symbol:
Autor: Dariusz Piwczyński
w pasku narzędziowym.
Metody statytystyczne w naukach biologicznych
3
2006-03-07
Nazwa tabeli uzależniona jest częściowo od biblioteki, w której jest ona przechowywana.
Składa się ona z dwóch części., np. ochrona.baza1. Pierwsza to nazwa biblioteki, druga jest
nazwą właściwą tabeli. Właściwa nazwa tabeli (baza1) jest zintegrowana z zawartością tabeli
i dlatego nie wolno zmieniać nazw tabel SAS w systemie operacyjnym bez odpowiednich
procedur SAS.
Nazwy tabel zapisanych w bibliotece Work nie są poprzedzone nazwą biblioteki, tzn. nie
zapisujemy ich jako: work.baza1, lecz krótko: baza1.
Pliki zawierające tabele SASa posiadają rozszerzenia: „sas7bdat”.
Deklarowanie biblioteki można wykonać klikając prawym przyciskiem myszki w oknie
EKSPLORATOR, a następnie już lewym przyciskiem na polecenie NOWA.
Import plików z Excela do SAS. Co zrobić, jeżeli zbiór z danym przygotowany
jest w Excelu? Zachodzi potrzeba dokonania importu, czyli konwersji danych. Wskazane jest
wtedy zapisanie danych w Excelu jako ASCII „Tekst (rozdzielany znakami tabulacji).txt”
Składnia:
data biblioteka.nazwa; /*np. krowy.nazwisko*/
infile ' volumin\katalog\podkatalog\nazwa_pliku.txt';
input cecha1 cecha2 $ cecha3 ... cecha_n;
run;
Wyjaśnienie:
Komentarz dotyczący poszczególnych procedur został zapisany w następujący sposób:
/* Komentarz */ - jest to sposób stosowany w SASie.
data to nazwa nowo założonego zbioru
infile wskazuje, gdzie fizycznie zlokalizowany jest nasz zbiór
Autor: Dariusz Piwczyński
Metody statytystyczne w naukach biologicznych
4
2006-03-07
input – określamy nazwy zmiennych,
run - wykonaj
$ - piszemy wtedy, gdy zmienna ma charakter tekstowy
Inny sposób IMPORTU (Plik=>Importuj) polega na przejściu kilku kroków przez
kreatora importu (zalecany dla początkujących użytkowników):
1.
2.
3.
4.
Komentarz
Jeżeli chcemy zakomentować fragment tekstu, to zaznaczamy go i klikamy kombinację
klawiszy „ctrl-/”. Zdjęcie komentarza to kombinacja „shift-ctrl-/”.
Autor: Dariusz Piwczyński
Metody statytystyczne w naukach biologicznych
5
2006-03-07
Alternatywnym rozwiązaniem jest wprowadznie następującego zapisu:
/* Zakomentowane polecenia */
Tworzymy tabelę z poziomu EDYTORA
data probs;
input nr $ cecha1 cecha2;
cards;
22 3 4
23 2 3;
run;
Wyświetlenie informacji o tabeli
proc contents data=ochrona.baza1;
run;
Procedura pozwalająca wyświetlić w okienku LOG nazwy zmiennych z bazy
„BIBLIOTEKA.TABELA”
proc sql noprint;
select name into :zmienne separated by ' ' from
dictionary.columns
where libname='BIBLIOTEKA' and memname='TABELA';
quit;
%put &zmienne;
Wprowadzanie danych do nowej tabeli w oknie arkusza. tworzenie nowych tabel:
W założonej bibliotece, klikamy prawym przyciskiem myszy, następnie Nowy, następnie
wskazujemy Tabela i OK.
Autor: Dariusz Piwczyński
Metody statytystyczne w naukach biologicznych
6
2006-03-07
Generowanie nowych zmiennych
data lib.zmieniony;
set lib.zrodlowy ;
nowa=zmienna1/zmienna2*100;
run;
set lib.zrodlowy;
polecenie set wskazuje w jakim pliku znajdują się zmienne poddawane transformacji
data lib.zmieniony;
po data wpisujemy nazwę pliku, który powstanie po wykreowaniu nowych zmiennych. Jeżeli
nie chcemy tworzyć nowego pliku, nazwy obydwu plików mogą być takie same.
Autor: Dariusz Piwczyński
Metody statytystyczne w naukach biologicznych
7
2006-03-07
Procedura pozwalająca utworzyć nową zmienną
data ochrona.baza1;
set ochrona.baza1;
mieswyc=month(dat_wyc);
rokkod=2001;
run;
Procedura wykorzystująca funkcję “if”. Jeżeli warunek odwołuje się do zmiennej typu
character, to jej wartość musi być zawarta pomiędzy znakami cudzysłów.
data polmor.geny;
set polmor.geny;
if gen="Mp" then kodgen=1;else kodgen=2;run;
Drukowanie zawartości tabeli na ekranie:
Procedura „print” powoduje wyświetlenie na ekranie wskazanej tabeli.
proc print data=lib.tabela;
run;
proc print data=lib.tabela(obs=10);
run;
W drugim przypadku na ekranie zostanie wyświetlonych 10 pierwszych rekordów z danymi.
Podobnie jak w Excelu, w SAS możemy wykorzystywać różnorodne mechanizmy
obliczeniowe zwane funkcjami, ich liczba przyprawia o zawrót głowy :).
Ich syntaktyka wygląda następująco: nazwa_funkcji(argument1,argument2..);
Przykłady funkcji:
Numeryczne:



ceil() zaokrąglenie do najbliższej liczby całkowitej
int() – część całkowita liczby
round(b,0.01) zaokrąglenie liczby z podaną dokładnością
Funkcje liczące proste statystyki:








sum() suma wartości
mean() średnia arytmetyczna
min(), max() wartość minimalna, maksymalna
std() odchylenie standardowe
log() logarytm naturalny
log10() logarytm dziesiętny
sqrt() pierwiastek kwadratowy z liczby
aby podnieść liczbę do potęgi używamy zapisu:
liczba**potęga, np. 12**3
Autor: Dariusz Piwczyński
Metody statytystyczne w naukach biologicznych
8
2006-03-07
Funkcje operujące na datach:
Jak pisać daty?
- ‘01JAN1968’
data funkjeczas;
databiez=mdy(1,1,1968);/* - podaje datę SAS*/
dzien
=day('1JAN1968'D);/* - podaje dzień miesiąca*/
obec_dat=date();/*bieżąca data*/
obec_czas=time(); /*podaje bieżący czas*/
dzie_tyg=weekday('1JAN1968'D);/*podaje dzień tygodnia*/
miesiac=month('1JAN1968'D); /*podaje miesiąc (1-12)*/
rok=year('1JAN1968'D); /*podaje rok)*/
/*intck - funkcja pozwalająca obliczyć odstęp między dwiema
datami)*/
odst_dni =intck('day', '1JAN1968'D,'6MAR2004'D);
odst_tyg =intck('week', '1JAN1968'D,'6MAR2004'D);
odst_mie =intck('month','1JAN1968'D,'6MAR2004'D);
odst_lat =intck('year', '1JAN1968'D,'6MAR2004'D);
run;
Funkcje na tekstach




compbl() wycina puste miejsca ze zmiennej
compress()
upcase() zamiana liter w tekście na duże
lowcase() zamiana liter w tekście na małe
|| zapis ten pozwala połączyć dwie zmienne w nową np
cecha3=cecha1||cecha2
Funkcje umożliwiające konwersję danych


input() zamiana tekstu na liczbę, np. input(wiek,best12.)
put() zamiana liczby na tekst
Operatory służące do porównania:
=
EQ
^= lub ~=
NE
>
GT
<
LT
>=
GE
<=
LE
też tak można: between '01jun2001'D and '31may2002'D
Autor: Dariusz Piwczyński
Równa się
Nie równa się
Większe niż
Mniejsze niż
Większe lub równe
Mniejsze lub równe
Metody statytystyczne w naukach biologicznych
9
2006-03-07
Przykłady na tworzenie nowych zmiennych
data stat.krowy; set stat.krowy;
kgtl=t*mlkg/100;
kgb =b*mlkg/100;
FCM=0.4*mlkg+15*kgtl;
run;
Procedura kodująca sezon wycielenia
data stat.krowy;set stat.krowy;
if (mieswyc=1 or mieswyc=2 or mieswyc=12) then
else if (mieswyc=3 or mieswyc=4 or mieswyc=5) then
else if (mieswyc=6 or mieswyc=7 or mieswyc=8) then
else if (mieswyc=9 or mieswyc=10 or mieswyc=11)then
sezon="z";
sezon="w";
sezon="l";
sezon="j";
a może tak?
data stat.krowy;
set stat.krowy;
if month(datwyc)=(1 or 2 or 12) then sezon=”zima”;
else if month(datwyc)=(3 or 4 or 5) then sezon=”wiosna”;
else if month(datwyc)=(6 or 7 or 8) then sezon=”lato”;
sezon=”jesien”;
run;
data stat.krowy;
set stat.krowy;
if month(datwyc) IN (1,2,12) then sezon=”zima”;
else if month(datwyc) IN (3,4, 5) then sezon=”wiosna”;
else if month(datwyc) IN (6,7, 8) then sezon=”lato”;
else
sezon=”jesien”;
run;
Język SQL
Procedura pozwalająca wybrać z istniejącej tabeli określone kolumny oraz wskazane rekordy i
utworzyć nową tabelę
proc sql;
create table stat.wybor as select zmienna1, zmienna2, zmienna3
from stat.krowy where mleko GE 20;
quit;
stawianie warunków, przykłady:
where cecha in (2,3,4);
where cecha like '__k;
Procedura pozwalająca wybrać z istniejącej tabeli określone kolumny i zapisać je pod inną nazwą
proc sql;
create table m2 as select krowa, stara1 as nowa1,stara2 as
nowa2
from lib.m1;
quit;
Procedura pozwalająca wybrać z istniejącej tabeli określone kolumny, wykonać określone obliczenia
na podzbiorach, zapisać je pod inną nazwą. „Distinct” powoduje, iż w nowym zbiorze każda krowa
wystąpi tylko jeden raz, dla każdego zwierzęcia z osobna zostanie obliczona liczebność, wartość
minimalna i maksymalna zmiennej „dim”.
Autor: Dariusz Piwczyński
Metody statytystyczne w naukach biologicznych
10
proc sql;
create table stat.raport as select
distinct(krowa),
count(krowa) as n_prob,
min(dim) as mindim,
max(dim) as maxdim
from stat.krowy group by krowa;
quit;
Procedura wyświetlająca liczbę rekordów w bazie
proc sql;
select count(*) from stat.krowy;
quit;
Procedura pozwalająca na usuniecie wybranych kolumn
proc sql;
alter table stat.krowy drop cecha1, cecha2;
quit;
lub
data stat.krowy;
set stat.krowy;
drop kod obora;
run;
Procedura pozwalająca na usuniecie wybranych rekordów
proc sql;
delete from lib.baza where krowy ="";
quit;
“”, tj. takich w tym przypadku, gdzie w kolumnie krowy rekordy będą puste
w tym przypadku numer krowy jest zmienną tekstową („”)!!!
Procedura usuwająca ze zbioru te rekordy, gdzie brakuje numeru krowy
data bydlo.krowy;
set bydlo.krowy;
if krowa=. then delete;
run;
w tym przypadku numer krowy jest zmienną numeryczną (.)!!!!
Procedura, która pozostawi w nowej tabeli kolumny ze starej wskazane komendą keep
data krowy.nowa;
set krowy.stara;
where lakt =1;
keep krowa, lakt as kodlakt;
run;
Zmiana nazwy cech
data stat.krowy;
set stat.krowy;
rename old-name1 = new-name1 old-name2 = new-name2;
run;
Usuwanie tabeli
proc sql;
drop table wynik;quit;
Autor: Dariusz Piwczyński
2006-03-07

Podobne dokumenty