3 laboratorinis darbas Duomenų analizės uždavinių...
Transcript of 3 laboratorinis darbas Duomenų analizės uždavinių...
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
.........................