• Nie Znaleziono Wyników

Konspekt do zaj¦¢: Statystyczne metody analizy danych

N/A
N/A
Protected

Academic year: 2021

Share "Konspekt do zaj¦¢: Statystyczne metody analizy danych"

Copied!
12
0
0

Pełen tekst

(1)

Konspekt do zaj¦¢: Statystyczne metody analizy danych

dr Agnieszka Nowak-Brzezi«ska 14 pa¹dziernika 2009

(2)

0.1 Wprowadzenie

Operator przypisania to < −, który mo»e by¢ te» zast¡piony = lub − >. Gdy chcemy do zmiennej a przypisa¢ warto±¢ 5 u»yjemy nast¦puj¡cego polecenia:

Jak wida¢, gdy u»yjemy instrukcji warunkowej:

if (warunek) print("tekst")

efekt b¦dzie nast¦puj¡cy: Operatory mo»na ª¡czy¢, przez co mo»liwe jest i

takie polecenie:

ha = b < −2 + 2− > c, po wykonaniu którego wszystkie zmienne: a,b oraz c b¦d¡ miaªy t¦ sam¡ warto±¢, czyli 4. Oczywi±cie mo»na stosowa¢ równie»

znacznie bardziej skomplikowane wyra»enia, jak na poni»szym rysunku.

(3)

0.2 Typy obiektów

Uwaga !!! Wszystko w R jest obiektem. W zwi¡zku z tym, za obiekt uznamy nast¦puj¡ce typy danych:

• wektor

• lista

• tablica

• macierz

• tabela danych (ang. data frame) 0.2.1 Wektor

Wektor nale»y rozumie¢ jako ci¡g liczb, ªa«cuchów tekstowych lub warto±ci logicznych. Wektory tworzymy za pomoc¡ konstruktora - funkcji c(elementy) np: wektor < −c(3, 4, 2, 4, 5, 7), gdzie kolejne elementy wektora o nazwie wektors¡ indeksowane od warto±ci 1, i dost¦p do poszczególnych elementów uzyskujemy za pomoc¡ selektora []. Dla wektora o elementach 3, 4, 2, 4, 5, 7 pisz¡c wektor[3] uzyskamy warto±¢ 2 za± wektor[5]: 5.

Inne konstruktory wektora :

Za pomoc¡ konstrukcji < poczatek >:< koniec > mo»emy tak»e tworzy¢

wektory, z tym, »e wektor taki b¦dzie bardziej ci¡giem arytmetycznym ut- worzonym przez elementy znajdujace si¦ w takim ci¡gu o zadanym pocz¡tku i ko«cu.

> wektorB < −2 : 8

seq

seqdziaªa tak jak : lecz pozwala tak»e na ustalenie innej ni» +1 lub −1 krok.

Wiadomo, »e wektor < −seq(3 : 6) utworzy wektor z elementów: 3, 4, 5, 6 gdzie kolejne elementy mi¦dzy 3 a 6 s¡ tworzone z ró»nic¡ 1. U»ywaj¡c in- strukcji: wektor < −seq(2, 23, 5), otrzymamy wektor z elementów:2, 7, 12, 17, 22.

(4)

rep

rep- zwraca wektor utworzony przez replikacj¦ elementów pierwszego argu- mentu. np. wektorA < −rep(2, 10) utworzy wektor 10 elementów (2). Z kolei wektorB < −rep(c(2, 3, 6), 3) utworzy wektor 2, 3, 6, 2, 3, 6, 2, 3, 6, gdy»

powtórzy elementy 2, 3, 6 trzy razy. Dªugo±¢ wektora zmierzymy funkcj¡

length().

sample

Jeszcze innym konstrukturem wektora jest sample, który tworzy wektor losowych liczby z okre±lonego przedziaªu i o zadanej dªugo±ci. Istnieje mo»li- wo±¢ sterowania tym, czy losowe liczby mog¡ si¦ powtarza¢ czy te» nie. I tak, standardowo: nie mog¡, je±li za± chcemy dopuszcza¢ powtórzenia, wystarczy jako 3 argument przy funkcji sample() doda¢ informacj¦: rep=TRUE. Jak wida¢ na rysunku udaªo si¦ wylosowa¢ z przedziaªu od 1 do 20, 5 liczb, w których liczba 20 si¦ powtórzyªa.

(5)

0.2.2 Struktury (factor)

Do reprezentacji zmiennej nominalnej ze zdeniowanymi kategoriami sªu»y funkcja factor. Mo»emy traktowa¢ j¡ jako funkcj¦ pozwalaj¡c¡ deniowa¢

(6)

typy wyliczeniowe. Zrzut ekranu przedstawia prób¦ zdeniowania zmiennej nominalnej z warto±ciami: 2, 1 i 5 przy zdeniowanych kategoriach: 1,2,3,4 oraz 5. Mo»emy teraz zmieni¢ nazwy kategorii (poziomy) za pomoc¡ atry-

butu LEVELS:

>attr(struktura,"levels")<-c("ndst","dost","dobry","bdb","celuj¡cy") Zawarto±¢ takiej zmiennej nominalnej b¦dzie nast¦puj¡ca:

Wy±wietl¡ si¦ tylko elementy: ndst,dost, celujacy, gdy» to one odpowiadaj¡

elementom o numerach 2,1 i 5, które na pocz¡tku przypisano do zmiennej struktura.

0.2.3 Lista

Czasami chcemy zapami¦ta¢ w jednym miejscu wyniki pewnej analizy. Np po zbadaniu danego zbioru danych, chcemy jednocze±nie zachowa¢ informacje o elemencie minimalny, maksymalnym oraz ±rednim w zbiorze. Tak¡ mo»li- wo±¢ daje nam funkcja list. W podanym poni»ej przykªadzie, dla zadanego zbioru elementów b¦dziemy pami¦ta¢ pod nazw¡ srednia ±redni¡ arytmety- czn¡ zbioru (wywoªuj¡c funkcj¦ mean()), miniminum element najmniejszy w zbiorze, maksimum - element najwi¦kszy. Je±li teraz wypiszemy zawarto±¢

tak utworzonej listy, efekt b¦dzie nast¦puj¡cy: Jak wida¢ kolejno wypisane s¡ poszczególne elementy, w zale»no±ci od tego ile ich jest zapisanych w takiej strukturze. Je±li chcemy si¦ odwoªa¢ konkretnie do jednej skªadowej to mo»emy wprost wypisa¢ jej zawarto±¢ stosouj¡c selektor $. Uwaga! Gdy

(7)

nie znamy skªadowych danej struktury, jest mo»liwo±¢ wy±wietlenia ich za- warto±ci przy u»yciu atrybutu names. Prosz¦ poszuka¢ informacji na ten temat. Wykona¢ stosowne ¢wiczenia.

0.2.4 Tablica

Tablic¦ b¦dziemy traktowa¢ jako obiekt zawieraj¡cy grup¦ elementów tego samego typu. W odró»nieniu do wektora, elementy tablicy mog¡ by¢ in- deksowane w jednym lub wi¦cej wymiarach. Tworzenie tablicy umo»liwia funkcja array(dane,wymiary). Konstruktor array(0,c(2,4)) utworzy tablic¦

o wymiarach 2 × 4 wypeªnion¡ zerami. Za± konstruktor: array(,c(2,4)) stworzy tablic¦ tak»e o wymiarach 2 × 4 ale bez okre±lonych warto±ci (NA).

Chc¡c odwoªa¢ si¦ do poszczególnych elementów tablicy u»ywamy selektora [], gdzie podajemy indeksy dla wszystkich wymiarów oddzielone przecinkami.

Gdy wi¦c w zmiennej tab zapiszemy nast¦puj¡c¡ tablic¦:

[, 1] [, 2] [, 3]

1 3 5

2 4 6

odwoªanie tab[2, 3] zwróci nam warto±¢ 6, za± odwoªanie tab[1, 3] warto±¢:

5. Mo»na odwoªywa¢ si¦ do caªych (peªnych) wierszy i kolumn.Odpowiednio odwoªanie: tab[2, ] wy±wietli nam caªy drugi wiersz tablicy tab, za± tab[, 3]

caª¡ trzeci¡ kolumn¦.

(8)

0.2.5 Dodatek

Tablice dwuwymiarowe mog¡ by¢ tworzone równie» przez ª¡czenie ze sob¡

wektorów lub innych tablic 2-wymiarowych za pomoc¡ funkcji: cbind i rbind.

‚wiczenie:

Co b¦dzie rezultatem:

1. > tabA < −cbind(1 : 5, rep(2, 5), 5 : 1) 2. > tabB < −NULL

3. > tabB < −rbind(tabB, c(0, 30, 45, 60, 90)) 4. > tabB < −rbind(tabB, sin(tabB ∗ pi/180))

5. > tabC < −cbind(rbind(array(1, c(2, 2)), array(2, c(3, 2))), array(3, c(5, 2))) Wiedz¡c, »e do okre±lania wymiarów tablicy sªu»y atrybut dim, za± do okre±lania liczby kolumn atrybut ncol i odpowiednio liczby wierszy nrow, sprawd¹ co zwróci wywoªanie:

1. > dim(tabC) 2. > nrow(tabC) 3. > ncol(tabC)

0.2.6 Macierz

Macierz nale»y traktowa¢ jako tablic¦ dwuwymiarow¡. Stosujemy do tego funkcj¦ matrix, która domy±lnie traktuje dane wej±ciowe jako kolejne kolumny macierzy. Mo»na odpowiednio decydowa¢ o wypeªnianiu macierzy: kolum- nami b¡d¹ wierszami. Dlatego dwa polecenia:

macierzA<-matrix(c(1,2,3,4,5,6,7,8,9),ncol=3,nrow=3)

orazmacierzA<-matrix(c(1,2,3,4,5,6,7,8,9),ncol=3,nrow=3,byrow=TRUE) stworz¡ inne macierze (co pokazuje rysunek). Wida¢, »e u»ycie polecenia byrow = T RU E powoduje, »e wypelnianie odbywa si¦ wierszami, nie za±

kolumnami.

Wiedz¡c, »e:

• % ∗ % to operator mno»enia macierzy,

• det(A) pozwala obliczy¢ wyznacznik macierzy A,

• solve(A) pozwala wyznaczy¢ macierz odwrotn¡ do macierzy A,

(9)

• t(A) wyznacza za± macierz transoponowan¡ dla macierzy A wykonaj ¢wiczenia:

1. utwórz na trzy ró»ne sposoby wektor skªadaj¡cy si¦ z elementów 1, 5, 3, 2, 4, 6 2. Oblicz wyznacznik macierzy:

"

2 3

−1 2

#

3. Pomnó» macierz A =

"

2 3

−1 2

#

przez macierz B =

"

−1 −2

2 4

#

0.2.7 Tabela danych

Niew¡tpliwie sporym ograniczeniem w przypadku tablic czy macierzy jest za- pewnienie jednorodno±ci ich elementów. Mog¡ to by¢ zarówno dane liczbowe, tekstowe jak i zmienne logiczne, jednak w jednej tablicy te dane nie mog¡

by¢ pomieszane. Szcz¦±liwie w ±rodowisku R rozwi¡zano ten problem funkcj¡

tworzenia tzw. ramek danych (ang. data.frame). Wiedz¡c, »e standardowo w ±rodowisku R mamy tablice LET T ERS przechowuj¡c¡ 26 wielkich liter alfabetu ªaci«skiego, za± letters odpowiednio te same litery tyle maªe, za- ªadujemy do takiej tabeli danych (któr¡ nazwiemy litery) 10 liter wielkich i przypiszemy im logiczne warto±ci TRUE lub FALSE oznaczaj¡ce odpowied- nio to czy ddana litera jest parzysta czy nie.

litery < −daqta.f rame(LET T ERS[1 : 10], 1 : 10, rep(c(F, T ), 5)) names(litery) < −c(¨litera”, ´numer”, ´czyparzysta”)

0.3 Konwersje typów

0.3.1 Konwersja dla typów prostych

Konwersja typów prostych jest realizowana za pomoc¡ funkcji:as.nazwa_typu.

Zapis:

(10)

< t < −T RU E

> print(as.integer(t))

jest poprawny i w rezultacje wy±wietli warto±¢ 1, gdy» logiczna 1 b¦dzie odpowiadaªa warto±ci T RUE, za± 0 warto±ci F ALSE. Dlatego np. zapis

”5”+”4”zwróci bª¡d, za± as.integer(”5”)+as.integer(”4”) b¦dzie poprawne i da w wyniku warto±¢ 9.

0.3.2 Konwersja dla typów zªo»onych

Konwersja mo»e tak»e dotyczy¢ obiektów typu zªo»onego jak wektor. Poni»szy kod

>dane<-c(2,1,3,3,4,5,3,2,7,6,8,6,6,5,3,1)

>unikatowe<-as.vector(levels(as.factor(dane)))

>print(unikatowe)

w rezultacie wy±wietli niepowtarzaj¡ce sie elementy ze zbioru dane. Mo»na te» rzutowa¢ tablice na typy proste:

>logiczne<-array(c(0,0,1,0,1,1),c(2,3))

>as.logical(logiczne)

Wówczas efektem b¦dzie wy±wietlenie kolejno: F F T F T T 0.3.3 Do prze¢wiczenia

1. funkcje konwersji dla typów prostych:

• numeric

• integer

• real

• single

• string

• logical

2. funkcje konwersji dla klas obiektow zlo»onych:

• vector

• factor

• matrix

• array

• list

• data.frame

3. operatory arytmetyczne: +, −, ∗, /,,%/%, %%

(11)

4. operatory logiczne: ==,! =,i,i =, h, h=

5. logiczne "i"(&&), ªub"(kk), «ie"(!)

6. funkcje matematyczne: sqrt,round,ceiling,oor,logb 7. sortowanie: sort

8. funkcje agreguj¡ce: mad,max,mean,min, median, product,quantile,sd,sum 9. funkcja paste wspomaga funkcj¦ print.

10. Funkcje agreguj¡ce maj¡ to do siebie, »e dziaªaj¡ dla caªej tablicy.

Gdy chcemy zastosowa¢ dan¡ funkcj¦ dla konkretnej kolumny - stosu- jemy funkcj¦: apply(tablica,rodzaj_obliczen,funkcja_agregujaca). Je±li obliczenia maj¡ dotyczy¢ tylko wierszy to jako drugi argument wpiszemy 1, je±li tylko kolumn to wpiszemy 2, a jesli jednocze±cie kolumn i wier- szy to c(1, 2). Czyli gdy stworzyny macierz A:

> A < −matrix(c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5), ncol = 5, nrow = 3, byrow = T RU E)

i chcemy wyliczy¢ ±redni¡ tylko z wierszy to u»yjemy komendy:

apply(A, 1, ”mean”)

0.4 Zadania do wykonania

1. napisz w jednej komendzie polecenie wypisania sze±cianów liczb od 1 do 5

2. Co da w wyniku: > as.logical((1 : 10)%%2) ? 3. czym ró»ni¡ si¦ 2 komendy:

> matrix(c(1, 2, 3, 4, 5, 6), ncol = 2, nrow = 3) oraz

> matrix(c(1, 2, 3, 4, 5, 6), ncol = 2, nrow = 3, byrow = T RU E)? 4. Zrób wgl¡d w konstrukcj¦ p¦tli i instrukcji warunkowych w R (if, while,

for).

5. Stwórz tablic¦ o wymiarach 5 × 5 (wypeªnij jej losowymi warto±ciami z przedziaªu: [1..9]) i oblicz sum¦ elementów 2 kolumny

6. Oblicz sum¦ elementów nieparzystych

7. wpisz do ostatniej kolumny liczby od 1 do 5 (kolejno) 8. Sprawd¹ ile jest elementów mniejszych od 4

(12)

9. Stwórz tablic¦ dochody, w której umie±¢ dochody z ka»dego miesi¡ca.

Napisz funkcj¦ wypisuj¡c¡ dla ka»dego miesi¡ca uzyskane dochody, w formacie: Dochody w miesi¡cu: i wynosily: x. Dodatkowo w osobnej strukturze, zapisz najmniejszy, najwi¦kszy i ±redni dochód.

Cytaty

Powiązane dokumenty

W lasno´ sci dodawania wek- tor´ ow i mno˙zenia przez liczb¸ e.. (2) Definicja liniowej zale˙zno´ sci uk ladu

Znaleźć równania prostych zawierających boki oraz współrzędne pozostałych wierzchołków..

Wykonaj obliczenia wpisując wyniki mnożenia w odpowiednie

Materiał edukacyjny wytworzony w ramach projektu „Scholaris – portal wiedzy dla nauczycieli&#34;1. współfinansowanego przez Unię Europejską w ramach Europejskiego

[r]

Iloczyn skalarny, wektorowy,

W przypadku etanolu i wody zaszło zjawisko kontrakcji, czyli zmniejszenia się objętości roztworu podczas mieszania się dwóch cieczy.. W przypadku etanolu i wody zaszło

Wpływ kosztów ,które ponosimy corocznie w związku z zarządzaniem Twoimi inwestycjami oraz kosztów przedstawionych w dokumencie zawierającym kluczowe informacje w sekcji „Co to