12
3 laboratorinis darbas Duomenų analizės uždavinių programavimas Teorinė dalis 1. Duomenų valdymas Duomenų žingsnyje galima aprašyti duomenų failą, kurio duomenys patalpinami programoje: data duomenų_failo_vardas; input kintamųjų sąrašas; cards; duomenys (duomenų matrica); run; Duomenų matricoje kintamieji rašomi stulpeliais. Kintamojo vardas gali būti iki 8 simbolių. Kintamieji yra trijų tipų: simboliniai, skaitiniai, kalendoriniai (data ir laikas). Pavyzdžiui: input zodis $ 1-7 skaicius 10-11 diena1 ddmmyy8. diena2 date7. Nuskaitant simbolinio tipo kintamuosius naudojamas “$” ženklas bei nurodomas kintamojo ilgis; skaitinio tipo kintamiesiems pakanka nurodyti jų ilgį; datos tipo kintamieji gali būti nuskaitomi iš kelių formatų, pavyzdžiui: 14/12/77 ir 14Dec77, pirmuoju formatu aprašyti duomenys nuskaitomi formatu ddmmyy8., o antruoju date7. Išvedant datos tipo kintamuosius reikia nurodyti išvedimo formatą, nenurodžius formato toks kintamasis vaizduojamas taip, kaip ir saugomas užkoduotas SAS duomenų matricoje (skaičius). Nuskaitant duomenis iš išorinio duomenų šaltinio nurodomas duomenų failo adresas, o duomenys nuskaitomi aukščiau aprašytu būdu. filename failas 'D:\pazymiai.dat'; data visi; infile failas; input kintamųjų sąrašas; run; Vartotojas gali naudotis ne tik nuskaitytais kintamaisiais, bet ir kurti naujus kintamuosius įvairių operatorių, funkcijų ir algebrinių išraiškų pagalba. Pavyzdžiui: data metaiN; set metaiK (keep=metai menuo tel); lag_tel=lag(tel); pokytis=tel-lag_tel; run; Pavyzdyje sukuriama duomenų failą MetaiN iš duomenų failo MetaiK išsaugant tik kintamuosius METAI, MENUO, TEL. Funkcijos LAG pagalba sukuriamas naujas kintamasis LAG_TEL, o po to kintamųjų TEL ir LAG_TEL pokytis priskiriamas kintamajam POKYTIS (duomenų faile MetaiN yra 5 kintamieji). Nuskaičius duomenis į kelis duomenų failus, juos galima apjungti vertikaliai operatoriumi SET bei horizontaliai, operatoriumi MERGE. Pavyzdžiui: data x1; infile imtisx; input x 1-8; run; data x2; infile imtisx; input x 9-16; run; Operatorius SET sujungia du duomenų failus X1 ir X2 vertikaliai: data imtisV; set x1 x2; run; Kitas būdas yra pakartoti kintamojo X nuskaitymą iš kito stulpelio:

3 laboratorinis darbas Duomenų analizės uždavinių ...truzgas/lt/destomi_moduliai/p160b103/3_lab_SAS.pdf3 laboratorinis darbas Duomenų analizės uždavinių programavimas Teorinė

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

3 laboratorinis darbas

Duomenų analizės uždavinių programavimas

Teorinė dalis

1. Duomenų valdymas

Duomenų žingsnyje galima aprašyti duomenų failą, kurio duomenys patalpinami programoje:

data duomenų_failo_vardas;

input kintamųjų sąrašas;

cards;

duomenys (duomenų matrica);

run;

Duomenų matricoje kintamieji rašomi stulpeliais. Kintamojo vardas gali būti iki 8 simbolių. Kintamieji yra

trijų tipų: simboliniai, skaitiniai, kalendoriniai (data ir laikas). Pavyzdžiui: input zodis $ 1-7 skaicius 10-11 diena1 ddmmyy8. diena2 date7.

Nuskaitant simbolinio tipo kintamuosius naudojamas “$” ženklas bei nurodomas kintamojo ilgis; skaitinio

tipo kintamiesiems pakanka nurodyti jų ilgį; datos tipo kintamieji gali būti nuskaitomi iš kelių formatų, pavyzdžiui:

14/12/77 ir 14Dec77, pirmuoju formatu aprašyti duomenys nuskaitomi formatu ddmmyy8., o antruoju – date7.

Išvedant datos tipo kintamuosius reikia nurodyti išvedimo formatą, nenurodžius formato toks kintamasis

vaizduojamas taip, kaip ir saugomas užkoduotas SAS duomenų matricoje (skaičius).

Nuskaitant duomenis iš išorinio duomenų šaltinio nurodomas duomenų failo adresas, o duomenys

nuskaitomi aukščiau aprašytu būdu.

filename failas 'D:\pazymiai.dat';

data visi;

infile failas;

input kintamųjų sąrašas;

run;

Vartotojas gali naudotis ne tik nuskaitytais kintamaisiais, bet ir kurti naujus kintamuosius įvairių

operatorių, funkcijų ir algebrinių išraiškų pagalba. Pavyzdžiui:

data metaiN;

set metaiK (keep=metai menuo tel);

lag_tel=lag(tel);

pokytis=tel-lag_tel;

run;

Pavyzdyje sukuriama duomenų failą MetaiN iš duomenų failo MetaiK išsaugant tik kintamuosius METAI,

MENUO, TEL. Funkcijos LAG pagalba sukuriamas naujas kintamasis LAG_TEL, o po to kintamųjų TEL ir

LAG_TEL pokytis priskiriamas kintamajam POKYTIS (duomenų faile MetaiN yra 5 kintamieji).

Nuskaičius duomenis į kelis duomenų failus, juos galima apjungti vertikaliai operatoriumi SET bei

horizontaliai, operatoriumi MERGE. Pavyzdžiui:

data x1;

infile imtisx;

input x 1-8;

run;

data x2;

infile imtisx;

input x 9-16;

run;

Operatorius SET sujungia du duomenų failus X1 ir X2 vertikaliai:

data imtisV;

set x1 x2;

run;

Kitas būdas yra pakartoti kintamojo X nuskaitymą iš kito stulpelio:

data x1;

infile imtisx;

input x @@;

run;

Operatorius MERGE sujungia du duomenų failus X1 ir X2 horizontaliai:

data imtisH;

merge x1 x2;

run;

Formuojant SAS duomenų failo pjūvius nufiltruojami reikiami duomenys. Pavyzdžiui, duomenų faile VISI

saugomi duomenys apie vyrus bei moteris, tačiau vartotojui reikia atlikti tik moterų statistinę analizę. Informacijos

apie moteris pjūvius galima formuoti keliais budais:

data moterys;

set visi (where=(lytis='M'));

run;

WHERE suformuoja duomenų pjūvį, kuriame yra duomenys tik apie moteris;

data moterys;

set visi;

if lytis='V' then delete;

run;

IF suformuoja duomenų pjūvį, kuriame pašalinti duomenys apie vyrus;

data moterys;

set visi;

if lytis='M';

run;

suformuoja duomenų pjūvį, kuriame yra duomenys tenkinantys sąlygą “LYTIS=’M’”.

Labai dažnai naudojamas trečiasis būdas.

2. Statistikos uždavinių programavimas

Imties skaitinėm charakteristikom skaičiuoti naudojama UNIVARIATE procedūra. Jos pagalba galima rasti

imties vidurkį, dispersiją bei standartinį nuokrypį, eksceso bei asimetrijos koeficientus, kvartilius.

Vartotojas, kuriam nereikalingos visos UNIVARIATE procedūros apskaičiuojamos skaitinės

charakteristikos, gali naudotis MEANS procedūra:

proc means data=duomenys <parametrai>;

by kintamųjų sąrašas_1;

var kintamųjų sąrašas_2;

run;

<parametrai>: N, MIN, MAX, MEAN, STD, NMISS, RANGE, SUM, VAR, STDERR

(standartinė vidurkio paklaida), T, PRT

Operatoriaus “by” pagalba apskaičiuojamos kintamųjų “kintamųjų sąrašas_2” skaitinės charakteristikos atskirai

kiekvienam kintamajam iš “kintamųjų sąrašas_1”. Nenaudojant operatoriaus BY būtų apskaičiuojamos kintamųjų

“kintamųjų sąrašas_2” skaitinės charakteristikos bendrai.

Ieškant taškinių įverčių ir pasikliautinųjų intervalų atsitiktiniams dydžiams, kurių skirstiniai yra normalieji,

galima naudoti SAS programavimo kalbą. Pavyzdžiui:

proc means data=imtisx noprint;

output out=nauja mean=vid std=s var=disp n=viso;

run;

/* Apskaičiuojamos "imtisx" skaitinės charakteristikos, tačiau jos

neišvedamos į rezultatų failą. Sukuriama duomenų matrica "nauja" su

kintamaisiais VID, S, DISP, VISO. */

data interv;

set nauja;

a=0.95;

st=tinv((1+a)/2,viso-1,0);

d=st*s/sqrt(viso);

a_vid=vid-d; v_vid=vid+d;

run;

/* Apskaičiuojamos vidurkio VID pasikliautinojo intervalo apatinis

rėžis A_VID bei viršutinis – V_VID. */

proc print;

var a_vid vid v_vid;

title 'Vidurkio pasikliautinasis intervalas';

run;

/* Į rezultatų failą išvedamas vidurkis ir jo pasikliautinasis

intervalas. */

Čia )0 ,1 ,2

1(

n

tinv – Stjudento pasiskirstymo kritinė reikšmė; skaičiuojant dispersijos įverčio pasikliautinąjį

intervalą ieškoma Chi–kvadratu skirstinio kritinių reikšmių cinv(p, k, 0), kur k = n – 1, 2

1 ap

; komentarai

SAS programoje rašomi “/* tekstas */”.

Procedūrą MEANS galima naudoti ir hipotezės Ho: = 0 tikrinimui, kai alternatyva Ha: 0. Tikrinant

hipotezę, kad Ho: = m, kai alternatyva Ha: m, reikia įsivesti nauja, centruotą vidurkio atžvilgiu kintamąjį

(cm = x – m) ir jam tikrinti hipotezę Ho: cm = 0, kai alternatyva Ha: cm 0. Pavyzdžiui:

proc means mean t prt;

var cm;

run;

Rezultate bus išvestas kintamojo CM vidurkis, Stjudento statistika ir jos reikšmingumo lygmuo.

Jei turim du atsitiktinius dydžius )(~ 111 NX ir )(~ 222 NX , o tikrinama hipotezė Ho: 21 ,

kai alternatyva Ha: 21 , naudojama TTEST procedūra:

proc ttest data=data set;

by kintamųjų sąrašas;

class kintamasis;

var kintamasis;

run;

3. Darbas su skaitinio tipo kintamaisiais

SAS duomenų faile MOKSLAS saugomi studentų atliktų testų rezultatai (įgytų žinių kiekis vertinamas procentais).

ID

49281

38162

07813

77214

81115

53516

11367

IRASYTA

09-01

06-30

10-19

01-05

08-28

01-23

04-24

MODULIS

S181M546

S181M546

P120M101

S181M546

P120M101

H270B043

H270B043

DESTYTOJAS

Kublickas

Kublickas

Navikas

Kublickas

Navikas

Januškevičiūtė

Januškevičiūtė

TESTAS1

80

90

78

80

88

88

67

TESTAS2

70

90

87

70

91

90

80

TESTAS3

80

60

90

75

100

91

60

EGZAMINAS

80

80

91

95

95

95

70

1. Sukurti naują SAS duomenų failą su kintamuoju VIDURKIS – semestro pažymių vidurkis. reikšmė lygi testų ir

egzamino pažymių vidurkiui. Egzamino pažymys sumuojamas du kartus. Kintamąjį VIDURKIS suapvalinkite

iki artimiausio sveikojo skaičiaus. Atspausdinkite duomenų failą MOKSLAS.

data mokslas;

set mokslas;

vidurkis=round(mean(of testas1-testas3, egzaminas, egzaminas));

run;

proc print data=mokslas;

run;

OBS

1

2

3

4

5

ID

49281

38162

07813

77214

81115

IRASYTA

09-01

06-30

10-19

01-05

08-28

MODULIS

S181M546

S181M546

P120M101

S181M546

P120M101

DESTYTOJAS

Kublickas

Kublickas

Navikas

Kublickas

Navikas

TESTAS1

80

90

78

80

88

TESTAS2

70

90

87

70

91

TESTAS3

80

60

90

75

100

EGZAMINAS

80

80

91

95

95

VIDURKIS

78

80

87

83

94

2. Sukurkite simbolinio tipo kintamąjį DATA prijungdami simbolius '–99' prie kintamojo IRASYTA reikšmės

galo. Išveskite kintamuosius ID, MODULIS ir DATA.

data mokslas;

set mokslas;

vidurkis=round(mean(of testas1-testas3, egzaminas, egzaminas));

data=irasyta||'-99';

run;

proc print data=mokslas;

var id modulis data;

run;

OBS

1

2

3

4

5

ID

49281

38162

07813

77214

81115

MODULIS

S181M546

S181M546

P120M101

S181M546

P120M101

DATA

09-01-99

06-30-99

10-19-99

01-05-99

08-28-99

3. Sukurkite naują duomenų failą MOD_M. kuris sudaromas iš studentų atsiskaičiusių magistro studijų lygio

modulius (visų modulių kodai sudaryti iš mokslo šakos kodo, dėstymo lygio ir konkretaus dalyko numerio,

pavyzdžiui, P120M101). Sukurkite du naujus kintamuosius KODAS (modulio šakos kodas, pavyzdžiui, P120)

ir LYGIS (pavyzdžiui, M). Atspausdinkite failo MOD_M duomenis.

data mod_m;

length kodas $ 4 lygis $ 1;

set mokslas;

if index (modulis,'M')>0;

/* Tikrinama ar kintamojo MODULIS konkrečioje reikšmėje yra raidė 'M' */

kodas=scan(modulis,1,'M');

/* Iš simbolių eilutės nuskaitomas pirmas žodis nuo kitų atskirtas 'M'

*/

lygis='M';

run;

proc print data=mod_nr_4 noobs;

title 'M moduliai';

run;

Alternatyvus sprendimas

data mod_m(drop=loc);

length kodas $ 4 lygis $ 1;

set mokslas;

loc=index (modulis,'M');

if loc>0;

kodas=substr(modulis,1,loc-1);

/* Nuskaitomas žodis pradedant pirmu simboliu */

/* ir baigiant paskutiniu prieš 'M' */

lygis=substr(modulis,loc,1);

/* Nuskaitomas žodis pradedant 'M', kurio ilgis yra 1 */

run;

proc print data=mod_m noobs;

title 'M moduliai';

run;

KODAS

S181

S181

P120

S181

P120

LYGIS

M

M

M

M

M

ID

49281

38162

07813

77214

81115

IRASYTA

09-01

06-30

10-19

01-05

08-28

MODULIS

S181M546

S181M546

P120M101

S181M546

P120M101

DESTYTOJAS

Kublickas

Kublickas

Navikas

Kublickas

Navikas

TESTAS1

80

90

78

80

88

TESTAS2

70

90

87

70

91

TESTAS3

80

60

90

75

100

EGZAMINAS

80

80

91

95

95

4. Darbas su simbolių eilutėmis

1. Parašykite duomenų žingsnį, kurio metu būtų sukurtas SAS duomenų failas pavadinimu MAGISTRAI2 ir

nuskaitytomis pirmomis dešimčia kintamojo VARDAS reikšmių iš SAS duomenų failo MAGISTRAI.

Konvertuokite reikšmes taip, kaip parodyta žemiau.

MAGISTRAI

VARDAS

MATELIS, JONAS B

VENCKUS, DARIUS E

MARGELYTĖ, LINA F

EIGELIENĖ, JOLITA R

VITKUTĖ, GAILĖ S

TOLEIKIS, TOMAS R

ČAPAS, NERIJUS D

VENTERIS, ROLANDAS T

STANKUS, ALTANAS L

VANDYS, RIČARDAS N

MAGISTRAI2

VARDAS

Jonas B Matelis

Darius E Venckus

Lina F Margelytė

Jolita R Eigelienė

Gailė S Vitkutė

Tomas R Toleikis

Nerijus D Čapas

Rolandas T Venteris

Altanas L Stankus

Ričardas N Vandys

data magistrai2;

set magistrai (keep=vardas obs=10);

length vardas1 pavarde $ 10 vardas2 $ 1;

drop vardas1 vardas2 pavarde;

vardas1=scan(vardas,2);

substr(vardas1,2)=lowcase(substr(vardas1,2));

vardas2=scan(vardas,3);

pavarde=scan(vardas,1);

substr(pavarde,2)=lowcase(substr(pavarde,2));

vardas=trim(vardas1)||' '||vardas2||' '||pavarde;

run;

5. Duomenų konvertavimas

1. SAS duomenų failas ISTORIJA sudarytas iš dviejų simbolinio tipo kintamųjų CDATA ir CDOLERIAI.

CDATA suformuota iš datų pavidale 04JUL99, o CDOLERIAI iš pardavimų sumų pavidale $2,928.01.

a) Sukurti SAS duomenų failą ATASKAITA, kurį sudarytų du skaitinio tipo kintamieji: DATA (SAS datos

tipo kintamasis) ir DOLERIAI.

b) Atspausdinkite duomenų failą su datomis pavidale Sunday, July 4, 1999 ir sumomis su “$” ženklu,

kableliais ir dviejomis dešimtainėmis pozicijomis. Parodykite visus pardavimus sąrašo pabaigoje.

a) data ataskaita(keep=data doleriai);

set istorija;

data=input(cdata,date7.);

doleriai=input(cdoleriai,comma9.);

run;

b)

proc print data=ataskaita;

format data weekdate. doleriai dollar10.2;

sum doleriai;

run;

OBS

1

2

3

4

5

The SAS System

DATE

Monday, July 12, 1999

Tuesday, July 13, 1999

Wednesday, July 14, 1999

Thursday, July 15, 1999

Friday, July 16, 1999

DOLERIAI

$2,922.83

$3,298.92

$3,382.03

$4,923.37

$2,739.46

$17,266.61

6. FILO ir FIFO metodai

FILO (angl. First In, Last Out) metodas paprasčiausiai suprantamas kaip “pirmas į maišą, paskutinis iš maišo”.

Praktikoje su juo dažniausiai susiduriama nagrinėjant ilgalaikio naudojimo produkcijos sandėliavimo uždavinius.

Priešingas šiam metodui yra FIFO (angl. First In, First Out) metodas. Tai eilės principo metodas, kai objektas

esantis pirmuoju eilėje pirmas ir aptarnaujamas.

1. SAS duomenų faile SANDELIS kaupiami duomenys apie metalo lydinių srautus sandėlyje.

DATA

12FEB2000

12FEB2000

13FEB2000

13FEB2000

14FEB2000

14FEB2000

15FEB2000

PAVADINIMAS

Aliuminis 100%

Aliuminis 97% Varis 3%

Aliuminis 97% Varis 3%

Aliuminis 100%

Aliuminis 97% Varis 3%

Aliuminis 100%

Aliuminis 97% Varis 3%

KIEKIS

1500

1800

1200

1000

1000

1200

1100

KUR

IN

IN

OUT

OUT

IN

IN

OUT

Parašyti i SAS programą, kuri išvestų produkcijos kiekio likutį sandėlyje

data FILO;

set sandelis;

if kur='OUT' then kiekis=(-1)*kiekis;

run;

DATA

12FEB2000

12FEB2000

13FEB2000

13FEB2000

14FEB2000

14FEB2000

15FEB2000

PAVADINIMAS

Aliuminis 100%

Aliuminis 97% Varis 3%

Aliuminis 97% Varis 3%

Aliuminis 100%

Aliuminis 97% Varis 3%

Aliuminis 100%

Aliuminis 97% Varis 3%

KIEKIS

1500

1800

-1200

-1000

1000

1200

-1100

KUR

IN

IN

OUT

OUT

IN

IN

OUT

proc sort data=FILO;

by pavadinimas descending data;

run;

DATA

14FEB2000

13FEB2000

12FEB2000

15FEB2000

14FEB2000

13FEB2000

12FEB2000

PAVADINIMAS

Aliuminis 100%

Aliuminis 100%

Aliuminis 100%

Aliuminis 97% Varis 3%

Aliuminis 97% Varis 3%

Aliuminis 97% Varis 3%

Aliuminis 97% Varis 3%

KIEKIS

1200

-1000

1500

-1100

1000

-1200

1800

KUR

IN

OUT

IN

OUT

IN

OUT

IN

data FILO;

set FILO;

if kiekis1<=0 then kiekis1+kiekis;

else kiekis1=kiekis;

retain kiekis1;

/* Jei reikšmė tuščia, tai gražina prieš tai buvusią netuščią */

run;

DATA

14FEB2000

13FEB2000

12FEB2000

15FEB2000

14FEB2000

13FEB2000

12FEB2000

PAVADINIMAS

Aliuminis 100%

Aliuminis 100%

Aliuminis 100%

Aliuminis 97% Varis 3%

Aliuminis 97% Varis 3%

Aliuminis 97% Varis 3%

Aliuminis 97% Varis 3%

KIEKIS

1200

-1000

1500

-1100

1000

-1200

1800

KUR

IN

OUT

IN

OUT

IN

OUT

IN

KIEKIS1

1200

-1000

500

-1100

-100

-1300

500

data FILO (drop=kiekis1);

set FILO;

kiekis=kiekis1;

if kiekis>0;

run;

DATA

14FEB2000

12FEB2000

12FEB2000

PAVADINIMAS

Aliuminis 100%

Aliuminis 100%

Aliuminis 97% Varis 3%

KIEKIS

1200

500

500

KUR

IN

IN

IN

7. Duomenų matricos transponavimas

1. Transponuoti SAS duomenų failą BANDYMAI (stulpelius ir eilutes susikeisti vietomis).

proc print data=bandymai noobs;

title 'Įvedamų duomenų failas';

run;

proc transpose data=bandymai

out=bandymai_transponuoti;

run;

proc print data=bandymai_transponuoti noobs;

title 'Išvedamų duomenų failas';

run;

Įvedamų duomenų failas

Testas1 Testas2 Testas3 Testas4

22 25 21 21

15 19 18 17

17 19 19 19

20 19 16 19

14 15 13 13

Išvedamų duomenų failas

_NAME_ COL1 COL2 COL3 COL4 COL5

Testas1 22 15 17 20 14

Testas2 25 19 19 19 15

Testas3 21 18 19 16 13

Testas4 21 17 19 19 13

8. Dažniausiai naudojami formatai

Formatai Duomenys Pavyzdžiai Rezultatai

COMMAw.d 123456.25 comma14.3 123,456.250 comma12. 123,456 DOLLARw.d 123456.25 dollar12.1 $123,456.3 PERCENTw.d 1.2362 percent7.1 123.6% DATEw. 8966 date7. 19JUL84 date9. 19JUL1984 DAYw. 8966 day2. 19 JULIANw. 8966 julian5. 84201 julian7. 1984201 MMDDYYw. 8966 mmddyy8. 07/19/84 mmddyy6. 071984 WEEKDATEw. 8966 weekdate15. Thu, Jul 19, 84 weekdate29. Thursday, July 19, 1984 WORDDATEw. 8966 worddate12. Jul 19, 1984 worddate18. July 19, 1984 YYQw. 8966 yyq6. 1984Q3

9. Formatų kūrimas

Kas tai yra formatas? Informacinių technologijų (IT) dokumentacijoje formato sąvoka apibrėžiama labai

įvairiai, apibendrinant galima pasakyti, kad formatas tai duomenų atvaizdavimo (format) ar įvedimo (informat)

forma leidžianti sumažinti saugomų duomenų užimamą vietą. Pavyzdžiui skaičių 126541298514.95 patogiau

atvaizduoti 126,541,298,514.95 pavidale, bet tokios formos duomens saugojimas užimtų daugiau atminties.

Analogiškai yra ir su datomis – saugomas skaičius, kurį galima atvaizduoti norima datos forma. Tačiau kaip yra su

simbolinio tipo kintamaisiais? Ar galima sumažinti atminties resursus saugant eilę simbolių, tačiau neprarandant

informacijos bendrumo? Į šį klausimą duomenų apdorojimo sistema SAS galėtų atsakyti paprastai: “Susikurkite

patys!”

Sukurti formatus galima tiek skaitinio, tiek ir simbolinio tipo reikšmėms. Tai atliekama procedūros

FORMAT pagalba.

Sukursime kintamuosius PINIGAI, TELEF ir juos pavaizduosime įvairiomis formomis:

PINIGAI formatu COMMAs.d, tačiau neigiamas reikšmes vaizduosime ne su minuso ženklu, o apskliaustas;

PINIGAI formatu COMMAs.d, tačiau tuščias vietas užpildysime žvaigždutėmis, o jei reikšmė didesnė už

milijoną, tai išvesime žodį “DAUG”;

PINIGAI formatu DOLLARs.d;

PINIGAI formatu COMMAs.d, tačiau ženklą vaizduosime už skaičiaus;

PINIGAI formatu COMMAs.d, bet vietoje ženklų +/– naudosime KR/DB (kreditas ir debetas);

PINIGAI formatu COMMAs.d, bet ne amerikietišku, o europietišku stiliumi (kas trečias skaitmuo atskiriamas

tašku, o dešimtainės pozicijos kableliu);

PINIGAI formatu COMMAs.d, tačiau kas trečias skaitmuo atskiriamas ne kableliu, o tarpu;

PINIGAI (teigiami skaičiai) atvaizduojami tūkstančiais kartu su simboliu “K”;

septynių skaičių telefono numeris TELEF skaidomas į dvi dalis – pirmi trys skaitmenys atskiriami brūkšneliu

nuo likusių keturių – o jei prieš telefono numerį yra miesto kodas, tai jis atskiriamas pasvirusiu brūkšniu.

proc format;

picture suma low-<0 ='000,009.99)' (prefix='(')

0-high ='000,009.99 ' ;

picture pilna low- -1E5 ='-DAUG' (noedit)

-99999.99-<0 ='000,009.99' (prefix='-' fill='*')

0-999999.99 ='000,009.99' (fill='*')

1E6-high ='DAUG' (noedit) ;

picture dol low-<0 ='000,009.99' (prefix='$-')

0-high ='000,009.99' (prefix='$') ;

picture zenklas low-<0 ='000,009.99-'

0-high ='000,009.00+' ;

picture kredit low-<0 ='00,009.99DB'

0-high ='00,009.99KR' ;

picture europa low-<0 ='00.009,00' (prefix='-' mult=100)

0-high ='00.009,00' (mult=100) ;

picture tarpas low-<0 ='000 009.99' (prefix='-')

0-high ='000 009.99' ;

picture tukst 0-high ='00,009K' (mult=.001) ;

picture telef other ='000/000-0000' ;

run;

data a;

input pinigai telef;

suma = pinigai; pilna = pinigai;

dol = pinigai; zenklas = pinigai;

kredit = pinigai; europa = pinigai;

tarpas = pinigai; tukst = pinigai;

format suma suma. pilna pilna.

dol dol. zenklas zenklas.

kredit kredit. europa europa.

tarpas tarpas. tukst tukst.

telef telef. pinigai 12.2;

cards;

12345 9196778000

0 6778000

-12345 .

-187.65 9196778000

187.65 .

.23 .

101.23 .

1.1E6 .

;

proc print data=a;

id pinigai;

var suma pilna dol

zenklas kredit europa

tarpas tukst telef;

title 'Formatai sukurti su PROC FORMAT';

run;

Formatai sukurti su PROC FORMAT

pinigai suma pilna dol zenklas kredit europa tarpas tukst telef

12345.00 12,345.00 *12,345.00 $12,345.00 12,345.00+ 12,345.00KR 12.345,00 12 345.00 12K 919/677-8000

0.00 0.00 ******0.00 $0.00 0.00+ 0.00KR 0,00 0.00 0K 677-8000

-12345.00 (12,345.00) -12,345.00 -12,345.00 12,345.00- 12,345.00DB 12.345,00 -12 345.00 -12345 .

-187.65 (187.65) ***-187.65 $-187.65 187.65- 187.65DB -187,65 -187.65 -187.65 919/677-8000

187.65 187.65 ****187.65 $187.65 187.65+ 187.65KR 187,65 187.65 0K .

0.23 0.23 ******0.23 $0.23 0.23+ 0.23KR 0,23 0.23 0K .

101.23 101.23 ****101.23 $101.23 101.23+ 101.23KR 101,23 101.23 0K .

1100000.00 100,000.00 DAUG 100,000.00 100,000.00+ 0.00KR 0,00 100 000.00 1,100K .

10. Skirstiniai gaunami iš standartinio normaliojo skirstinio

Sakome, kad atsitiktinis dydis X yra pasiskirstęs pagal normalųjį skirstinį su parametrais 2

, , jeigu

duu

tXPt

2

2

2

)(exp

2

1}{

Žymima ),(~ NX .

Funkcija rannor() generuoja standartinio normaliojo skirstinio atsitiktinius dydžius.

1 teorema. Jeigu nXXX ,...,, 21 nepriklausomi ir )1,0(~ NX i ni ,1 , tada

n

iiX

1

2 turi

2 skirstinį su n laisvės

laipsniais. Žymima 2

1

2~ n

n

iiX

.

2 teorema. Jeigu nXXX ,...,, 21 nepriklausomi ir )1,(~ ii NX ni ,1 , tuomet

n

iiX

1

2 yra pasiskirstęs pagal

necentrinį 2

skirstinį su n laisvės laipsniais ir su necentriškumo parametru

n

ii

1

2 . Žymima

2

,1

2~ n

n

iiX

.

3 teorema. Jeigu 2

, 11 V ir

2

, 22 V nepriklausomi, tada

2

,

2

,

2

, 212211 VVVV , 2

2

2

1 .

4 teorema. Jeigu 2

1V ir 2

2V nepriklausomi, tai dydis

2

2

1

2

2

1

V

V

V

V

yra pasiskirstęs pagal F skirstinį su 1V ir 2V laisvės

laipsniais. Žymima 21

2

1

,

2

2

1

2

~ VV

V

VF

V

V

.

5 teorema. Jeigu 2

,1 V ir

2

2V yra nepriklausomi, tuomet

2

2

1

2

,

2

1

V

V

V

V

turi necentrinį F pasiskirstymą su 1V ir 2V

laisvės laipsniais ir necentriškumo parametru . Žymima

,,

2

2

1

2

,

21

2

1~ VV

V

VF

V

V.

Užduotys

1. Faile VASARIS.dat yra informacija apie oro linijų bendrovės “Ikaro avialinijos” lėktuvų skrydžius po įvairius

Europos miestus 2000 metų vasario mėnesį.

1.1 Sukurkite SAS duomenų failą, kuriame būtų informacija apie skrydžius į Kopenhagą (TIKSLAS=”KOP”),

kurių metu daugiau nei 40 % vietų buvo laisvų. Išsaugokite kintamuosius REISAS, DATA, VIETU_SK,

UZIMTA (keleivių skaičius) ir LAISVA (laisvų vietų skaičius).

1.2 Suteikite kintamiesiems žymes.

1.3 Jei sisteminių pranešimų lange perskaitėte, jog negalima susumuoti trūkstamų reikšmių, pataisykite programos

kodą panaudoję funkciją SUM, pvz. UZIMTA=SUM(a,b,c).

1.4 Išveskite kintamuosius REISAS, DATA ir ATSTUMAS. Išvesdami kintamuosius DATA ir ATSTUMAS

panaudokite formatus.

2. Faile PATARNAV.dat įrašyti kelių metų mėnesiniai mokesčiai už telefoną, elektrą ir dujas. Atlikite šiuos

veiksmus:

a) apskaičiuokite bendrąsias mėnesines išlaidas;

b) mokesčius už telefoną surūšiuokite pagal metus ir mėnesius;

c) mokesčius už telefoną surūšiuokite pagal mėnesius, o po to pagal metus;

d) išveskite tik 1992 metų duomenis;

e) išveskite kiekvienų metų pirmųjų trijų mėnesių duomenis.

Pastaba: skaitant duomenis, kintamąjį MENUO interpretuokite kaip simbolinio tipo kintamąjį ir sukurkite

papildomą kintamąjį, kur mėnesiai būtų užkoduoti skaičiais.

3. Pasinaudoję failo PATARNAV.dat duomenimis išveskite:

a) mėnesinių mokesčių už telefoną pokyčius 1990 metais;

b) mėnesinių mokesčių už telefoną pokyčius kiekvienų metų pirmajam mėnesiui.

4. Panaudoję failo VASARIS.dat duomenis:

4.1 Suformuokite SAS duomenų failą, kuriame būtų informacija apie skrydžius į Frankfurtą (TIKSLAS=”FRA”).

Sukurkite kintamąjį KOMENTAR ir panaudokite IF-THEN/ELSE operatorių priskirdami jam reikšmę.

Skrydžiai, kurių metu užimta daugiau nei 80 % vietų laikomi žemo vakansinio lygio. Skrydžiai, kurių metu

užimta mažiau nei 60 % vadinami aukšto vakansinio lygio. Kiti skrydžiai yra normalios vakansijos lygio.

Suteikite žymes kintamiesiems REISAS, DATA, VIETU_SK, UZIMTA ir KOMENTAR. Panaudokite PROC

PRINT duomenų failo peržiūrėjimui ir priskirkite formatą kintamajam DATA. Paslėpkite stulpelį OBS ir

užrašykite lentelės pavadinimą.

4.2 Sukurkite duomenų matricą, kurioje būtų informacija apie skrydžius į Londoną (reikšmė 'LON'), Frankfurtą

('FRA'), Kopenhagą ('KOP') ir Paryžių ('PAR'). Skrydžiams į Londoną pridėkite tantjemą kilometrais 10 %;

skrydžiams į Frankfurtą – 7 %; į Kopenhagą – 5 %; ir į Paryžių – 3 %. Naują duomenų matricą sudaro

kintamieji REISAS, TIKSLAS, ATSTUMAS, TANTJEMA (papildomai nuskristas atstumas) ir KELIAS

(ATSTUMAS + TANTJEMA).

5. Sugeneruokite:

a) 10 nepriklausomų atsitiktinių dydžių pasiskirsčiusių pagal 2

N skirstinį ;

b) 4N atsitiktinių dydžių pasiskirsčiusių pagal necentrinį

2 skirstinį su 2N laisvės laipsniais ir

necentriškumo parametru N.

6. Faile STUDENT.txt saugoma informacija apie studentus.

Sukurkite naują SAS duomenų failą, kuriame būtų failo STUDENT.txt įrašai nuo N iki N + 10. Sukurkite naują

kintamąjį TELEF, kurio reikšmės lygios '(8–37) XX–XX–XX', čia XXXXXX – kintamojo NUMERIS reikšmė.

Ištrinkite kintamąjį NUMERIS. Išveskite sukurto SAS duomenų failo kintamuosius VARDAS ir TELEF.

Vietoje kintamojo G_D sukurkite naują datos tipo kintamąjį GIMIMO_D (formatas MMDDYY8.). Pašalinkite

kintamąjį G_D. Išveskite sukurto SAS duomenų failo kintamuosius VARDAS ir GIMIMO_D.

pakeiskite kintamojo VARDAS reikšmes taip, kad reikšmė 'Jonas Dacys' būtų 'Dacys, Jonas' ir t.t. Išveskite

sukurto SAS duomenų failo kintamąjį VARDAS.

Sukurkite SAS duomenų failą, kuriame būtų tik įrašai apie studentus gyvenančius Kauno rajone. Išveskite

sukurto SAS duomenų failo kintamuosius VARDAS ir ADRESAS.

Sukurkite SAS duomenų failą, kuriame būtų kintamasis VARDAS ir naujas simbolinio tipo kintamasis

KODAS2 , kurio pirmi trys simboliai yra 'STU', o kiti du – studento inicialai (pavyzdžiui, 'JD' , kai kintamojo

VARDAS reikšmė yra 'Jonas Dacys'). Išveskite sukurtą SAS duomenų failą.

7. Faile KAPITAL.txt pateikta informacija apie finansinės institucijos balansą. Suformuokite šios institucijos

kapitalo pakankamumo ataskaitą:

Periodas iki 1 mėn. nuo 1 mėn.

iki 2 mėn.

… nuo 11 mėn.

iki 12 mėn.

virš metų

Aktyvai

Pasyvai

Neatitikimas

Sukauptas neatitikimas

Nebalanso aktyvai

Nebalanso pasyvai

Neto neatitikimas

Sukauptas neto neatitikimas

Pastabos:

1) Požymis parodantis ar suma priklauso aktyvams, ar pasyvams yra kintamojo AKTYVAI reikšmės ( 'TAIP'

– aktyvai, 'NE' – pasyvai).

2) Ar aktyvai/pasyvai priklauso balansui, ar nebalansui rodo kintamojo BALANSAS reikšmės ('TAIP' –

balansas, 'NE' – nebalansas).

3) Finansinis rodiklis neatitikimas yra skirtumas tarp aktyvų ir pasyvų.

4) Rodiklis neto neatitikimas apskaičiuojamas pagal formulę (neatitikimas + nebalanso aktyvai – nebalanso

pasyvai).

5) Sukauptos sumos yra kaupiamasis dydis parodantis visą gautiną pinigų sumą nuo ataskaitos suformavimo

iki tam tikro periodo pabaigos.

8. Faile VP.txt yra informacija apie įmonės finansinę veiklą, tai yra, apie jos įsigytus ir parduotus vertybinius

popierius. Taikydami sandoriams FIFO metodą raskite paskutinę dieną turimą vertybinių popierių portfelį: kokie

vertybiniai popieriai yra (PAVAD), kada įsigyti (DATA), jų kiekis (KIEKIS), nominali vieneto vertė (NOMINAL1)

ir įsigijimo vieneto vertė (ISIGYTA1). Kintamiesiems suteikite žymes, o jų įgyjamoms reikšmėms – formatus.

Pastabos:

1) Vertybinių popierių vertė apskaičiuojama vieneto kainą padauginus iš vertybinių popierių kiekio.

2) Sandorio tipą nurodo kintamasis TIPAS (1 – pardavimas, 2 – pirkimas).

9. Planuojant N + 20 tūrio populiacijos tyrimą buvo nutarta atrinkti tik N + 10 populiacijos elementų.

Suformuoti SAS duomenų žingsnį, kurio metu būtų atrenkama paprastoji atsitiktinė imtis (bet kuris elementas

gali būti tiriamas tik vieną kartą, t.y., imtis be pasikartojimų).

Surūšiuoti imties elementus.

Pastaba. Populiacijos elementai identifikuojami pagal unikalius (nesikartojančius) numerius nuo 1 iki N + 20.

10. Optimizuoti duomenų saugojimą.

a) Sukurti SAS duomenų failą užpildant jį ELNIAI.dat esančia informacija.

b) Kintamuosius REGIONAS ir TIPAS užkoduoti bei sukurti jiems atitinkamus formatus.

11. Sukurkite SAS duomenų failą, kuriame būtų failo STUDENT.txt įrašai nuo N iki N + 10. Sukurkite formatą,

kuris kintamojo NUMERIS reikšmes XXXXXX vaizduotų taip, kad jos atrodytų '(8–37) XX–XX–XX'. Išveskite

sukurto SAS duomenų failo kintamuosius VARDAS ir NUMERIS. 12. Gautam vertybinių popierių portfeliui sukurkite formatą, kuris nominalią ir įsigijimo vertes, apskaičiuotas litais,

atvaizduotų eurais kartu su valiutos pavadinimu, pavyzdžiui, 10.00 LTL, 2.50 USD, 1.75 GBP. Apskaičiuokite

bendrą įsigijimo vertę.

13. Paaiškinkite gautus rezultatus, parašykite išvadas ir įrašykite juos į teksto redaktoriaus MS WORD failą

L3_SAS_N.doc, čia N – jūsų varianto numeris.

VASARIS.dat REISAS DATA TIKSLAS VIETU_SK VERSLOKL PIRMAKL ANTRAKL ATSTUMAS

----+----1----+----2----+----3----+----4----+----5----+----6

02362 12FEB2000 CPH 288 23 80 16 1550

01423 12FEB2000 ROM 300 62 150 40 1100

03212 12FEB2000 CPH 288 49 60 950

............................................................

PATARNAV.dat MENUO METAI TEL DUJOS ELEKTRA

----+----1----+----2----+----3

Rgp 88 100.02 41.61 36.93

Rgs 88 80.62 24.48 45.73

Spa 88 62.55 23.90 50.95

.............................

STUDENT.txt KODAS VARRDAS ADRESAS NUMERIS G_D

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8

440252 Jonas Dacys Baltijos g. 12-24, Kaunas 253124 12-05-79

443621 Daina Mikšytė Lozoraičio g. 8, Garliava, Kauno r. 551243 11-23-80

................................................................................

KAPITAL.txt PERIOD SUMA AKTYVAI BALANSAS

----+----1----+----2----+----3

01 65213.12 TAIP TAIP

01 64253.14 NE TAIP

01 1251.65 TAIP NE

..............................

VP.txt DATA PAVAD KIEKIS NOMINAL1 ISIGYTA1 TIPAS

----+----1----+----2----+----3----+----4----+----5

12FEB2000 BIRŽŲ APB 1000 10 9.64 2

12FEB2000 BANKAS SNORAS 1500 100 100.58 2

14FEB2000 BIRŽŲ APB 400 10 9.71 1

..................................................

ELNIAI.dat REGIONAS TIPAS POPULIAC

----+----1----+----2----+----3

Siaure patinai 57

Siaure pateles 89

Siaure jaunikliai 21

.........................